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.

Guardando una variable de un mensaje en discord.js

Me gusta guardar mis mensajes directos enviados a un usuario en una variable local. ¿Cómo puedo hacer esto?
Me gustaría reaccionar a ese mensaje, pero si uso .then() después o antes del .catch() requerido, el registro dice “No se pueden enviar mensajes a este usuario”, sin él, puedo enviar el mensaje…

¡Gracias!

Código:

cliente.usuarios.cache.get(memb.id).send(emb5).catch((msb) => {
escribir(“Error”);
}).then((msg) => {
msg.reaccionar(one);
});

“one” es el emoji…

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para guardar el mensaje enviado a un usuario en una variable local, puedes asignar el valor de retorno de la función send() a una variable. Por ejemplo:

    const message = await client.users.cache.get(memb.id).send(emb5);
    

    Luego, puedes usar esta variable más tarde para reaccionar al mensaje de la siguiente manera:

    message.react(one);
    

    Si estás recibiendo un error que dice “No se pueden enviar mensajes a este usuario”, probablemente sea porque el usuario ha bloqueado al bot o ha desactivado los mensajes directos de los miembros del servidor. En este caso, se ejecutará el bloque catch() con el mensaje de error pasado como argumento. Sin embargo, si aún deseas intentar reaccionar al mensaje incluso si el envío falla, puedes mover el bloque then() fuera del bloque catch() de la siguiente manera:

    client.users.cache.get(memb.id)
      .send(emb5)
      .catch((err) => {
        write("Error: " + err.message);
      });
    
    message.react(one);
    

    De esta manera, se intentará enviar el mensaje y el bot intentará reaccionar a él sin importar si el envío tiene éxito o falla.

Comments are closed.