Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

598
Vistas
Discord.js v13 - Extraer imagen incrustada adjunta en el mensaje

Estoy escribiendo una función que devuelve una imagen incrustada de un mensaje. Quiero decir, Imagen de MessageEmbed.

La cosa: Discord resuelve la URL de la imagen y devuelve un objeto de inserción de imagen en su lugar (se puede encontrar usando la propiedad message.embeds ).

Aquí hay una imagen de ejemplo

Y aquí está el problema principal:

Cuando intente acceder a la propiedad embeds desde el objeto del mensaje, obtendrá una matriz vacía como esta: [] . Pero accediendo de nuevo obtendrá el resultado esperado. [ [MessageEmbed] ] Un ImageEmbed.

El problema con esto es que Discord tarda un tiempo en resolver la URL y se muestra en el mensaje como archivo adjunto, y no quiere usar la función setTimeout para esperar. Porque si el mensaje contiene varias URL de imágenes, esto llevará más tiempo. Bueno... intentar acceder a la propiedad embeds después de esa operación no funcionará correctamente porque devuelve nuevamente... una matriz vacía.

Entonces, al buscar el evento messageUpdate , encontré que emite el mismo mensaje con la URL de la imagen resuelta en la propiedad embeds . Así que hago este código:

 async function getImageEmbeds(message) { // Access into Client to listen the messageUpdate event. const { client } = message; const collectedImages = new Array(); // Waits the event emittion await new Promise((resolve) => { function fnListener(oldmsg, newmsg) { if (message.id !== newmsg.id) return; const imageEmbeds = newmsg.embeds.filter(embed => embed.thumbnail !== null).map(embed => embed.thumbnail); collectedImages.push(...imageEmbeds); client.removeListener("messageUpdate", fnListener); // Ends this promise. resolve(true); } client.on("messageUpdate", fnListener); }) return collectedImages; }

Este código funciona como se esperaba (espera la resolución de la URL de la imagen que se emitirá en el evento messageUpdate y devuelve una matriz con la imagen incrustada resuelta). Pero hay un nuevo problema, la función esperará indefinidamente si el mensaje no tiene una URL de imagen.

  • ¿Cómo puedo decirle a la función si el mensaje tiene una URL de imagen sin resolver?

¿Alguna sugerencia que pueda solucionar este problema?

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda