Как использовать clearInterval (), чтобы остановить цикл в боре разногласий - PullRequest
0 голосов
/ 05 июля 2019

Итак, я хотел команду, которая спамит кого-то в 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);

В терминале написано, что "dmloop" в clearInterval (dmloop) не определено

1 Ответ

1 голос
/ 05 июля 2019

Попробуйте извлечь переменную интервала 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;
    })//...
...