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

116
Visualizações
¿Cómo escuchar dos usuarios en paralelo?

Tengo el siguiente código:

 module.exports = { name: 'd', description: 'test', execute(client, message, args) { const Discord = module.require("discord.js"); message.channel.send("Yes or no?") let player1 = '0'; function firstListen() { const collector1 = new Discord.MessageCollector(message.channel, m => m.author.id === 'HERE_ID_PLAYER_1', { time: 10000 }); collector1.on('collect', message => { if (message.content.toLowerCase() == "yes") { player1 = 'yes'; message.channel.send("Player 1 chose YES"); } else if (message.content.toLowerCase() == "no") { player1 = 'no'; message.channel.send("Player 1 chose NO"); } }) }; let player2 = '0'; function secondListen() { const collector2 = new Discord.MessageCollector(message.channel, m => m.author.id === 'HERE_ID_PLAYER_2', { time: 10000 }); collector2.on('collect', message => { if (message.content.toLowerCase() == "yes") { player2 = 'yes'; message.channel.send("Player 2 chose YES"); } else if (message.content.toLowerCase() == "no") { player2 = 'no'; message.channel.send("Player 2 chose NO"); } }) }; async function runListen() { message.channel.send('start'); await firstListen(); await secondListen(); await message.channel.send(`Player 1 chose ${player1} and Player 2 chose ${player2}`); } runListen(); } }

Primero, quiero enviar un mensaje del bot "¿Sí o no?",
entonces quiero esperar hasta que ambos usuarios respondan "sí" o "no", o hasta que se acabe el tiempo,
y solo después de eso quiero enviar el resultado final "El jugador 1 eligió sí/no y el jugador 2 eligió sí/no"
Pero no puedo entender cómo trabajar con .then en js, o cómo usar correctamente async/await..(
Porque, Player2 puede responder más rápido que Player1. Necesita escuchar a ambos usuarios en paralelo, y deben tener un temporizador común (por ejemplo: 10 segundos para ambos). PD: tengo 3 preguntas:

  1. ¿Cómo puedo obtener resultados de cada función después de que los usuarios eligieron algo? (hacer algo con su elección)
  2. ¿Cómo puedo esperar hasta que terminen ambas funciones y solo después de eso enviar un mensaje con los resultados?
  3. ¿Cómo puedo atrapar cuando el tiempo se acaba? y envía "Jugador1, se acabó el tiempo" o "Jugador2, se acabó el tiempo"
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

¡Gracias a todos! La respuesta fue: necesita usar promesa y promesa.todo)

 module.exports = { name: 'd', description: 'test', async execute(client, message, args) { const Discord = module.require("discord.js"); message.channel.send("Yes or no?") var p1 = new Promise((resolve, reject) => { const collector1 = new Discord.MessageCollector(message.channel, m => m.author.id === '568481051895136278', { max: 1, time: 10000 }); collector1.on('collect', message => { if (message.content.toLowerCase() == "yes") { resolve('yes'); message.channel.send("Player 1 chose YES"); } else if (message.content.toLowerCase() == "no") { resolve('no'); message.channel.send("Player 1 chose NO"); } }) collector1.on('end', (collected, reason) => { if (reason === 'time') { resolve('time'); message.channel.send('Player 1, Time is up!'); } }); }); var p2 = new Promise((resolve, reject) => { const collector2 = new Discord.MessageCollector(message.channel, m => m.author.id === '568481051895136279', { max: 1, time: 10000 }); collector2.on('collect', message => { if (message.content.toLowerCase() == "yes") { resolve('yes'); message.channel.send("Player 2 chose YES"); } else if (message.content.toLowerCase() == "no") { resolve('no'); message.channel.send("Player 2 chose NO"); } }) collector2.on('end', (collected, reason) => { if (reason === 'time') { resolve('time'); message.channel.send('Player 2, Time is up!'); } }); }); Promise.all([p1, p2]).then(values => { console.log(values); }); } }
about 4 years ago · Juan Pablo Isaza Relatório
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