我为管理电报组制作了一个电报机器人,但是这个过滤器只检查管理状态:
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)我需要检查管理员权限。例如:为了使用命令!禁令,你需要禁止用户的许可。
发布于 2020-04-29 07:32:33
bot.get_chat_member(chat_id, bot_id)会做到这一点的。
心电图文档说:
返回:在成功时返回ChatMember对象
以及Telegram API 文档对ChatMember的看法:
… can_edit_messages布尔值可选。只限于管理员。如果管理员可以编辑其他用户的消息并可以将消息引脚,则为True;仅为通道。 can_delete_messages布尔值可选。只限于管理员。如果管理员可以删除其他用户的消息,则为 can_restrict_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)https://stackoverflow.com/questions/61419046
复制相似问题