繁体   English   中英

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

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

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在编写一个机器人,该机器人将赋予一个人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'

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

1 个回复

以下是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)
1 Discord.py - DM 上的 add_roles

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

2 discord.py:如何整理member.roles中的默认角色?

我正在尝试使用用户拥有的角色创建一个 userinfo 命令。 我已经做到了,角色之间是一个空间。 但我不知道如何从 member.roles 中“整理”出默认角色。 现在看起来像这样: @@everyone @role @role @role 但我不希望@@everyone在那里。 我现在的代码 ...

3 添加多个前缀 discord.py

我想为每个服务器实现自定义前缀,以及一个永久前缀,即机器人提及,这意味着人们可以使用默认前缀. 以及@bot和前缀都存储在 json 文件中。 这是我当前的代码:with open("prefixes.json") as f: prefixes = json.load(f) default ...

5 Discord.py 添加角色

我正在尝试在 discord.py 中添加角色,但我无法让它真正发挥作用。 我得到一个AttributeError: 'Bot' object has no attribute 'add_roles' ,与其他方式相同 返回AttributeError: 'NoneType' object has ...

6 Discord.py 根据 csv 文件获取机器人添加角色

所以我是 Python、Discord.py 和一般编程的新手,但我使用 Discord 作为学习的好机会。 所以请原谅我的任何文盲。 我在互联网上到处都是零零碎碎地组装了一个机器人,它按预期工作。 但是当我尝试添加特定的 function 时,我现在很难过。 就上下文而言,我是管理员的 Disco ...

8 discord.py 中的机器人无法创建角色

我正在尝试制作一个 discord 机器人,当有人发送消息时它会创建一个角色。 出于某种原因,它一直说“ctx”未定义。 我将如何解决此错误? 当我改变 至 它说“消息”未定义。 我不明白如何定义这两个,因为当我添加如下所示的未定义部分时,它仍然说“ctx”未定义或“消息”未定义。 更新:我没有 ( ...

暂无
暂无

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

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