使用 discord.js 无限播放音频

Jos*_*ood 1 javascript

我正在制作一个不和谐的机器人,它在频道处于活动状态时加入频道并重复播放音频剪辑。

我尝试通过递归调用函数来做到这一点:

client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`)
let vc = client.channels.get(voiceChannel);

vc.join().then(connection => {

    function play (connection) {
        const stream = ytdl('https://www.youtube.com/watch?v=fh0_sjZGJSc', { filter: 'audioonly' });
        const dispatcher = connection.playStream(stream, streamOptions)
        dispatcher.on('end', play(connection));
    }

    play(connection)
})
});
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我收到此错误:

Error: spawn ffmpeg EAGAIN
at _errnoException (util.js:999:13)
at Process.ChildProcess._handle.onexit (internal/child_process.js:201:19)
at onErrorNT (internal/child_process.js:389:16)
at process._tickCallback (internal/process/next_tick.js:152:19)
Run Code Online (Sandbox Code Playgroud)

谁能告诉我如何使用 discord.js 永久重复播放音频循环?谢谢!

Sjo*_*Dal 6

加入语音频道后,您将设置以下侦听器:

dispatcher.on('end', play(connection));
Run Code Online (Sandbox Code Playgroud)

请注意,您没有在此处提供回调函数;相反,您正在立即再次调用播放。您看到的错误是因为您递归生成了太多 FFMPEG 实例(ytldl 用于对视频进行转码的库)。要解决这个问题,您只需提供一个实际的回调函数,如下所示:

dispatcher.on('end', () => { 
    play(connection);
});
Run Code Online (Sandbox Code Playgroud)

希望有帮助。