tengo este comando:
if(prefix&&comando === 'gender'||prefix&&comando === 'pronome'){ const embed = new MessageEmbed() .setColor(config.embed_default_color) .setTitle('Altere o seu pronome!') .setDescription('Quando mudá-lo, eu vou te tratar pelo pronome selecionado.') .addField('Selecione uma opção abaixo.', '- - - - - - - -'); const row = new MessageActionRow() .addComponents( new MessageSelectMenu() .setCustomId('select') .setPlaceholder('Nothing selected') .addOptions([ { label: 'Pronome masculino', value: 'men', emoji: '🚹' }, { label: 'Pronome feminino', value: 'woman', emoji: '🚺' }, { label: 'Pronome indefinido', value: 'indef', emoji: '🟨' }, ]), ); await message.reply({ embeds: [embed], components: [row] }).then(msg => { const filtro = (interaction) => interaction.isSelectMenu() const coletor = msg.createMessageComponentCollector({ filtro }); coletor.on('collect', async (collected) => { let gn = collected.values[0] collected.deferUpdate() if(gn==='men'){ msg.delete(); await message.channel.send(`${mention} **| ✅ Pronome alterado!**\nPronome atualizado para o masculino, Ele/dele.`); gender = 'o'; } else if(gn==='woman'){ msg.delete(); await message.channel.send(`${mention} **| ✅ Pronome alterado!**\nPronome atualizado para o feminino, Ela/dela.`); gender = 'a'; } else if(gn==='men'){ msg.delete(); await message.channel.send(`${mention} **| ✅ Pronome alterado!**\nPronome atualizado para indefinido.`); gender = 'x'; } }) }) }y debajo, en el colector (en los bloques if), tengo algunas acciones, porque cuando el usuario selecciona una opción en el menú desplegable, se envía el mensaje, pero no puedo cambiar ningún valor de variable allí. existe un método para hacer esto? Realmente necesito eso. ¡Gracias!
Intenta seguir esta guía , es muy completa.
Aquí tienes un ejemplo de cómo sería:
const { MessageActionRow, MessageSelectMenu } = require('discord.js'); client.on('interactionCreate', async interaction => { if (!interaction.isCommand()) return; if (interaction.commandName === 'MenuOptions') { const row = new MessageActionRow() .addComponents( new MessageSelectMenu() .setCustomId('select') .setPlaceholder('Nothing selected') .setMinValues(2) .setMaxValues(3) .addOptions([ { label: 'Select me', description: 'This is a description', value: 'first_option', }, { label: 'You can select me too', description: 'This is also a description', value: 'second_option', }, { label: 'I am also an option', description: 'This is a description as well', value: 'third_option', }, ]), ); await interaction.reply({ content: 'Example!!!!!!!!', components: [row] }); } });