我一直在尝试解决这个问题,但似乎没有任何效果。每当有人尝试在计时器的 1 小时内使用命令 pqtimer 时,我希望它被忽略,因为只有在计时器完成后才允许用户激活计时器。
我已经阅读了一些关于异步函数的内容,但我无法让它工作,所以我不确定这是否是解决它的正确方法。
希望得到一些帮助!
if(command === 'pqtimer') {
message.channel.send('Patreon quest timer started! (1hr)');
setTimeout(function(){
message.channel.send('Time for a new quest!');
message.author.send(`Time for a new quest!`);
}, 3600000);
}
答案 0 :(得分:0)
setTimeout()
返回一个 ID。您可以在某些全局状态中记住此 id,并且仅在全局状态中没有 timeoutid 时创建新的超时。别忘了把它从全局状态中移除,一旦超时回调被执行
let myGlobalState = {
timeout = 0;
}
if (command === 'pqtimer' && !myGlobalState.timeout) {
message.channel.send(' ... ');
myGlobalState.timeout = setTimeout(function() {
...
myGlobalState.timeout = 0;
}, 3600000);
}