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

新版Node端Discord Bot API更新后音频播放无声音无报错如何解决

修复方案

前置依赖补全

先安装音频播放必需的底层依赖包:

npm install @discordjs/opus ffmpeg-static opusscript

代码修正点

  • 补全createReadStream的导入,你当前代码使用了该方法但未从fs模块引入
  • 新增语音连接就绪状态监听,需等连接完全建立后再执行订阅、播放逻辑,避免连接未初始化完成导致的播放失败
  • 创建音频资源时明确指定流类型,MP3格式需要配置转码参数才能被正常识别解码

修正后可用代码

const Discord = require('discord.js');
const {token} = require("./config.json");
const { join } = require("path");
const { createReadStream } = require('fs');
const {joinVoiceChannel, createAudioPlayer, createAudioResource, AudioPlayerStatus, VoiceConnectionStatus, SubscriptionStatus, StreamType  } = require("@discordjs/voice");

const client = new Discord.Client({
  intents: [
    Discord.GatewayIntentBits.Guilds,
    Discord.GatewayIntentBits.GuildVoiceStates
  ]
});
 
client.on("ready", async () => {
    // 此处请替换为你自己获取到的目标语音频道对象
    const channel = client.channels.cache.get('你的语音频道ID');
    const connection = joinVoiceChannel({
        channelId: channel.id,
        guildId: channel.guild.id,
        adapterCreator: channel.guild.voiceAdapterCreator,
    });
  
    // 监听连接就绪状态后再执行播放逻辑
    connection.on(VoiceConnectionStatus.Ready, () => {
      const audioPlayer = createAudioPlayer();
      // 创建音频资源时指定流类型
      const resource = createAudioResource(createReadStream(join(__dirname, "plswork.mp3")), {
        inputType: StreamType.Arbitrary
      });
      
      const subscription = connection.subscribe(audioPlayer);
      audioPlayer.play(resource);

      audioPlayer.on(AudioPlayerStatus.Playing, () => {
          console.log("currently playing");
          console.log("resource started:", resource.started);
      });
      
      audioPlayer.on('error', error => {
          console.error(`Error: ${error.message} with resource`);
      });

      audioPlayer.on(AudioPlayerStatus.AutoPaused, () => {
          console.log("playback finished");
      });
    });

    // 新增连接错误监听方便排查问题
    connection.on('error', console.error);
});

client.login(token);

额外排查点

如果修改后仍然无法播放,可以检查以下配置:

  • 机器人拥有目标语音频道的连接、说话权限
  • 你使用的discord.js和@discordjs/voice版本为最新正式版,避免版本兼容问题
  • 本地的plswork.mp3文件路径正确,文件本身可正常播放

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:00:07