#nullable enable using System; using System.Threading.Tasks; using BotFramework.Attributes; using BotFramework.Enums; using Kruzya.TelegramBot.Core.Data; using Kruzya.TelegramBot.Core.Extensions; using Telegram.Bot; using Telegram.Bot.Types.Enums; namespace West.TelegramBot.ChatManagement.Handler { public class Warn : ManagementHandler { public Warn(CoreContext db) : base(db) {} [Command("warn", CommandParseMode.Both)] public async Task HandleWarn() { if (!await CanPunish()) return; var warnUser = RepliedUser!; var warnOption = await GetWarnOption(warnUser); var warnCount = warnOption!.GetValue() + 1; warnOption.SetValue(warnCount); Db.MarkAsModified(warnOption); await Bot.SendTextMessageAsync(Chat.Id, $"{warnUser.ToHtml(false)}, Вам выдано предупреждение! " + $"Текущее кол-во: {warnCount}/3", disableNotification: true, parseMode: ParseMode.Html); if (warnCount == 3) { await BanMember(warnUser); warnOption.SetValue(0); } } [Command("unwarn", CommandParseMode.Both)] public async Task HandleUnwarn() { if (!await CanPunish()) return; var warnOption = await GetWarnOption(RepliedUser!); var warnCount = Math.Max(warnOption.GetValue() - 1, 0); warnOption.SetValue(warnCount); Db.MarkAsModified(warnOption); await Bot.SendTextMessageAsync(Chat.Id, $"{RepliedUser.ToHtml(false)}, с Вас снято предупреждение! " + $"Текущее кол-во: {warnCount}/3", disableNotification: true, parseMode: ParseMode.Html); } } }