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.

Cómo detectar un mensaje de Discord que ha sido editado (pero no actualizado)?

Estoy usando Node y Discord.JS, tratando de ver si hay alguna manera de diferenciar entre los tipos de ediciones cada vez que se edita un mensaje, para que un bot pueda molestar al usuario por editar su mensaje. Hasta ahora, la función funciona bien y es la siguiente:

let responses = ["algunas", "respuestas"];
bot.on('messageUpdate', (message) => {
     let result = responses[Math.floor(Math.random()*(responses.length)-1)]
     message.channel.send(result);
})

Sin embargo, esto detecta todas las actualizaciones de mensajes, incluyendo cuando se actualiza un enlace con un embed. ¿Hay alguna forma de diferenciar entre una edición deliberada del usuario y un mensaje que se actualiza con un embed a través de los event listeners, o tendré que hacer un truco con una declaración if..else?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para diferenciar entre las ediciones deliberadas del usuario y las actualizaciones de mensajes con un embed, puedes utilizar los parámetros oldMessage y newMessage en el listener del evento messageUpdate.

    Aquí tienes una función actualizada que revisa si la propiedad content de los objetos oldMessage y newMessage son diferentes:

    let responses = ["algunas", "respuestas"];
    bot.on('messageUpdate', (oldMessage, newMessage) => {
      if (oldMessage.content !== newMessage.content) {
        let result = responses[Math.floor(Math.random() * responses.length)];
        newMessage.channel.send(result);
      }
    });
    

    De esta manera, el bot solo molestará al usuario si editó activamente el contenido de su mensaje, y no si se agregó o actualizó un embed.

Comments are closed.