discord bot 列出所有角色 python

时间:2021-01-16 18:26:33

标签: python discord bots discord.py

我有这个代码

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)

那就太好了。谢谢你帮助我!

1 个答案:

答案 0 :(得分:0)

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

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

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

替换 if role_id.id == 640586288029892618:

希望它能解决你的问题,否则就给我打电话

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


    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")

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