![](/img/trans.png)
[英]How to check if a user has a specific role in a list of roles? (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.