我做了一个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 你需要禁止用户的权限.
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)