簡體   English   中英

如何使用discord.py檢查用戶是否在角色列表中擁有角色?

[英]How to check if a user has a role in a list of roles with discord.py?

我正在嘗試制作一個練級機器人,其中成員在達到特定級別時獲得特定角色,但我在刪除角色並檢測該用戶是否具有其他級別角色時遇到了困難。

因此,假設 0 級用戶以某種方式獲得了 10 級角色。 我怎樣才能讓它檢測到我所有級別角色列表中的 10 級角色並僅刪除那個不正確的角色?

if role_list in user.roles:
    await user.remove_roles(all_the_level_roles_list??)
    await user.add_roles(the_correct_level_role)
else:
    await user.add_roles(the_correct_level_role)
if set(role_list) & set(user.roles):
    ...

您的問題似乎與您的示例代碼顯示的不同。

Member.roles是成員擁有的Role列表,因此您可以簡單地檢查Role是否在該列表中以查看他們是否具有該角色。

或者,您可以檢查一個Role在自己的名單Role秒。

請注意,添加您剛剛刪除的角色似乎毫無意義,而且會產生不必要的額外 API 請求。 您可能應該重新考慮該設計。

我寫了這個類似的代碼,它是由命令觸發的。 如果您使用其他方式訪問guild.members您應該能夠將其移動到自動方式

member == ctx.message.guild.members
level_role = ID_of_the_role_that_you_want_to_remove
for role in member.roles:           #getting all roles of member
    if role.id == level_role:    
        await member.remove_roles(role, reason='gets a better role')
    else:                           #skipping
        None

暫無
暫無

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

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