我设置了一个不和谐的机器人,用于接收youtube的url并在当前的语音频道播放它们,启动bot命令的用户在其中。bot可以创建一个由多个youtube链接组成的队列,但是当队列中的第一首歌播放完后,下面的代码将给我一个问题,在这个问题上,它运行逻辑的次数与队列中的歌曲一样多。例如,如果队列中有6首歌曲,则server.dispatcher.on(finish)逻辑在一行中执行6次,逐个删除队列中的歌曲,直到队列中没有歌曲,然后bot与语音通道断开连接。
function playF(connectionF, message){
console.log("starting the play function ");
var server = servers[message.guild.id];
if(!playingMusic){
console.log("not playing music, running this logic ");
server.dispatcher = connectionF.play(ytdl(server.queue[0], {filter: "audioonly"}));
server.queue.shift();
playingMusic = true;
}
server.dispatcher.on("finish", () => {
console.log("running the finish logic ");
console.log("heres your queue length in finish " + server.queue.length);
playingMusic = false;
if(server.queue[0]){
playF(connectionF, message);
} else {
connectionF.disconnect();
}
});
}
```发布于 2021-09-22 00:59:45
因此,我发现需要进行一些重构,以便将.on("finish")添加到第8行的server.dispatcher中。
function playF(connectionF, message){
console.log("starting the play function ");
var server = servers[message.guild.id];
if(!playingMusic){
playingMusic = true;
console.log("not playing music, running this logic ");
server.dispatcher = connectionF.play(ytdl(server.queue[0], {filter: "audioonly"})).on("finish", () =>{
playingMusic = false;
if(server.queue[0]){
playF(connectionF, message);
} else {
connectionF.disconnect();
}
});
server.queue.shift();
}
}
```https://stackoverflow.com/questions/69276849
复制相似问题