Discord.js v13音乐机器人加入语音频道卡在Signalling状态无报错如何解决
问题修复方案
- 修正硬编码的 guildId 问题
你当前代码中joinVoiceChannel配置里将guildId写死为固定值828953538952298517,如果测试的服务器ID和该值不匹配,会直接导致信令交互卡住无法完成连接。替换为动态获取当前服务器ID即可:
guildId: message.guild.id,
- 修复音频资源初始化错误
你当前调用createAudioResource时传入了空字符串,无效的音频资源会导致播放器初始化失败,间接阻塞语音连接的状态流转。替换为可用的本地音频路径/公共音频流地址做测试:
const resource = createAudioResource('./test.mp3') // 替换为实际存在的音频文件路径
- 添加连接状态监听排查错误
当前代码没有监听语音连接的事件,无法捕获底层报错信息,添加如下代码输出完整状态变化和错误:
// 加入频道后立即添加 connection.on('stateChange', (oldState, newState) => { console.log(`连接状态更新:${oldState.status} -> ${newState.status}`) }) connection.on('error', err => { console.error('语音连接错误:', err) })
- 检查权限与依赖配置
- 前往Discord开发者后台的机器人设置页,在「Privileged Gateway Intents」板块开启
GUILD_VOICE_STATES权限,仅代码中声明Intent不会生效 - 确认机器人在目标语音频道拥有
连接、说话两项权限 - 安装语音加密依赖:执行
npm install libsodium-wrappers,缺少该依赖会导致语音连接无法完成握手
内容的提问来源于stack exchange,提问作者Finn
相关产品推荐
相关产品推荐

