管理员权限检查(aiogram)

问题描述 投票:1回答:1

我做了一个telegram机器人来管理telegram组,但是这个过滤器只是检查管理员状态。

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)

我需要检查管理员的权限. 例如: 使用命令 !ban 你需要禁止用户的权限.

python python-3.x telegram-bot python-telegram-bot
1个回答
0
投票

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

aiogram 文件 说。

Returns: 成功后返回一个ChatMember对象

还有什么Telegram API 文件 说ChatMember。

...

可以编辑信息 Boolean 可选。 仅限管理员。True, 如果管理员可以编辑其他用户的消息,并且可以钉住消息;只适用于频道

can_delete_messages Boolean 可选。 仅限管理员。如果管理员可以删除其他用户的信息,则为真。

can_restrict_members Boolean 可选。 仅限管理员。如果管理员可以限制、禁止或解除禁止聊天成员,则为真。

...

下面是一个例子。

@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)
© www.soinside.com 2019 - 2024. All rights reserved.