[英]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.