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)
|
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 = await IsUserAdminAsync(bot, chat, user);
|
||||||
var canUse = callerMember is ChatMemberOwner;
|
|
||||||
|
|
||||||
if (callerMember is ChatMemberAdministrator callerAdmin)
|
|
||||||
{
|
|
||||||
canUse = callerAdmin.CanRestrictMembers;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (victim != null && canUse)
|
if (victim != null && canUse)
|
||||||
{
|
{
|
||||||
@@ -24,5 +18,18 @@ namespace Kruzya.TelegramBot.Core.Extensions
|
|||||||
|
|
||||||
return canUse;
|
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
|
namespace West.TelegramBot.ChatManagement.Handler
|
||||||
{
|
{
|
||||||
internal class Rules : ManagementHandler
|
class Rules : ManagementHandler
|
||||||
{
|
{
|
||||||
[Command(InChat.Public, "setrules", CommandParseMode.Both)]
|
[Command(InChat.Public, "setrules", CommandParseMode.Both)]
|
||||||
public async Task HandleSetRules()
|
public async Task HandleSetRules()
|
||||||
{
|
{
|
||||||
var replyToMessage = Message?.ReplyToMessage;
|
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");
|
var opt = await Db.UserValues.FindOrCreateOption(Chat.Id, "rulesMsgId");
|
||||||
opt.SetValue(replyToMessage.MessageId);
|
opt.SetValue(replyToMessage.MessageId);
|
||||||
|
|||||||
Reference in New Issue
Block a user