繁体   English   中英

在discord.py中,如何使用add_roles向一个人添加多个角色?

[英]In discord.py, How do I use add_roles to add multiple roles to one person?

我正在编写一个机器人,该机器人将赋予一个人2个角色,一个被称为“扮演”,另一个则取决于他们当前的游戏。 现在,我不知道一次添加多个角色。 在这种情况下,我以Minecraft为例。 以下是相关代码:

    totestafter = str(memberafter.game)
    print(totestafter)
    totestbefore = str(memberbefore.game)
    print(totestbefore)
    playing = discord.utils.get(memberafter.server.roles, name="Playing")
    if "Minecraft" in totestafter:
      print('if2 success')
      mcrole = discord.utils.get(memberafter.server.roles, name="Minecraft")
      addroles = [mcrole, playing]
      await client.add_roles(memberafter, addroles)
    elif "Minecraft" in totestbefore:
      mcrole = discord.utils.get(memberafter.server.roles, name="Minecraft")
      await client.remove_roles(memberafter, mcrole)
      await client.remove_roles(memberafter, playing)
      print("Removal Success")

这是我的错误: AttributeError: 'list' object as no attribute 'id'

我知道它是用于列表的,应该是一个参数,但是我还很新,无法弄清楚。

以下是add_role()文档的摘录:

add_roles(member, *roles)

这个功能是协程 为指定的Member提供多个Role 您必须具有适当的权限才能使用此功能。 之后,直到收到相应的WebSocket事件,才直接修改Member对象。 参数:

  • memberMember )–要赋予角色的成员。
  • *roles –赋予成员的Role的参数列表

文档本身有点误导,因为它提到了list一词。 实际上, *表示此参数将采用所有剩余的参数并将它们存储在列表中。

因此,您的add_roles命令需要更改为:

await client.add_roles(memberafter, mcrole, playing)

或者,如果您想将角色保留在列表中,只需添加一个星号( * ):

addroles = [mcrole, playing]
await client.add_roles(memberafter, *addroles)

旁注,就像add_roles()remove_roles()工作原理几乎相同,它删除角色而不是添加它们。

remove_roles(member, *roles)

这意味着您也可以在一个命令中删除多个角色:

await client.remove_roles(memberafter, mcrole, playing)

您的完整代码段应如下所示:

playing = discord.utils.get(memberafter.server.roles, name="Playing")
mcrole = discord.utils.get(memberafter.server.roles, name="Minecraft")

if "Minecraft" in totestafter:     
  await client.add_roles(memberafter, mcrole, playing)
elif "Minecraft" in totestbefore:
  await client.remove_roles(memberafter, mcrole, playing)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM