如何检查我的Python Discord机器人是否具有必要的权限?

时间:2019-01-20 19:10:24

标签: python discord.py

我制作了一个实用程序机器人来帮助记录消息并帮助将频道从一台服务器迁移到另一台服务器。我需要检查它是否具有执行命令所需的权限,但是以下代码不起作用(我使用@client.event,并且不希望使用@bot.command)这是我的权限检查代码:< / p>

if not client.user.server_permissions.text.read_messages: await send_message(message.channel,"Please give me permission to read messages!")

if not client.user.server_permissions.text.manage_messages: await send_message(message.channel, "Please give me permission to manage messages!")

if not client.user.server_permissions.text.read_message_history: await send_message(message.channel, "Please give me permission to read message history!")

if not client.user.server_permissions.text.attach_files: await send_message(message.channel, "Please give me permission to attach files!")

以上操作无效,在适当条件下进行测试时出现以下错误:

AttributeError: 'User' object has no attribute 'server_permissions'

我要去哪里错了?

2 个答案:

答案 0 :(得分:1)

使用Python重写(v1.0)时,命名方案已从mysqld --init-file=C:\\path\\to\\file.txt 更改为server。这会将正确的代码更改为:

guild

(@ patrick-haugh显示的message.channel.guild.me.guild_permissionsUser之间的差异仍然是正确的)

答案 1 :(得分:0)

User对象没有服务器权限,Member对象具有服务器权限。 (因为User可以是多个服务器中的Member,每个服务器中都有不同的权限)要在特定服务器上获取代表您的机器人的Member对象,请使用Server.me。因此,对于您的所有示例,请更改

client.user.server_permissions

message.channel.server.me.server_permissions