You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Discord.py如何获取成员角色以用于match/case逻辑判断?

实现步骤

你可以通过事件回调传入的member对象直接获取成员的角色信息,member.roles会返回该成员在当前服务器拥有的所有角色列表,排序规则为「权限从低到高」,通常我们取最高权限的角色来做匹配即可。

如果你的判断逻辑是基于成员的最高权限角色名,直接把person_role赋值为最高角色的名称即可,完整代码如下:

@client.event
async def on_voice_state_update(member, before, after):
    # 取成员最高权限角色的名称
    person_role = member.roles[-1].name
    match person_role:
        case "User 1":
            # 对应角色的频道创建逻辑
            pass
        case "User 2":
            pass
        case _:
            # 无匹配角色的默认逻辑
            pass

注意事项

  • 你需要先在Discord开发者门户开启机器人的Server Members Intent权限,否则无法正常获取成员的角色信息
  • member.roles列表的第一个元素永远是默认的@everyone角色,如果你不需要匹配该角色,不要取索引为0的元素
  • 如果你的判断逻辑需要匹配成员拥有的任意角色而非最高权限角色,可以先遍历member.roles筛选出目标角色后再进行匹配

内容的提问来源于stack exchange,提问作者Les_Grosman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:06:00