【问题标题】:How to use clearInterval() to stop a loop in a discord bot如何使用 clearInterval() 停止不和谐机器人中的循环
【发布时间】:2019-11-15 14:20:38
【问题描述】:

所以我想要一个在 dms 中向某人发送垃圾邮件的命令和一个停止垃圾邮件的命令

我到了这里,但是每当我使用“dm stop”而不是仅仅停止命令时,它会使整个机器人崩溃

bot.on('message', message=>{

    let args = message.content.substring(PREFIX.length).split(" ");

    switch(args[0]){


    case 'dm':
            if(args[1] === 'spam'){
                const userdm = message.mentions.users.first()
                let dmloop = setInterval(function(){ userdm.send('Hoi'); }, 1)
            }        
            if(args[1] === 'stop'){
                clearInterval(dmloop)

            }else{
                message.channel.send('What do you want me to do with dms?');
                }
        break;

})

bot.login(token);

在终端中显示 clearInterval(dmloop) 中的“dmloop”未定义

【问题讨论】:

  • API 滥用警告。 “您不得...将 API 或 SDK 与包含任何恶意软件或其他有害代码或以任何方式促进垃圾邮件发送的任何应用程序结合使用...”(Developer Terms of Service,第 2.2 条)

标签: javascript loops bots discord discord.js


【解决方案1】:

尝试将您的区间变量 dmloop 从 ifs 中取出,如下所示:

let dmloop = null;
bot.on('message', message => {
    let args = message.content.substring(PREFIX.length).split(" ");
    switch (args[0]) {
        case 'dm':
        if (args[1] === 'spam') {
            const userdm = message.mentions.users.first();
            if(dmloop==null){
                dmloop = setInterval(function() {
                    userdm.send('Hoi');
                }, 1);}
            }
        }
        if (args[1] === 'stop') {
            clearInterval(dmloop);
            dmloop = null;
        } else {
            message.channel.send('What do you want me to do with dms?');
        }
        break;
    })//...

【讨论】:

  • 好吧,我试过了,它不再使机器人崩溃,但“dm stop”什么也没做,它永远都是垃圾邮件
  • 添加了一个 if 来检查变量是否已初始化,因此它不会再次初始化它,并且还设置为 null 以在调用 stop 时对其进行初始化。
  • 好的,所以我尝试了这个,当我执行“-dm”时,它会向聊天中发送垃圾邮件,直到我关闭机器人,当我执行垃圾邮件命令时,它会发送垃圾邮件到 dm 频道和服务器通道“-dm stop”中的响应没有做任何事情,我也不得不移动 dmloop = null;超过 clearInterval(dmloop);
猜你喜欢
  • 1970-01-01
  • 2020-10-08
  • 2020-11-10
  • 2021-11-24
  • 2021-10-05
  • 2021-08-19
  • 2020-11-16
  • 2020-06-30
  • 2020-11-18
相关资源
最近更新 更多