diff --git a/Core/Extensions/BotExtension.cs b/Core/Extensions/BotExtension.cs index a36761f..1fcf00d 100644 --- a/Core/Extensions/BotExtension.cs +++ b/Core/Extensions/BotExtension.cs @@ -8,13 +8,7 @@ namespace Kruzya.TelegramBot.Core.Extensions { public static async Task CanPunishMember(this ITelegramBotClient bot, Chat chat, User user, User victim = null) { - var callerMember = await bot.GetChatMemberAsync(chat, user.Id); - var canUse = callerMember is ChatMemberOwner; - - if (callerMember is ChatMemberAdministrator callerAdmin) - { - canUse = callerAdmin.CanRestrictMembers; - } + var canUse = await IsUserAdminAsync(bot, chat, user); if (victim != null && canUse) { @@ -24,5 +18,18 @@ namespace Kruzya.TelegramBot.Core.Extensions return canUse; } + + public static async Task IsUserAdminAsync(this ITelegramBotClient bot, Chat chat, User user) + { + var callerMember = await bot.GetChatMemberAsync(chat, user.Id); + var canUse = callerMember is ChatMemberOwner; + + if (callerMember is ChatMemberAdministrator callerAdmin) + { + canUse = callerAdmin.CanRestrictMembers; + } + + return canUse; + } } } \ No newline at end of file diff --git a/modules/ChatManagement/Handler/Rules.cs b/modules/ChatManagement/Handler/Rules.cs index 585fe72..809809a 100644 --- a/modules/ChatManagement/Handler/Rules.cs +++ b/modules/ChatManagement/Handler/Rules.cs @@ -8,14 +8,14 @@ using Telegram.Bot.Exceptions; namespace West.TelegramBot.ChatManagement.Handler { - internal class Rules : ManagementHandler + class Rules : ManagementHandler { [Command(InChat.Public, "setrules", CommandParseMode.Both)] public async Task HandleSetRules() { var replyToMessage = Message?.ReplyToMessage; - if (replyToMessage == null || !await CanPunish()) return; + if (replyToMessage == null || !await Bot.IsUserAdminAsync(Chat, From)) return; var opt = await Db.UserValues.FindOrCreateOption(Chat.Id, "rulesMsgId"); opt.SetValue(replyToMessage.MessageId);