Discord.js no está devolviendo correctamente la cantidad de ciertas reacciones en un mensaje.
Actualmente estoy programando un bot de Discord con la biblioteca discord.js. Actualmente estoy agregando un comando de encuesta. El usuario ingresará algo que se vea así:
sh.poll (Cantidad de tiempo que durará abierta la encuesta) (El contenido de la encuesta)
Todo el otro código funciona bien, puede leer correctamente la cantidad de tiempo que el usuario ingresa y puede leer el texto que se supone que muestra la encuesta. El problema surge cuando la encuesta tiene que cerrarse.
El bot comenzará leyendo las reacciones que están actualmente en la encuesta, luego mostrará si la encuesta fue exitosa o no. Sin embargo, el comando que estoy usando:
Message.reactions.cache.get(‘Character Unicode’).count
Siempre devuelve 1.
Siento que hay algo muy simple que me estoy perdiendo, pero simplemente no puedo encontrarlo.
“`
message.channel.send(message.content.slice(9 + message.content.split(' ')[1].length)).then(sent => { // Obtiene el mensaje que el usuario quiere enviar y lo envía, también registra el ID del mensaje en la variable enviada.
message.delete(); // Elimina el mensaje de comando original
sent.react('👍'); // Agrega reacciones al mensaje enviado por el bot
sent.react('👎'); // Agrega reacciones al mensaje enviado por el bot
<pre><code> setTimeout(function(){ // Espera una cantidad de tiempo determinada anteriormente en el código
console.log(sent.reactions.cache.get('👍').count); // Este es el comando principal con el problema, siempre imprimirá 1 incluso si se agregan 2 o 3 reacciones
}
}, waitTime);
})
</code></pre>
<code>
</code>
client.on('messageCreate', message => {
if (!message.content.startsWith(prefix) || message.author.bot) {
return;
}
<pre><code>const args = message.content.slice(prefix.length).split(/ +/); // Elimina el prefijo
const command = args.shift().toLowerCase(); // Convierte el texto en minúsculas
} else if (command.startsWith('poll')) { // Si el mensaje tenía el comando poll
client.commands.get('Poll').execute(message, args); // Ejecuta el código mostrado arriba
</code></pre>
“`
davy.ai
Comando de encuesta en Discord.js – Problema al leer reacciones
Descripción
Actualmente estoy programando un bot de Discord utilizando la biblioteca Discord.js y estoy en proceso de agregar un comando de encuesta. El comando de encuesta implica que el usuario introduzca el contenido de la encuesta y la duración durante la cual la encuesta debe permanecer abierta. El código para ingresar y mostrar la encuesta parece funcionar correctamente, pero cuando se alcanza el tiempo de cierre de la encuesta, el bot tiene problemas para leer las reacciones en la encuesta.
El comando utilizado para leer las reacciones en la encuesta es:
donde
sent
es el objeto de mensaje correspondiente a la encuesta. Sin embargo, al utilizar este comando, siempre devuelve 1, independientemente de la cantidad de reacciones que se hayan agregado a la encuesta.Código
El bloque de código utilizado para el comando de encuesta es:
La variable
waitTime
se define previamente en el código y determina cuánto tiempo debe permanecer abierta la encuesta.Luego, el objeto de mensaje se pasa a la función
execute
utilizando:Problema
El problema parece estar con el comando
sent.reactions.cache.get('👍').count
. Por alguna razón, siempre devuelve 1 incluso si varios usuarios han reaccionado a la encuesta. Esto podría indicar que el bot no reconoce las reacciones como entidades separadas, sino que cuenta todas las reacciones como una sola.Próximos pasos
Necesitaré investigar más sobre el objeto
reactions
en Discord.js para ver si hay una mejor manera de contar las reacciones en un mensaje. Además, deberé asegurarme de que los caracteres Unicode utilizados para representar las reacciones sean correctos y coincidan con las reacciones previstas.