Первый постер здесь. Извините, если это очевидное исправление, но я очень плохо знаком с миром nodejs и программированием в целом.
В настоящее время я пытаюсь создать бота Discord, который позволит любому пользователю инициировать " любите это или ненавидите "голосуйте с командой! Как только голосование инициировано, бот отправляет сообщение, объявляющее голосование, а затем реагирует на свое собственное сообщение смайликами сердца и черепа, чтобы обозначить варианты любви и ненависти соответственно. Эта часть работает так, как задумано.
После того, как пройдет определенное количество времени (очень короткий период), бот должен подсчитать реакции смайликов и выяснить, есть ли еще сердца, больше черепа, или равное количество обоих. В зависимости от результатов, он отправит еще одно сообщение с объявлением результатов голосования. Эта часть не работает должным образом.
В существующем виде я могу заставить бота ответить на мою команду! Voice, отправив новое сообщение в чат и отреагировав на это сообщение правильные смайлики. Бот также будет ждать установленное количество времени и объявит результат голосования. Тем не менее, он всегда объявляет, что голосование было нейтральным, независимо от того, на какие эмодзи я нажал до истечения таймера (конечно, убедившись, что я не нажал на оба).
Мой код для сравнения количества голосов явно не работает должным образом. Тем не менее, потратив несколько часов, пытаясь найти разные варианты, я не могу найти решение для моей жизни, и это сводит меня с ума. Есть ли часть этого, что это неправильно? И если да, то как мне это исправить?
Огромное спасибо всем, кто может вмешаться. Поработав некоторое время и найдя бесчисленные исправления в вопросах других людей в прошлом, я решил наконец обратиться к милые люди в Stack Overflow за помощь. Ребята, вы молодцы!
const Discord = require('discord.js');
const bot = new Discord.Client();
bot.on('message', function(message){
if(message.content.toLowerCase().startsWith('!vote'))
{
var heartCount = 0;
var skullCount = 0;
message.channel.send(
"The vote begins! Do we love it or hate it?")
.then(async function (message){
try {
await message.react("❤️")
await message.react("?")
}
catch (error) {
console.error('One of the emojis failed to react.');
}
})
const filter = (reaction, user) => {
return ["❤️","?"].includes(reaction.emoji.name) && user.id === message.author.id };
message.awaitReactions(filter, {time: 10000})
.then(collected => {
for (var i = 0; i < collected.length; i++){
if (collected[i].emoji.name === "❤️")
{heartCount++;}
else if (collected[i].emoji.name === "?")
{skullCount++;}
};
if (heartCount > skullCount){
message.channel.send("We love it!");
}
else if (heartCount < skullCount){
message.channel.send("We hate it.");
}
else {
message.channel.send("We're neutral about it.");
}
})
}
});
bot.login(process.env.BOT_TOKEN);