Задать вопрос
@tapsxxx

Обработчик события в меню выбора дискорд бота, как получить фидбэк?

у меня есть команда для дискорд бота, при вызове бот выдает меню выбора, как мне сделать что-бы после выбора пункта в меню, был какой-то фидбэк, тоесть или веб-хук или что то ещё, по сути мне нужно сделать описание оружия "желательно с картинкой в описании" как это можно сделать? Заранее спасибо
const {
  ActionRowBuilder,
  StringSelectMenuBuilder,
  StringSelectMenuOptionBuilder,
  SlashCommandBuilder,
} = require("discord.js");

module.exports = {
  data: new SlashCommandBuilder()
    .setName("weapon")
    .setDescription("Menu konceptia"),
  async execute(interaction) {
    try {
      const select = new StringSelectMenuBuilder()
        .setCustomId("weapon")
        .setPlaceholder("нажмите что бы выбрать!")
        .addOptions(
          new StringSelectMenuOptionBuilder()
            .setLabel("Demon's King Longsword")
            // .setDescription('The dual-type Grass/Poison Seed Pokémon.')
            .setValue("bulbasaur")
            .setEmoji('1225192234262200472'),

          new StringSelectMenuOptionBuilder()
            .setLabel("Demonic Plum Flower Sword")
            // .setDescription('The Fire-type Lizard Pokémon.')
            .setValue("charmander")
            .setEmoji('1225151348191002816'),

          new StringSelectMenuOptionBuilder()
            .setLabel("Shadow Scythe")
            // .setDescription('The Water-type Tiny Turtle Pokémon.')
            .setValue("squirtle")
            .setEmoji('1225192387014561853'),
        );

      const row = new ActionRowBuilder().addComponents(select);
      await interaction.reply({
        content: "**Выберите оружие!**",
        components: [row],
      });
      await interaction.channel.send({ components: [weapon], content: 'Меню сервера:' });
    } catch (error) {
      console.error(error.message);
    }
  },
};
  • Вопрос задан
  • 64 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
@dxtintx
Предварительно каждой опции .setCustomId("option id")
const response = await interaction.reply({
        content: "**Выберите оружие!**",
        components: [row],
});

const collectorFilter = i => i.user.id === interaction.user.id;
try {
	const confirmation = await response.awaitMessageComponent({ filter: collectorFilter, time: 60_000 });

	switch (confirmation.customId) {
                case 'option1':
                        await confirmation.update({ content: "Выбрана опция 1", components: [] })
                        break;
                case 'option2':
                        await confirmation.update({ content: "Выбрана опция 2", components: [] })
                        break;
                // и так далее
                default:
                        break;
        }
} catch (e) {
	await interaction.editReply({ content: 'Confirmation not received within 1 minute, cancelling', components: [] });
}


Детальнее:
https://discordjs.guide/message-components/interac...
https://discord.js.org/docs/packages/builders/main...
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы