如何使用discord.py检查用户在角色列表中是否有角色?

时间:2020-01-09 15:35:59

标签: python 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)

3 个答案:

答案 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