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

DiscordJS v13音乐机器人加入语音频道后一直缓冲无法播放如何解决?

问题修复方案

1. 补全语音相关意图

你当前的客户端意图缺少GUILD_VOICE_STATES,这是处理语音交互必须的权限,同时需要前往Discord开发者后台,在你对应应用的「Bot」设置页开启语音状态特权意图:

const client = new Client({ intents: [
  Intents.FLAGS.GUILDS,
  Intents.FLAGS.GUILD_MESSAGES,
  Intents.FLAGS.GUILD_VOICE_STATES // 新增语音状态意图
] });

2. 修正音频流配置

你当前使用的流类型StreamType.Arbitrary会强制让库重新编码流,容易出现缓冲卡住的问题,同时给ytdl增加流优化参数:

// 原ytdl调用替换为
const stream = ytdl(vdRepro.url, { 
  filter:'audioonly',
  quality: 'highestaudio',
  highWaterMark: 1 << 25 // 扩大缓冲区,减少断流概率
});
// 原音频资源创建替换为,指定流类型为OggOpus避免二次编码
var resource = createAudioResource(stream, {
  inputType: StreamType.OggOpus
});

3. 调整播放器行为配置

将noSubscriber设置改为Play,避免订阅连接还未建立完成时播放器主动暂停:

const player = createAudioPlayer({
  behaviors: {
    noSubscriber: NoSubscriberBehavior.Play,
  },
});

4. 增加错误和状态监听

新增事件监听定位问题,同时等待语音连接就绪后再播放音频:

// 连接创建后监听就绪事件再播放
connection.on('stateChange', (oldState, newState) => {
  if (newState.status === 'ready') {
    player.play(resource);
    connection.subscribe(player);
  }
});
// 监听播放器错误
player.on('error', error => {
  console.error('播放器错误:', error);
});
// 监听流错误
stream.on('error', error => {
  console.error('音频流加载错误:', error);
});

5. 检查必须依赖是否安装

确保你已安装音频解码必须的依赖:

  • opus编码库:执行npm i @discordjs/opus安装
  • ffmpeg:Windows/Linux/macOS对应安装ffmpeg运行环境,或者安装npm i ffmpeg-static

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:06:06