Tengo un mensaje con 2 filas de acción. Uno contiene un menú de selección y el otro contiene un botón. ¿Cómo obtengo el elemento seleccionado del menú de selección cuando se presiona el botón?
Tengo este siguiente código hasta ahora:
if (interaction.isButton()) { if (interaction.customId == 'deleteTask') { console.log("Deleting task!") console.log(taskName) delete(taskName) } }
Necesito que la variable taskName sea la opción seleccionada en un menú de selección. El menú de selección está en el mismo mensaje que el botón y tiene el Id personalizado 'selectTask'. Este es el código para el menú de selección y el menú de botones:
const row = new MessageActionRow() // Define action row .addComponents( new MessageSelectMenu() // Add task selector .setCustomId('selectTask') .setPlaceholder('Select an assignment..') .addOptions(choices), ); const btnrow = new MessageActionRow() // Define action row .addComponents( new MessageButton() .setCustomId('deleteTask') .setLabel("Delete task") .setStyle("DANGER"), );
Si ya tiene un recopilador de componentes de mensajes, solo necesita obtener el primer valor de ese recopilador. Documentos: https://discord.js.org/#/docs/discord.js/stable/class/SelectMenuInteraction?scrollTo=values
collectorInteraction.values[0]
Cambie la interacción del colector a lo que haya llamado su parámetro de colector.
Si aún necesita crear un recopilador de componentes, tal vez visite estos 2 sitios web: https://discord.js.org/#/docs/discord.js/stable/class/InteractionCollector
https://discordjs.guide/popular-topics/collectors.html#message-collectors