Files
telegram-bot/modules/ChatManagement/Handler/Warn.cs
T

58 lines
2.0 KiB
C#
Raw 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.Data;
using Kruzya.TelegramBot.Core.Extensions;
using Telegram.Bot;
using Telegram.Bot.Types.Enums;
namespace West.TelegramBot.ChatManagement.Handler
{
2021-12-27 22:53:13 +02:00
public class Warn : ManagementHandler
{
2021-12-27 22:53:13 +02:00
public Warn(CoreContext db) : base(db) {}
[Command("warn", CommandParseMode.Both)]
public async Task HandleWarn()
{
if (!await CanPunish()) return;
2021-12-27 22:53:13 +02:00
var warnUser = RepliedUser!;
var warnOption = await GetWarnOption(warnUser);
var warnCount = warnOption!.GetValue<int>() + 1;
warnOption.SetValue(warnCount);
2021-12-27 22:53:13 +02:00
Db.MarkAsModified(warnOption);
2021-12-28 21:00:23 +02:00
await Bot.SendTextMessageAsync(Chat.Id, $"{warnUser.ToHtml()}<code>, Вам выдано предупреждение! " +
$"Текущее кол-во: {warnCount}/3</code>",
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;
2021-12-27 22:53:13 +02:00
var warnOption = await GetWarnOption(RepliedUser!);
var warnCount = Math.Max(warnOption.GetValue<int>() - 1, 0);
warnOption.SetValue(warnCount);
2021-12-27 22:53:13 +02:00
Db.MarkAsModified(warnOption);
await Bot.SendTextMessageAsync(Chat.Id,
2021-12-28 21:00:23 +02:00
$"{RepliedUser.ToHtml()}<code>, с Вас снято предупреждение! " +
$"Текущее кол-во: {warnCount}/3</code>",
disableNotification: true,
parseMode: ParseMode.Html);
}
}
}