#nullable enable 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 CanBotDeleteMessages() { return await Bot.GetChatMember( Chat.Id, (await Bot.GetMe()).Id ) is ChatMemberAdministrator {CanDeleteMessages: true}; } private async Task IsStickerBanned(Sticker sticker) { var bannedList = (await GetBannedStickerSetOption()).GetValue>(); return bannedList != null && sticker.SetName != null && bannedList.Contains(sticker.SetName); } private async Task GetBannedStickerSetOption() { return await Db.UserValues.FindOrCreateOption(Chat.Id, "cmBannedStickers"); } public async Task PreCommand(ParamParser.StickerSet.Param? stickerSetParam = null) { if (stickerSetParam is { IsValid: false }) { await Reply("Неверный набор стикеров."); return false; } return await CanUseCommands(); } public string FormatStickerSetAction(StickerSet stickerSet, string action) => FormatStickerSetAction(stickerSet.Name, stickerSet.Title, action); public string FormatStickerSetAction(string name, string action) => FormatStickerSetAction(name, name, action); public string FormatStickerSetAction(string name, string title, string action) => new HtmlString() .Text("Набор стикеров ") .Url($"https://t.me/addstickers/{name}", title) .Text($" {action}.") .ToString(); private async Task CanUseCommands() { return await Bot.GetChatMember(Chat.Id, From.Id) is ChatMemberAdministrator {CanDeleteMessages: true} or ChatMemberOwner; } }