首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >管理员权限检查(aiogram)

管理员权限检查(aiogram)
EN

Stack Overflow用户
提问于 2020-04-24 23:36:34
回答 1查看 3.6K关注 0票数 1

我为管理电报组制作了一个电报机器人,但是这个过滤器只检查管理状态:

代码语言:javascript
复制
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)

我需要检查管理员权限。例如:为了使用命令!禁令,你需要禁止用户的许可。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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布尔值可选。只限于管理员。如果管理员可以限制、禁止或取消聊天成员,则

下面是一个示例:

代码语言:javascript
复制
@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时:

代码语言:javascript
复制
('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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61419046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档