首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用discord.py检查用户在角色列表中是否有角色?

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

Stack Overflow用户
提问于 2020-01-09 23:35:59
回答 3查看 1.1K关注 0票数 0

我正在尝试制作一个级别机器人,当成员达到一定的级别时,他们会获得特定的角色,但我在删除角色和检测该用户是否有其他级别的角色时遇到了麻烦。

因此,假设一个0级用户以某种方式获得了10级角色。我如何才能让它检测到我所有级别角色列表中的级别10角色,并只删除那个不正确的角色?

代码语言:javascript
运行
复制
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)
EN

回答 3

Stack Overflow用户

发布于 2020-01-09 23:53:37

代码语言:javascript
运行
复制
if set(role_list) & set(user.roles):
    ...
票数 0
EN

Stack Overflow用户

发布于 2020-01-09 23:58:32

您的问题似乎与您的示例代码显示的内容不同。

Member.roles是成员拥有的Role的列表,因此您可以简单地检查某个Role是否在该列表中,以查看他们是否具有该角色。

或者,您可以在自己的Role列表中检查Role

请注意,添加您刚刚删除的角色似乎毫无意义,因为添加了不必要的额外API请求。您可能应该重新考虑这种设计。

票数 0
EN

Stack Overflow用户

发布于 2020-06-05 18:51:47

我写了类似的代码,它是由命令触发的。如果您使用其他方法访问guild.members,您应该能够将其转换为自动方式

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59667403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档