Discord Python:向成员添加角色

Discord Python:向成员添加角色,python,discord.py,Python,Discord.py,我的机器人会在用户加入Discord公会时进行检查,然后私下对他们的电子邮件地址进行DMs。然后,它向电子邮件地址发送一个一次性代码,并要求用户在DM中输入该代码。所有这些都得到了实施并发挥了作用。但是,当用户用代码回答时,我似乎无法为用户分配新角色。以下是我目前拥有的(我删除了检查一次性代码的代码等,因为它工作正常,似乎不是问题的根源): 以下是我收到的错误: Traceback (most recent call last): File "/Library/Frameworks

我的机器人会在用户加入Discord公会时进行检查,然后私下对他们的电子邮件地址进行DMs。然后,它向电子邮件地址发送一个一次性代码,并要求用户在DM中输入该代码。所有这些都得到了实施并发挥了作用。但是,当用户用代码回答时,我似乎无法为用户分配新角色。以下是我目前拥有的(我删除了检查一次性代码的代码等,因为它工作正常,似乎不是问题的根源):

以下是我收到的错误:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/discord/client.py", line 312, in _run_event
    await coro(*args, **kwargs)
  File "main.py", line 89, in on_message
    await member.add_roles(role)
AttributeError: 'User' object has no attribute 'add_roles'

为此,需要将对象转换为对象。这样,就可以调用该方法。以下是一种方法:

导入不一致
从discord.ext导入命令
从discord.utils导入获取
@客户端事件
异步def on_消息(消息):
#检查消息是否由bot发送
如果message.author==client.user:
返回
#检查消息是否为DM
如果message.channel.type!=discord.ChannelType.private:
返回
用户\u code=“通过电子邮件发送的某些代码”
如果message.content==用户代码:
新建工会=客户端。获取工会(int(工会ID))
member=新的工会。获取会员(message.author.id)
角色=新公会。获取角色(int(不和谐角色))
等待成员。添加_角色(角色)
response=“您现在可以使用Discord服务器了。”
等待消息。通道。发送(响应)

Edited:看来你的
GUILD\u ID
不正确,不是有效的帮会ID。我刚刚添加了我收到的错误。帮会ID是在一个.env文件中定义的,我已经手动检查了它是否是正确的ID。如果它存储在外部,您能确认它是一个int吗?ie只需在get\u GUILD line上尝试
int(帮会ID)
new\u GUILD
未被识别。你确定
GUILD\u ID
是一个int并且机器人在该服务器上吗?是的,的确,GUILD\u ID不是int。但是,我修复了这个问题,我在另一行中仍然收到一个错误(请参阅我更新的帖子)。我现在收到另一个错误:对于行
等待成员。添加角色(role)
,它说
AttributeError:'NoneType'对象没有属性“id”
。您确定这是错误所在的行吗?我没有在那一行打电话给
id
。您是否调用了
role.id
?它在回溯中还说
文件“/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site packages/discord/member.py”,第641行,在add_roles wait req(guild_id,user_id,role.id,reason=reason)
中,必须是角色。您确定这是有效的角色id吗?也许可以尝试
role=new\u guild。取而代之的是获取角色(int(DISCORD\u role))
。我已经更新了我的答案哦,是的,我在
GUILD\u ID
DISCORD\u角色
方面也有同样的问题。。。非常感谢你的帮助!
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/discord/client.py", line 312, in _run_event
    await coro(*args, **kwargs)
  File "main.py", line 89, in on_message
    await member.add_roles(role)
AttributeError: 'User' object has no attribute 'add_roles'