【问题标题】:discord bot list all roles pythondiscord bot列出所有角色python
【发布时间】:2021-04-21 11:44:58
【问题描述】:

我有这个代码

async def allroles(ctx):
  output2 = ""
  server = ctx.message.guild
  role_id = server.roles[0]

  for role in server.roles:
    if role_id == 640586288029892618:
      print("it´s everyone role")
    else:
      output2 +=f"{role.name} \n"
  await ctx.send(output2)

在哪里 640586288029892618 == @everyone 我想写除了每个人之外的每个角色,但是当我尝试这个时,它只是写了所有角色包括每个人,所以我想我尝试不写它是错误的(如果有选项来代替每个人的 ID 使用 role_name 所以我不必须为每个@everyone 服务器角色更改它,但写入

if role.name == "@everyone":
    Skip
else:
    output2 +=f"{role.name} \n"
await ctx.send(output2)

会很好。谢谢你帮助我!

【问题讨论】:

    标签: python discord bots discord.py


    【解决方案1】:

    所以基本上你在这里做错了

        if role_id == 640586288029892618:
          print("it´s everyone role")
    

    role_id = server.roles[0] 在这里返回了一些奇怪的数据(我不记得名字了) 所以尝试用if role_id.id == 640586288029892618:替换if role_id == 640586288029892618:

    希望它可以解决您的问题,否则请联系我

    编辑: 因为你要求一种比每次都输入角色 ID 更简单的方法
    对于大多数角色来说,它可能工作得很好,但是当您将表情符号放在角色名称中时,您在代码中命名角色时可能会遇到困难,以及当您可以通过简单地添加另一个参数(如
    确保你导入 Role

    
        async def allroles(ctx, role_to_check:Role):
              //some code here
              for role in server.roles:
                if role.id == role_to_check.id:
                   print("it´s everyone role")
    
    

    希望这能解决你的答案:)

    【讨论】:

    • 我删除了 role_id = server.roles[0] 并用 role.id 替换了 role_id 并且它正在工作,但仍然想知道是否有选项而不是 ID 使用名称(而不是 640586288029892618 使用 @everyone)
    • if role.name == "@everyone": 工作正常,所以我可以说它已经解决了,但你能把它放上来吗?
    • 如果我的答案解决了你的问题,请点赞并标记为正确的答案,否则请再次提醒我 ;)
    猜你喜欢
    • 1970-01-01
    • 2020-08-16
    • 2021-04-29
    • 2020-06-29
    • 1970-01-01
    • 2020-07-13
    • 2020-09-02
    • 2020-07-31
    • 2021-08-11
    相关资源
    最近更新 更多