【问题标题】:Discord.py - add_roles on DMDiscord.py - DM 上的 add_roles
【发布时间】:2020-12-26 06:28:39
【问题描述】:

本质上,我试图构建一个机器人,当用户将具有特定关键字的 DM 作为 DM 发送给机器人时,该机器人赋予用户特定角色。关键字的东西和一切都运行良好。服务器解析正确,但我认为我在获取角色或添加角色时在某些时候犯了错误。这是我的代码中用于角色化的特定部分:

server = client.get_guild(<my server id here>)
role = discord.utils.get(server.roles, name="Member")
await user.add_roles(ctx.message.author, role)

【问题讨论】:

  • 是否引发了一些异常?将 try except 添加到此代码以捕获它们。

标签: python discord discord.py roles


【解决方案1】:

DM 中的用户没有角色,公会中的成员有角色,因此您需要从该服务器的用户 ID 中获取成员。

另外,add_roles 方法只接受角色而不是用户/成员对象

server = client.get_guild(<your server id here>)
role = discord.utils.get(server.roles, name="Member")
member = server.get_member(user.id)
await member.add_roles(role)

【讨论】:

    【解决方案2】:

    您需要检索member 对象而不是user 对象,因为user 对象未与公会链接。

    server = client.get_guild(server_id)
    role = discord.utils.get(server.roles, name="Member")
    member = server.get_member(ctx.message.author.id)
    await member.add_roles(role)
    

    【讨论】:

    • 感谢您的回答。我让它明确地检索正确的用户和服务器,但add_roles 仍然无法正常工作。我没有得到确切的回溯,但没有添加任何角色。也许我没有检索到正确的角色?否则我无法弄清楚为什么会出现这些问题
    • 对不起,我现在设法引发了正确的异常,并看到机器人只是缺少服务器上的权限。很抱歉浪费您的时间,非常感谢您的机器人提供的非常有用的答案。谢谢Beacoup! :)
    猜你喜欢
    • 1970-01-01
    • 2021-06-04
    • 2021-05-17
    • 2021-11-23
    • 2021-04-16
    • 1970-01-01
    • 2019-08-22
    • 2022-01-14
    • 1970-01-01
    相关资源
    最近更新 更多