我试着解决这个问题已经有一段时间了,但是似乎什么都没有起作用。每当有人试图在计时器的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);
}
发布于 2021-01-09 02:29:04
setTimeout()
返回一个ID。你可以在某个全局状态下记住这个id,并且只有在全局状态下没有timeoutid时才会创建一个新的超时。执行超时回调后,不要忘记将其从全局状态中删除
let myGlobalState = {
timeout = 0;
}
if (command === 'pqtimer' && !myGlobalState.timeout) {
message.channel.send(' ... ');
myGlobalState.timeout = setTimeout(function() {
...
myGlobalState.timeout = 0;
}, 3600000);
}
https://stackoverflow.com/questions/65634338
复制相似问题