注意:此帖子同时获得Discord.py和Discord.py-Rewrite标签,因为Discord.py Rewrite已正式发布并“替换”了异步版本。
========================================================
我正在尝试为我的Discord Bots创建自己的帮助格式化程序(一个支持多语言的帮助格式化程序),但我需要一种方法来获取用户的权限在帮助命令中,而不是在开头
我在帮助格式化程序中正在做的是打开文件并读取X行以便在Discord上打印X事物。它工作得很好,但是我想限制它,因为有人可以通过执行admin命令的help命令看到“admin命令”(如果我放了一个)。所以我要做的是在每个文件的末尾放置查看命令所需的权限。
在机器人方面,我会让机器人将用户的权限作为一个包含用户拥有的所有权限的列表,而不是权限ID,但是权限名称,如manage_message
或ban_members
,这样的东西,所以我可以在文件的结尾,然后查看此权限是否在用户的权限列表中。
在此先感谢您的回答。
假设您有一些字典映射权限名称到字符串列表:
perm_command_map = {
"manage_messages": ["Command1", "Command2"],
"kick_members": ["Command3", "Command4"]
}
您可以使用Member.permissions_in
方法获取Permissions
对象,然后使用它来确定各个权限(如果您只关心公会级权限,只需使用Member.permissions
),即可获得用户有权访问的所有内容的列表。 :
allowed_commands = []
permissions = message.author.permissions_in(message.channel)
for perm, commands in perm_command_map.items():
if getattr(permissions, perm):
allowed_commands.extend(commands)