Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

597
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda