Files

62 lines
2.0 KiB
C#
Raw Permalink Normal View History

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