← Back to lessons

Lesson 7 — Select Menus

Goal: Make a dropdown menu and handle the selection.

Video

Step-by-step

Step 1 — Create the command

Create commands/menudemo.js

const { SlashCommandBuilder } = require("@discordjs/builders");
const { ActionRowBuilder, StringSelectMenuBuilder } = require("discord.js");

module.exports = {
  dev: true,
  data: new SlashCommandBuilder().setName("menudemo").setDescription("Sends a demo menu"),
  async execute(interaction) {
    const menu = new StringSelectMenuBuilder()
      .setCustomId("demo_menu")
      .setPlaceholder("Choose one...")
      .addOptions(
        { label: "Red", value: "red" },
        { label: "Blue", value: "blue" },
        { label: "Green", value: "green" }
      );

    const row = new ActionRowBuilder().addComponents(menu);
    await interaction.reply({ content: "Pick a color:", components: [row] });
  },
};
Step 2 — Create menu handler

Create menus/demo_menu.js

module.exports = {
  customID: "demo_menu",
  async execute(interaction) {
    const choice = interaction.values?.[0];
    await interaction.reply({ content: `You chose: ${choice}`, ephemeral: true });
  }
};
Step 3 — Restart & test
node index.js

Run /menudemo and pick a value.

← Lesson 6 Next → Lesson 8