Бот автоматически реагирует только на один dm

#node.js #discord.js

#node.js #discord.js

Вопрос:

итак, я пытаюсь заставить бота ответить на отправленный dm. Однако я хочу, чтобы он отвечал человеку только один раз, независимо от количества отправленных сообщений. Вот мой код на данный момент.

Примечание: я специально установил функцию тайм-аута, я хочу, чтобы у нее был 5-секундный период ожидания.

 bot.on("message", async (message) => {
  setTimeout(function () {
    if (message.channel.type == "dm") {
      message.author.send("Hi");
    }
  }, 5000);
});
  

Ответ №1:

Вы можете использовать Set()

 const users = new Set();
bot.on('message', async (message) => {
 setTimeout(() => {
  if (message.channel.type == 'dm') {
   if (users.has(message.author.id)) return; // if user has already sent dm
   message.author.send('Hi');
   users.add(message.author.id); // if not, add user to the set and send the message
  }
 }, 5000);
});