Files
telegram-bot/modules/ChatManagement/Handler/BanStickerSet.Utils.cs
T
2022-05-05 19:29:25 +03:00

58 lines
1.7 KiB
C#

using System.Collections.Generic;
using System.Threading.Tasks;
using BotFramework.Utils;
using Kruzya.TelegramBot.Core.Data;
using Kruzya.TelegramBot.Core.Extensions;
using Telegram.Bot;
using Telegram.Bot.Types;
namespace West.TelegramBot.ChatManagement.Handler;
public partial class BanStickerSet
{
private async Task<bool> CanBotDeleteMessages()
{
return await Bot.GetChatMemberAsync(
Chat.Id,
(await Bot.GetMeAsync()).Id
) is ChatMemberAdministrator {CanDeleteMessages: true};
}
private async Task<bool> IsStickerBanned(Sticker sticker)
{
var bannedList = (await GetBannedStickerSetOption()).GetValue<List<string>>();
return bannedList != null && sticker.SetName != null && bannedList.Contains(sticker.SetName);
}
private async Task<BotUserValue> GetBannedStickerSetOption()
{
return await Db.UserValues.FindOrCreateOption(Chat.Id, "cmBannedStickers");
}
public async Task<bool> PreCommand(ParamParser.StickerSet.Param stickerSetParam)
{
if (!stickerSetParam.IsValid)
{
await Reply("Неверный набор стикеров.");
return false;
}
return await CanUseCommands();
}
public string FormatStickerSetAction(StickerSet stickerSet, string action)
{
return new HtmlString()
.Text("Набор стикеров ")
.Url($"https://t.me/addstickers/{stickerSet.Name}", stickerSet.Title)
.Text($" {action}.")
.ToString();
}
private async Task<bool> CanUseCommands()
{
return await Bot.GetChatMemberAsync(Chat.Id, From.Id) is ChatMemberAdministrator {CanDeleteMessages: true}
or ChatMemberOwner;
}
}