#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.');
});
}
})
Будьте в Безопасности $