#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);
});