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

Discord bot误判用户已加入语音频道(实际未加入)问题咨询

Discord Bot语音状态校验错误排查方案
  • 检查网关意图配置:discord.js v13及以上版本必须开启GuildVoiceStates意图,未开启时Bot只能读取本地缓存的语音状态,无法同步用户最新的加入/离开操作,就会出现用户已离开频道但Bot仍读取到旧频道数据的问题,你可以在Bot实例初始化时补充该意图参数。
  • 修复代码潜在语法问题:你当前代码里的报错提示字符串存在强制换行,普通单引号字符串不支持直接换行,可能会触发隐性语法错误,建议将字符串合并为单行或者使用反引号包裹的模板字符串。
  • 增加缓存刷新与双重校验逻辑:避免直接读取本地缓存的成员状态,先拉取用户最新状态后再判断,同时额外校验频道成员列表,避免缓存误判。

改进后的参考代码如下:

// 注意:使用await需要将当前命令处理函数标记为async
const latestMember = await message.member.fetch();
const voiceChannel = latestMember.voice?.channel;
// 双重校验:确认频道存在,且当前用户确实在频道成员列表中
if (!voiceChannel || !voiceChannel.members.has(message.author.id)) {
  return sendMessage('**Error**', '#FF0000', 'You need to be in voice channel to use this command.', message, Discord);
}
  • 检查Bot权限配置:确保Bot拥有所有语音频道的查看频道权限,否则Bot无法读取用户在私密频道的状态,会出现状态同步异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:36:00