我最近开始研究这个音乐机器人,但是队列系统出现问题。我要求多件事情,最终只能玩两件事情。
代码:
<button id="button" onclick="function1">BIG BUTTON THING</button>
document.getElementById("button").onclick=function2
queue变量开头是一个空数组。
答案 0 :(得分:1)
根据您的逻辑,只能播放2个项目。
您的逻辑只允许播放Stream 2次:第一次是在队列为空时,第二次是在第一次播放结束时。关于第二局结束没有任何动作。
更新逻辑,以便在playStream结束且队列不为空时每次调用playStream,例如:
...
case "~play":
if (queue.length == 0) {
queue.push(args[1]);
playNext();
} else queue.push(args[1]);
break;
...
function playNext() {
dispatcher = guild.voiceConnection.playStream(ytdl(queue[0], {
filter: 'audioonly'
})).on('end', () => {
console.log('finished');
queue.shift();
// if more songs in the queue call playNext()
// this will allow you to playNext every time when playStream ends
if (queue.length > 0) {
playNext();
}
});
}
...