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

discord.py获取指定语音频道成员列表失败问题求助

排查discord.py语音频道成员列表为空的问题

嘿,我帮你梳理下Discord突袭机器人里,语音频道成员列表memids为空的几个常见原因,都是开发时容易踩的坑:

  • 先确认你拿到了正确的语音频道对象
    很多时候问题出在获取频道这一步。比如你用discord.utils.get的时候,是不是频道名拼错了?或者没限定服务器范围?先打印voice_channel看看是不是None——如果频道对象本身是空的,那肯定拿不到成员。
    正确的获取示例:

    # 从上下文或指定服务器获取频道
    voice_channel = discord.utils.get(ctx.guild.voice_channels, name="突袭频道")
    
  • 机器人权限不够
    你的机器人得有访问目标语音频道的权限才行!去服务器角色设置里,给机器人分配查看频道和连接语音频道的权限,不然它根本读不到频道里的成员信息。

  • 用了废弃的属性(针对discord.py v2.x)
    如果你用的是新版discord.py(v2.x及以上),旧的voice_channel.voice_members已经被弃用了,得用voice_channel.members来获取成员列表。比如正确生成memids的代码:

    memids = [member.id for member in voice_channel.members]
    print(memids)
    
  • 成员意图没开启
    discord.py需要启用成员缓存才能正确获取成员信息。你得做两步:

    1. 在Discord开发者门户里,找到你的机器人,开启Server Members Intent(特权网关意图里的选项);
    2. 初始化Bot时开启成员意图:
      intents = discord.Intents.default()
      intents.members = True
      bot = discord.Bot(intents=intents)
      

    没开这个的话,缓存里没有成员数据,自然拿不到列表。

  • 机器人不在目标服务器
    别笑,真的有这种情况!确认你的机器人已经成功加入了突袭服务器,没有被踢或者限制访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:26:40