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

66 lines
2.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 Command : ManagementHandler
{
private readonly CoreContext _db;
public Command(CoreContext db)
{
_db = db;
}
[Command("warn", CommandParseMode.Both)]
public async Task HandleWarn()
{
if (!await CanPunish()) return;
var warnUser = GetVictim();
var warnOption = await GetWarnOption();
var warnCount = warnOption.GetValue<int>() + 1;
warnOption.SetValue(warnCount);
_db.MarkAsModified(warnOption);
await Bot.SendTextMessageAsync(Chat.Id, $"{warnUser.ToHtml(false)}<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();
var warnCount = Math.Max(warnOption.GetValue<int>() - 1, 0);
warnOption.SetValue(warnCount);
_db.MarkAsModified(warnOption);
await Bot.SendTextMessageAsync(Chat.Id,
$"{GetVictim().ToHtml(false)}<code>, с Вас снято предупреждение! " +
$"Текущее кол-во: {warnCount}/3</code>",
disableNotification: true,
parseMode: ParseMode.Html);
}
private async Task<BotUserValue> GetWarnOption()
{
return await _db.UserValues.FindOrCreateOption(Chat.Id, GetVictim().Id, "warnCount");
}
}
}