我正在使用 discord.py 和 asyncio 制作一个 discord 机器人。该机器人有像 kick
和 ban
这样的命令,这显然不应该对普通用户可用。
我想制作一个简单的系统,它将使用 ctx.message.author
检测用户角色具有的权限,以获取发送命令的用户。
我不希望机器人检测特定的角色名称,因为这些角色名称因服务器而异。我也不希望机器人有多个文件以保持简单。
我看过 discord.py 文档和其他各种来源,但都没有包含如何实现他们谈论的各种方法的示例。
例如,这是来自我的机器人的单个命令:
async def kick(ctx, userName: discord.User):
if True: #ctx.message.author.Permissions.administrator
await BSL.kick(userName)
else:
permission_error = str('Sorry ' + ctx.message.author + ' you do not have permissions to do that!')
await BSL.send_message(ctx.message.channel, permission_error)
if else
声明是我自己尝试做的。 #ctx.message.author.Permissions.administrator
被注释掉,因为它不起作用并替换为 True
用于测试目的。
感谢您提前提供任何帮助和建议。
原文由 user9123 发布,翻译遵循 CC BY-SA 4.0 许可协议
Permissions
是班级的名字。要获得消息作者权限,您应该访问作者的guild_permissions
属性。更新:
验证调用命令的人的权限的更好方法是使用
commands
扩展的 检查 功能,特别是has_permissions
检查。例如,如果您只想对拥有manage_roles
权限或ban_members
权限的人开放命令,您可以这样编写命令: