簡體   English   中英

discord 機器人列出所有角色 python

[英]discord bot list all roles 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)

其中 640586288029892618 == @everyone 我想寫除每個人之外的每個角色,但是當我嘗試這個時它只是寫了所有角色包括每個人,所以我想我嘗試不寫它是錯誤的(如果有選項來代替每個人的 ID 使用role_name 所以我不必為每個@everyone 服務器角色更改它,而是寫入

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 == 640586288029892618:if role_id.id == 640586288029892618:

希望它可以解決您的問題,否則只是給我打電話

編輯:因為你要求一個比每次都輸入角色 ID 更簡單的方法
對於大多數角色來說,它可能工作得很好,但是當你將表情符號放在角色名稱中時,你在代碼中命名角色時可能會遇到困難,以及為什么 go 用於硬編碼,當你可以通過簡單地添加另一個參數來做到這一點時
確保你導入角色Class


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

希望這能解決你的答案:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM