mirror of
https://github.com/Bubuni-Team/telegram-bot.git
synced 2026-07-31 00:29:24 +03:00
61 lines
2.1 KiB
C#
61 lines
2.1 KiB
C#
#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<int>() + 1;
|
||
warnOption.SetValue(warnCount);
|
||
Db.Update(warnOption);
|
||
|
||
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;
|
||
|
||
var warnOption = await GetWarnOption(RepliedUser!);
|
||
var warnCount = warnOption.GetValue<int>();
|
||
if (warnCount == 0) return;
|
||
|
||
warnCount = Math.Max(warnCount - 1, 0);
|
||
warnOption.SetValue(warnCount);
|
||
Db.Update(warnOption);
|
||
|
||
await Bot.SendTextMessageAsync(Chat.Id,
|
||
$"{RepliedUser.ToHtml()}<code>, с Вас снято предупреждение! " +
|
||
$"Текущее кол-во: {warnCount}/3</code>",
|
||
disableNotification: true,
|
||
parseMode: ParseMode.Html);
|
||
}
|
||
}
|
||
} |