我想停止计时器(不一致)

时间:2019-11-23 01:00:57

标签: javascript discord discord.js

我是这个世界的新人,我正在尝试。

我正在尝试构建计时器机器人...现在我有一个小问题,我想随时停止计时器。

bot.on('message', message => {
let timer = setInterval(() => {
    if (message.content.startsWith('!start'))
        message.channel.send("I print something");
}, 10 * 1000)

if (message.content.startsWith('!stop')) {
    message.channel.send("Interaval Cleared");
    clearInterval(timer);
}})

当我在不和谐频道中输入!stop时,它向我显示该消息,但并没有停止我的计时器...但这没用。

能帮我吗?

谢谢

祝你有美好的一天!

1 个答案:

答案 0 :(得分:0)

每次运行该功能时,您都将开始一个新的间隔。另外,您的timer值的作用域是每个函数调用,而不是在调用之间“共享”,您需要使其在两个调用之间可用。您想要的行为应该看起来像这样:

bot = {}
bot.timer = 0; // ensures clearInterval doesn't throw an error if bot.timer hasn't been set
bot.listen = message =>{
    if(message == 'start'){
        clearInterval(bot.timer);   // stops the interval if it been previously started
        bot.timer = setInterval(()=>console.log('I print something'),1000)
    }
    if(message == 'stop') clearInterval(bot.timer);
}
相关问题