我正在尝试制作一个级别提升机器人,让成员达到某个级别后便会扮演某个角色,但是我被困于删除角色并检测该用户是否还有其他级别的角色。
因此,假设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)
答案 0 :(得分:0)
if set(role_list) & set(user.roles):
...
答案 1 :(得分:0)
您的问题似乎与示例代码显示的问题不同。
Member.roles
是该成员拥有的Role
个列表,因此您可以简单地检查列表中是否有Role
,以查看他们是否具有该角色。
或者,您可以在自己的Role
个列表中检查Role
。
请注意,添加刚刚删除的角色似乎毫无意义,并且不需要额外的API请求。您可能应该重新考虑该设计。
答案 2 :(得分:0)
我写了类似的代码,由命令触发。
如果您使用其他方式进入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