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

152
Visualizações
Responder a diferentes opciones de menú de selección

Estoy creando un bot de Discord y uno de mis comandos tiene un menú de selección. Pero parece que no puedo entender cómo tener una respuesta diferente a las diferentes opciones.

Aquí está el código para la interacción crear

 client.on('interactionCreate', async (click) => { if (!click.isSelectMenu() || click.user.id != interaction.user.id || click.guildId != interaction.guildId) return; });

Entonces, quiero responder a las diferentes opciones en mi comando. Una forma que creo que funcionaría sería:

 if (click.values[0]) { // do something } else if (click.values[1]) { // do something else }

Pero esto hizo la acción en click.values[0] cada vez.

En los documentos, también encontré una función llamada .createMessageComponentCollector , pero esto solo funciona para message y, dado que estoy usando comandos de barra, esto no está definido.

¿Cómo debo hacer esto en su lugar?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Hay algunas cosas sobre las que me gustaría señalarte

Cada menú de selección tiene un customId , por lo que cuando se usa el evento interactionCreate , siempre se recomienda tener el ID filtrando otras interacciones del menú de selección.

Luego viene click.values , devuelve una matriz de valores Suponiendo que su menú de selección proporciona selecciones múltiples, es bueno recorrer los valores en lugar de revisarlos manualmente a menos que haya una necesidad específica para eso

La razón por la que click.values[0] es verdadero siempre es porque cada vez que un usuario selecciona 1 o más valores, siempre tendrá el primero. Permítanme explicarlo con un ejemplo.

 const array = ['foo', 'bar']; // here your array has 2 elements // array[0] will always be true because Boolean(non empty string) always truthy // so your "else if" will never reach because first if is never false

Finalmente, para el recopilador, puede crear un recopilador en las interacciones después de obtener el ejemplo.

 const reply = await interaction.reply({ content: 'Some content', fetchReply: true }); // now reply is fetched and is of type Message or APIMessage // you can now create a collector on it as documentation tells

Nota: No se recomienda crear un recopilador para algo que dura mucho tiempo (los recopiladores son de corta duración). Por ejemplo, no debe usar recopiladores para funciones de menú seleccionadas, ya que los recopiladores no se quedan si su bot se reinicia, en su lugar, use el evento interacciónCrear para estos eventos prolongados. o nunca detener componentes como botones/menús de selección

¡Espero que te haya ayudado!

about 4 years ago · Juan Pablo Isaza Relatório

0

Aquí está lo básico de un coleccionista.

 client.on("interactionCreate", async (interaction) => { if (interaction.isSelectMenu()) { if (interaction.customId !== 'test') return; // If you have more that one select menu in code const filter = (selectInteraction) => { i.user.id === '123456789'; // add/remove filters according to your needs }; const collector = interaction.channel.createMessageComponentCollector({ filter, time: 10000 //in ms max: 1 }); collector.on('collect', async i => { if (i.customId === 'testid') { const value = i.values[0] if (value === 'first_value') { // your code here } if (value === 'second_value') { // your code here } }); collector.on('end', () => { // your code console.log('test') }) })

Más información sobre coleccionistas

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