mirror of
https://github.com/Bubuni-Team/telegram-bot.git
synced 2026-07-31 00:29:24 +03:00
[rules] Fix permission check on setrules.
This commit is contained in:
@@ -8,13 +8,7 @@ namespace Kruzya.TelegramBot.Core.Extensions
|
||||
{
|
||||
public static async Task<bool> 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<bool> 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user