es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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>

“`

Tags:  , ,

Answer

  1. Avatar for 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:

    sent.reactions.cache.get('Carácter Unicode').count
    

    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:

    message.channel.send(message.content.slice(9 + message.content.split(' ')[1].length)).then(sent => { // Obtiene el mensaje que el usuario desea enviar y lo envía, también registra el ID del mensaje en la variable "sent".
                message.delete(); // Elimina el mensaje original del comando
                sent.react('👍'); // Agrega reacciones al mensaje enviado por el bot
                sent.react('👎'); // Agrega reacciones al mensaje enviado por el bot
    
                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);
            })
    

    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:

    client.commands.get('Poll').execute(message, args);
    

    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.

Comments are closed.