【问题标题】:How to add a Role when a member join in a Guild成员加入公会时如何添加角色
【发布时间】:2021-06-27 12:26:33
【问题描述】:

如果成员加入on_member_join event,我正在尝试添加角色

我的代码是这样的

@client.event
async def on_member_join(member):
    gu_id = int(member.guild.id)
    a = gu.find_one({"_id": gu_id}) # I use mongodb and find the guild
    role_name = str(a['role'])
    role = member.guild.get_role(role_name)
    print(role_name)
    await member.add_roles(role)

但我总是得到这个错误

AttributeError: 'NoneType' 对象没有属性 'id'

我也用角色 id 尝试过这个,但是我得到了这个错误

discord.errors.Forbidden: 403 Forbidden (error code: 50013): Missing Permissions

【问题讨论】:

    标签: python python-3.x mongodb discord discord.py


    【解决方案1】:

    可能是因为gu_id 试图从member.guild 分配id 值,但它(无论guild 是什么)实际上并没有该属性,或者它之前没有在其他逻辑的某个地方传递已达到此 sn-p。

    也许您可以尝试检查member.guild 在其他地方的使用情况,首先是我要开始的地方。

    【讨论】:

      【解决方案2】:

      Guild.get_role 获取角色的 ID,您传递的是名称。因此,如果您尝试传递 ID,如果您仍想传递名称,这是有道理的:

      role = discord.utils.get(member.guild.roles, name="some name")
      

      注意区分大小写

      另一个错误本质上意味着机器人没有添加角色所需的权限,要么它在层次结构中太低,没有必要的权限,要么你是服务器和机器人的所有者根本无法为您添加角色。

      【讨论】:

      • 我像你展示的那样使用它,但我得到了同样的错误
      • 我已经解释了答案中的第二个错误。
      • 没有第二个错误我得到这个 AttributeError: 'NoneType' object has no attribute 'id'
      • 您确定输入的名称正确吗?区分大小写
      • 我不知道为什么,但现在它起作用了我只得到了 discord.errors.Forbidden: 403 Forbidden (error code: 50013): Missing Permissions 错误我给了机器人所有权限,包括管理员跨度>
      猜你喜欢
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      • 2021-03-17
      • 2021-07-26
      • 2021-03-26
      • 2018-12-13
      • 1970-01-01
      • 2023-04-09
      相关资源
      最近更新 更多