管理员权限检查(AIG)

2024-06-26 00:11:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我为管理电报组创建了一个电报bot,但此筛选器只检查管理状态:

import aiogram
import functools
from aiogram.dispatcher.filters import BoundFilter

class CheckFilter(BoundFilter):
    key = 'is_admin'
    def __init__(self, is_admin):
        self.is_admin = is_admin
    async def check(self, message: types.Message):
       member = await bot.get_chat_member(message.chat.id, message.from_user.id)
       return member.is_chat_admin() == self.is_admin
dp.filters_factory.bind(CheckFilter)

我需要检查管理员权限。示例:for use命令!禁止您需要禁止用户权限


Tags: fromimportselfmessageadminisdefbot
1条回答
网友
1楼 · 发布于 2024-06-26 00:11:05

bot.get_chat_member(chat_id, bot_id)就可以了

Aigramdocumentation说:

Returns: Returns a ChatMember object on success

电报APIdocumentation对ChatMember说了什么:

...

can_edit_messagesBoolean Optional. Administrators only. True, if the administrator can edit messages of other users and can pin messages; channels only

can_delete_messagesBoolean Optional. Administrators only. True, if the administrator can delete messages of other users

can_restrict_membersBoolean Optional. Administrators only. True, if the administrator can restrict, ban or unban chat members

...

以下是一个例子:

@dp.message_handler(commands=['rights'])
async def myrights(message: types.Message):
    member = await bot.get_chat_member(message.chat.id, TOKEN.split(":")[0])
    for x in member:
        print(x)

以及在组上写入/rights@BOTUSERNAME时的输出(在我的终端上):

('user', {'id': xxxxxxxxxx, 'is_bot': True, 'first_name': 'xxxxx', 'username': 'xxxxx'})
('status', 'administrator')
('can_be_edited', False)
('can_change_info', True)
('can_delete_messages', True)
('can_invite_users', True)
('can_restrict_members', True)
('can_pin_messages', True)
('can_promote_members', False)

相关问题 更多 >