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

无法访问<VoiceChannel>.members与.full属性 如何获取语音频道成员数量

语音频道成员数获取异常解决方案

核心原因

仅开启GUILD_MEMBERS意图无法拉取语音频道成员数据,你漏声明了GUILD_VOICE_STATES(语音状态)意图,该权限是获取语音频道内成员实时状态的必要条件。

修复步骤

  • 首先在开发者门户的机器人设置页,开启Server Voice States权限
  • 在代码中初始化客户端时,添加GUILD_VOICE_STATES意图,以discord.js v14为例:
const { Client, IntentsBitField } = require('discord.js');
const client = new Client({
  intents: [
    IntentsBitField.Flags.Guilds,
    IntentsBitField.Flags.GuildMembers, // 已开启的成员意图
    IntentsBitField.Flags.GuildVoiceStates, // 新增的语音状态意图
  ]
});
  • 重启机器人后即可通过VoiceChannel.members.size正常获取语音频道内成员数量

备选统计方案

如果仍有缓存相关问题导致数值异常,可以用遍历服务器成员语音状态的方式统计:

// guild为当前语音频道所属的服务器实例,voiceChannelId为目标语音频道ID
const voiceMemberCount = guild.members.cache.filter(member => member.voice.channelId === voiceChannelId).size;

额外排查点

  • 确认机器人在目标语音频道所属的服务器拥有查看频道、连接权限
  • 如果服务器成员数量较多,可先调用await guild.members.fetch()拉取全量成员数据后再进行统计,避免缓存不全导致数值不准

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:54:03