Более развернутый пример ты можешь увидеть
тут (урок от discordjs с работой selectMenu)
Например по команде /send, отправляем сообщение в канал.
Импортируем для начала из discord.js StringSelectMenuBuilder, ActionRowBuilder, SlashCommandBuilder
Это идет сама наша команда:
module.exports = {
data: new SlashCommandBuilder()
.setName('send')
.setDescription('Отправит сообщение с меню'),
async execute(interaction) {
const menu_server = new ActionRowBuilder()
.addComponents(
new StringSelectMenuBuilder()
.setCustomId('menu-server')
.setPlaceholder('Выбери раздел')
.setMaxValues(1)
.addOptions([
{
label: 'Подать заявку на администрацию',
value: 'menu-send-admin',
emoji: '❤',
description: 'Вы подаете заявку на администрацию'
},
{
label: 'Что-то свое еще',
value: 'menu-others',
}
]),
);
await interaction.reply({content: 'Вы успешно отправили Меню', ephemeral: true});
await interaction.channel.send({ components: [menu-server], content: 'Меню сервера:' });
},
};
Дальше идем в InteractionCreate:
if (interaction.isStringSelectMenu()) {
if(interaction.customId === 'menu-server') {
const value = interaction.values[0];
switch(value) {
case 'menu-send-admin': {
await interaction.reply({content: 'Вы выбрали отправку на администрацию' , ephemeral: true});
}
break;
case 'menu-others': {
await interaction.reply({content: 'Вы выбрали что-то другое', ephemeral: true});
}
break;
default:
break;
}
}
}
Вот, вроде как-то так.
P.S немного проблемы с табуляцией. Думаю ты сам исправишь, если что.