#javascript #node.js #discord.js
#javascript #node.js #discord.js
Вопрос:
Бот должен возвращать сообщение «никто не вошел», когда никто не участвует в розыгрыше, но даже если это так, он все равно говорит «победитель @Dbot». Я что-то упустил в коде?
let msg = await message.channel.send(
"**🥳GIVEAWAY🥳**",
{
embed: {
title: `${(args.slice(2, args.length)).join(" ")}`,
color: 3447003,
description: `React with 🎉 to enter!nTime to enter: ${args[0]}nWinners: ${args[1]}`,
footer: {
text: `dbot 2021 © giveaway ends ${endTime.toLocaleTimeString()}`
}
}
});
await msg.react('🎉')
setTimeout(() => {
msg.reactions.cache.get('🎉').users.remove(msg.author.id)
setTimeout(() => {
let winner = msg.reactions.cache.get('🎉').users.cache.random();
if (msg.reactions.cache.get('🎉').users.cache.size < 1) {
msg.channel.send(`No one entered giveaway :sadge:`);
}
if (!msg.reactions.cache.get('🎉').users.cache.size < 1) {
console.log(winner);
msg.channel.send(`${winner} is our winner!🎉🎉🎉 check 1`);
}
}, 3000);
}, timerMilliseconds);
Ответ №1:
Это потому, что вы сначала проверяете, если users.cache.size
меньше 1, то if (!msg.reactions.cache.get('🎉').users.cache.size < 1)
.
users.cache.size
вернет число, а в JavaScript !number
вернет логическое значение. Проверьте фрагмент ниже:
const num0 = 0;
const num1 = 1;
const num2 = 2;
console.log(num0, !num0);
console.log(num1, !num1);
console.log(num2, !num2);
Это означает, что с помощью вашего второго оператора if вы проверяете значение if false
меньше, чем 1
, что верно в JavaScript.
Чтобы исправить это, вам просто нужно преобразовать второй оператор if в оператор else:
if (msg.reactions.cache.get('🎉').users.cache.size < 1) {
msg.channel.send(`No one entered giveaway :sadge:`);
} else {
console.log(winner);
msg.channel.send(`${winner} is our winner!🎉🎉🎉 check 1`);
}
Комментарии:
1. Это решение дает мне тот же результат.. «@dbot — наш победитель!:tada::tada:: tada:»
Ответ №2:
Вам нужно включить MEMBERS
намерение в консоли разработчика Discord и добавить это намерение в свой ClientOptions
.
Комментарии:
1. Как это связано с этим вопросом?
2. Я неправильно истолковал вопрос и воспринял его как «бот всегда выбирает себя», что и решило бы это.