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

discord.js bot播放音频无声音,Discord显示发声绿圈无报错如何解决?

问题排查及修复方案
  • 确认依赖完整性
    discord.js的语音功能需要额外依赖组件支持,必须安装以下依赖:
    npm install @discordjs/opus ffmpeg-static
    也可以全局安装ffmpeg,但使用ffmpeg-static可避免环境变量配置问题。
  • 检查Intents配置
    必须在Discord开发者平台的Bot设置页开启Guild Voice States权限,否则bot即使成功加入频道也无法正常传输音频流。
  • 补充异步错误监听
    你当前使用的try/catch只能捕获同步代码错误,vc.join()和connection.play()均为异步操作,内部抛出的错误无法被外层捕获,因此控制台无报错输出,需要给异步操作添加错误监听,修正后的代码参考如下:
if (command == "soundtest") {
    mongo().then(async (mongoose) => {
        const { voice } = msg.member

        if (voice.channelID) {
            const vc = voice.channel
            try {
                const connection = await vc.join()
                const dispatcher = connection.play(path.join(__dirname, 'Bastille_Pompeii.mp3'))
                // 监听播放错误
                dispatcher.on('error', err => {
                    console.log('播放出错:', err)
                })
                dispatcher.on('finish', () => {
                    console.log('音频播放完成')
                })
            } catch(e) {
                console.log("加入频道出错:", e)
            }
        } else {
            msg.channel.send(`You must join a voice channel to use this command`)
        }
    })
}
  • 验证音频路径与文件有效性
    打印path.join(__dirname, 'Bastille_Pompeii.mp3')的输出,确认路径和你实际存放音频文件的路径完全一致,同时使用本地播放器打开音频文件,确认文件本身没有损坏。
  • 检查频道权限
    确认bot在当前语音频道拥有Speak权限,没有被服务器管理员、频道权限设置静音。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:27:03