using System.Threading.Tasks; using Telegram.Bot; using Telegram.Bot.Types; namespace Kruzya.TelegramBot.Core.Extensions; public static class BotExtension { public static async Task CanPunishMember(this ITelegramBotClient bot, Chat chat, User user, User victim = null) { var canUse = await IsUserAdminAsync(bot, chat, user); if (victim != null && canUse) { var victimMember = await bot.GetChatMemberAsync(chat, victim.Id); canUse = victimMember is not ChatMemberOwner && victimMember is not ChatMemberAdministrator && !victim.IsBot; } return canUse; } public static async Task IsUserAdminAsync(this ITelegramBotClient bot, Chat chat, User user) { var callerMember = await bot.GetChatMemberAsync(chat, user.Id); var isAdmin = callerMember is ChatMemberOwner; if (callerMember is ChatMemberAdministrator callerAdmin) { isAdmin = callerAdmin.CanRestrictMembers; } return isAdmin; } public static async Task CanDeleteMessagesAsync(this ITelegramBotClient bot, Chat chat) { return await CanDeleteMessagesAsync(bot, chat, await bot.GetMeAsync()); } public static async Task CanDeleteMessagesAsync(this ITelegramBotClient bot, Chat chat, User user) { return await bot.GetChatMemberAsync(chat.Id, user.Id) is ChatMemberOwner or ChatMemberAdministrator {CanRestrictMembers: true}; } }