Discord.js сообщение повторяется после каждого выполнения

#discord.js

Вопрос:

Всякий раз, когда я иду тестировать своего бота, он работает в первый раз, а затем повторяется каждый раз при его выполнении (если команда используется 3 раза, она повторяется 3 раза).

   if (message.author.bot) return;
  if(message.content === 'admin') {
    message.channel.send('please type test2');
    bot.on('message', message => {
      if(message.content === 'test2') {
        message.channel.send('ok:D');
        return;
      }
    })
  }
})
 

Заранее спасибо:)

Комментарии:

1. Есть ли у вас прослушиватель событий внутри прослушивателя событий? то bot.on('message' ... есть внутри bot.on('message' ... ? Это неправильный способ проверки ответов. Вместо этого вам следует обратиться к коллекционерам: discordjs.guide/popular-topics/collectors.html

Ответ №1:

Вам нужно поместить свои if заявления в message событие и поместить Сборщик или функцию ожидания для сбора сообщений.

Здесь я использовал awaitMessage , чтобы определить, что отправитель сообщения-тот же автор, который отправил администратора :).

 bot.on('message', async message => {
    if (message.author.bot) return;

    if (message.content == "admin") {
        await message.reply('Enter test2');

        const filter = m => m.author.id == message.author.id;
        await message.channel.awaitMessages(filter, {
            maxMatches: 1,
            time: 30000
        }).then(collected => {
            const _first = collected.first().content.toLowerCase();

            if (_first == "test2") {
                message.channel.send("OK!")
            }

        }).catch(() => {
            return message.reply('No answer after 30 seconds, operation canceled.');
        });
    }
})
 

Будьте в Безопасности $