Discord.js 机器人试图在语音通道上播放 mp3 文件 - 没有错误,也没有声音

Discord.js bot trying to play mp3 file on voice channel - no error and also no sound

我的机器人加入语音频道,然后离开并发送消息“播放正常!”,但不播放 mp3。我在 Windows 并且我已经检查过我可以通过命令行使用 ffmpeg 播放 mp3 文件。有人知道怎么回事吗?

const path = require('path')

client.channels.fetch('Channel_ID').then(channel => {
     console.log(channel.name)
     console.log(path.join(__dirname, 'music.mp3'))
     channel.join().then((connection) => {
         const dispatcher = connection.play(path.join(__dirname, 'music.mp3'));
         dispatcher.on("speaking", speaking => {
             if (!speaking) {
               channel.leave()
               msg.channel.send("Playing ok!")
             }
        });         
   });
});

更新: 我为 'finish' 事件更改了 'speaking',并且还尝试了评论中的音频文件。现在,bot加入语音频道,在mp3时长停留时间不变,然后离开语音频道,但还没有声音。

更新二: 我现在将 ffmpeg 添加到我的 PATH 中。机器人显示一个绿色圆圈,好像在播放什么,但又没有声音。为了以防万一,我将我的机器人置于管理员权限之下,但这还不够。

感谢您的帮助。

使用 discord.js v12.5.3.

要使 discord.js 语音正常工作,您需要安装以下软件包(如 docs under the installation section): either @discordjs/opus or opusscript.

中所述
npm install @discordjs/opus

另外 discord.js 取决于 prism-media 并且您应该安装 ffmpeg 才能正常工作。

npm install ffmpeg-static

如果您不想将 ffmpeg 安装为 npm 包并且您已经安装了 ffmpeg,请确保将其添加到 PATH 环境变量并重新启动您的工作环境。

OP 说,在将 ffmpeg 添加到 PATH 后重新启动他的计算机。

来自评论的其余信息:

Also your message "Playing ok!" is wrong, it means that the bot is not speaking... See above you have if (!speaking) { ... }. So when you get this message after the bot joined the voice channel, something is wrong, because the StreamDispatcher ended right away.

To debug this, take a look at the error event of StreamDispatcher.