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

124
Vistas
Cómo obtener el valor de una variable en un colector

Estoy experimentando un problema que, estoy seguro, está relacionado con async/await. Entonces, lo que estoy tratando de lograr al escribir este código es que anteriormente creé una inserción con dos botones, "Aprobado" y "Denegado" (esa parte del código no se incluye arriba). Entonces, lo que quiero obtener es que si el usuario presiona el botón Aprobar, la variable de aprobación se establece en "aprobado", de lo contrario, "denegado". Y he hecho esto if (await approvalChoice != "approved") return; por lo que si el valor no se aprueba, el código dejará de ejecutarse. Pero incluso con la variable " esperar ", la variable " aprobaciónChoice " no está definida (última línea de código)

 let senderID = interaction.member.user.id; const filter = i => (i.customId === `approved_${senderID}` || i.customId === `denied_${senderID}`) && i.user.id === interaction.member.user.id; const collector = interaction.channel.createMessageComponentCollector({ filter, time: 60000 }); let approvalChoice; collector.on('collect', async i => { if (i.customId === `approved_${senderID}`) { await i.update({ content: 'Operation approved.', components: [] }); approvalChoice = "approved"; collector.stop(); } else if (i.customId === `denied_${senderID}`) { await i.update({ content: 'Operation cancelled.', components: [] }); approvalChoice = "denied"; collector.stop(); } }); await collector.on('end', async (collected) => { if (approvalChoice == "approved") { await interaction.editReply({content: "_**Processing...**_"}); } else { await interaction.deleteReply(); } }); if (await approvalChoice != "approved") return;
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Porque el código no se detendrá allí y esperará a que finalice su recopilador y luego continúe ejecutándose.
Puede poner todo lo que debe ejecutarse después de presionar el botón en la parte collector.on('end') , o usar awaitMessageComponent en lugar del colector formado por objetos. El último envolvió el colector normal y puede esperarlo para evitar que su código siga ejecutándose antes de que el usuario presione el botón.

about 4 years ago · Juan Pablo Isaza Denunciar
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