【发布时间】:2020-11-20 01:03:35
【问题描述】:
我知道为什么,但是如果我跳过或停止一首歌曲并且队列变空,则机器人断开连接的 timeout2 倒计时不会继续。我在没有 clearTimeout() 的情况下对其进行了测试,并且倒计时有效,所以也许我应该在其他地方声明 cleartimeout 或者在它之外添加一些东西..帮帮我,我想不通
function play(guild, song) {
const serverQueue = queue.get(guild.id);
if (!song) {
var timeout = setTimeout(function() {const dispatcher = serverQueue.connection.play('./911.mp3');}, 1500);
var timeout2 = setTimeout(function() {serverQueue.voiceChannel.leave();}, 10000);
clearTimeout(timeout2);
queue.delete(guild.id);
return ;
}
options = {
quality: 'highestaudio'
};
const dispatcher = serverQueue.connection
.play(ytdl(song.url, { highWaterMark: 1 << 25 }))
.on("finish", () => {
serverQueue.songs.shift();
play(guild, serverQueue.songs[0]);
})
.on("error", error => console.error(error));
dispatcher.setVolumeLogarithmic(serverQueue.volume / 5);
serverQueue.textChannel.send(":musical_note: Started Playing: " + `**${song.title}**`);
}
【问题讨论】:
-
为什么会有 clearTimeout 呢?
-
@James 因为如果我在 10 秒倒计时期间播放歌曲,机器人将不再断开连接。
-
我认为如果他们成功播放歌曲,而不是尝试播放 (!song),您想中止断开连接。也许你需要一个 else 来做 clearTimeout。
标签: javascript discord discord.js settimeout