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

112
Vistas
cómo obtener una devolución de llamada de collection.each{fn} discord.js

Quiero hacer un bot de discordia que obtenga todos los archivos adjuntos de imágenes y los fusione en 1 pdf.

He dividido mi problema en 2 pasos, descargar y convertir a pdf.

Tuve éxito al descargar y convertir 1 imagen, usando devoluciones de llamada en la función de descarga.

Pero ahora quiero descargar múltiples imágenes que luego se fusionarán en 1 pdf. No puedo hacer una devolución de llamada para cada imagen que descargo porque quiero esperar hasta que se descarguen todas las imágenes para fusionarlas.

(Nombro las imágenes según su número para que me sea más fácil identificarlas en el proceso de fusión).

Aquí está mi código:

 client.on('messageCreate', msg => { if (msg.author.bot) return; file_number = 0 var attachments = msg.attachments attachments_size = attachments.size attachments.each(attachment => { var url = attachment ? attachment.url : null; file_number += 1 file_name = file_number + '.jpeg' download(url, file_name, function(){ }) }) convert_merge() }); var download = function(uri, filename, callback){ request.head(uri, function(err, res, body){ request(uri).pipe(fs.createWriteStream('./files/'+ filename)).on('close', callback); }); }; var convert_merge = function(callback){ var doc = new PDFDocument var doc_width = doc.page.height var doc_height = doc.page.width var writeStream = fs.createWriteStream('./files/merged.pdf') doc.pipe(writeStream) doc.rotate(90, {origin: [doc_width/2, doc_height/2]}); doc.image('./files/'+ `1.jpeg`, { fit: [doc_width+25, doc_height+35], align: 'center', valign: 'center' }); for (var i = 1; i <= file_number ; ++i) { doc.addPage() .image('./files/'+ i + `.jpeg`, { fit: [doc_width+25, doc_height+35], align: 'center', valign: 'center' }); } doc.end() };

Este es el error que tengo:

 node:internal/fs/utils:344 throw err; ^ Error: ENOENT: no such file or directory, open './files/1.jpeg'

Esto significa que 1.jpeg aún no existe, esto solo puede significar que convert_merge se está activando antes de que los attachments.each{} finalicen

Esto me hace dudar de 2 cosas:

  1. ¿Por qué JavaScript activa la función de conversión antes de la llamada atachement.each?
  2. ¿Hay una devolución de llamada para el archivo adjunto. cada llamada?

Finalmente, ¿cómo debo abordar este problema? Pensé en verificar si existe el último archivo del archivo adjunto antes de comenzar la conversión, pero no tuve éxito y no parecía ser el camino correcto.

Buscando algún consejo

Siéntase libre de pedir cualquier cosa

Gracias de antemano por tu ayuda :)

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