discord bot list所有角色python



我有这样的代码

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)

where 640586288029892618 == @everyone我想写每个角色除了每个人,但是当我尝试这个只是写所有角色包括每个人,所以我想我的尝试不写它是错误的(如果有选项来代替每个人使用role_name的ID,所以我不需要改变它为每个@每个服务器角色,但写入

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

那太好了。谢谢你的帮助!

基本上你做错了什么

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

role_id = server.roles[0]返回一些奇怪的数据在这里(我不记得名字)所以试着用if role_id.id == 640586288029892618:代替if role_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")

希望这能解决你的问题。

最新更新