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

Discord.js音乐机器人播放中途无故停止问题求助

问题排查:Discord音乐机器人播放中途突然停止

可能原因及对应解决方案

1. FFmpeg配置问题

  • 先确认FFmpeg是否正确安装且系统能找到它。discord-player依赖FFmpeg处理音频,若路径不对或版本不兼容,会直接导致播放中断。
    • 验证方式:终端执行ffmpeg -version,能正常输出版本信息才算正常。
    • 未安装则根据系统安装:Windows下载预编译包,Linux用包管理器(如apt install ffmpeg),macOS用brew install ffmpeg。
    • 已安装但仍有问题,可在Player初始化时手动指定FFmpeg路径:
      bot.player = new Player(bot, {
          ytdlOptions: {
              quality: 'lowestaudio',
              highWaterMark: 1 << 25
          },
          ffmpegPath: '/usr/bin/ffmpeg' // 替换为你的实际FFmpeg路径
      })
      

2. YTDL参数错误

  • 你的代码里highWaterMark写的是1 >> 25,这个位运算结果是0,会导致音频流缓存严重不足,必然引发播放中断。应该改成1 << 25(即33554432),这是合理的缓存阈值:
    bot.player = new Player(bot, {
        ytdlOptions: {
            quality: 'lowestaudio',
            highWaterMark: 1 << 25 // 修正位运算逻辑
        },
    })
    

3. 队列创建逻辑问题

  • 当前每次执行/play都会新建队列,容易引发冲突导致异常。应该优先获取已有队列,不存在时再创建:
    // 替换原队列创建代码
    let queue = player.getQueue(interaction.guild);
    if (!queue) {
        queue = await player.createQueue(interaction.guild);
        await queue.connect(interaction.member.voice.channel);
    }
    

4. 版本兼容性问题

  • 旧版discord-player可能存在播放中断的已知bug,执行npm update discord-player更新到最新版本再测试。

5. 调试日志补充

  • 给player添加错误监听,捕获播放过程中的具体异常,能快速定位问题根源:
    player.on('error', (queue, error) => {
        console.log(`队列错误: ${error.message}`);
        interaction.channel.send(`播放出错: ${error.message}`);
    });
    
    player.on('trackError', (queue, track, error) => {
        console.log(`曲目错误: ${error.message}`);
        interaction.channel.send(`播放《${track.title}》时出错: ${error.message}`);
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 17:22:31