public async Task Unwarn(CommandContext ctx, string id) { if (!Bot.IsModerator(ctx.Member)) { await ctx.RespondAsync($"{Bot.BotSettings.ErrorEmoji} У вас нет доступа к этой команде!"); return; } var warn = WarnSQL.Get(id); if (warn == null) { await ctx.RespondAsync( $"{Bot.BotSettings.ErrorEmoji} Не найдено предупреждение с таким идентификатором."); return; } WarnSQL.Delete(warn.Id); var member = await ctx.Client.GetUserAsync(warn.User); await ctx.RespondAsync($"{Bot.BotSettings.OkEmoji} Успешно удалено предупреждение с **{member.Username}#{member.Discriminator}**!"); await ctx.Guild.GetChannel(Bot.BotSettings.ModlogChannel).SendMessageAsync( "**Снятие предупреждения**\n\n" + $"**Администратор:** {ctx.Member}\n" + $"**Пользователь:** {member}\n" + $"**Дата:** {DateTime.Now}\n" + $"**ID предупреждения:** {id}\n" + $"**Количество предупреждений:** {WarnSQL.GetForUser(member.Id).Count}\n"); try { var gMember = await ctx.Guild.GetMemberAsync(member.Id); await gMember.SendMessageAsync( $"Администратор **{ctx.Member.Username}** снял ваше предупреждение с ID `{id}`"); } catch (UnauthorizedException) { //user can block the bot } catch (NotFoundException) { //user is not a guild member } }