@desocrew

Как сделать такое меню на discord.js?

Привет, хочу сделать меню для своего сервера, такое как это:643fb57c0985b279657680.jpeg643fb58226bf4652256813.jpeg
Хотел сделать на Juniper.bot но там нужно покупать подписку. Сделал список и сообщение, а вот обработчик никак не могу сделать. Надо что бы он по нажатию на какой то option выводил соответствующее сообщение, всегда и кому угодно. Спросил GPT3, он показывал, не удивительно, устаревшее решение. Гугл ничего не говорит. Версия discord js последняя 14

Хотелось бы еще, что бы автора interaction (тот который пишеться при interaction.reply()) не было, так же не смог сделать
  • Вопрос задан
  • 251 просмотр
Решения вопроса 1
Более развернутый пример ты можешь увидеть тут (урок от 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 немного проблемы с табуляцией. Думаю ты сам исправишь, если что.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы