Ответы пользователя по тегу Node.js
  • Как получить значение из StringSelectMenuBuilder()?

    Все взаимодействия с кнопками, меню и.т.д идет в InteractionCreate.
    Для того, чтобы отследить меню нужно использовать if (interaction.isStringSelectMenu()), чтобы сравнить наше меню, которое нам необходимо if(interaction.customId === 'ur-menu')
    Дальше для того, чтобы узнать, на какую опцию мы нажали используем
    if(interaction.customId === 'ur-menu') {
        const value = interaction.values[0];
        switch(value) {
            case 'menu-select-ad': {
                // Что будет, если мы нажали на кнопку например 1.
            }
                break;
    
            default:
                break;
        }
    }
    Ответ написан
    Комментировать
  • Как сделать такое меню на discord.js?

    Более развернутый пример ты можешь увидеть тут (урок от 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 немного проблемы с табуляцией. Думаю ты сам исправишь, если что.
    Ответ написан
    1 комментарий