> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dogebot.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Buttons and menus

> Add buttons and select menus that run their own blocks.

Buttons and select menus make your bot feel like an app. People press a button or pick from a menu, and your bot does something.

## Adding a button

1. Add a message block that supports buttons (search `button` in the block list).
2. In its settings, add a button. Give it a **label** (the words on it) and pick a **style**:

| Style | Looks like | Use it for |
| - | - | - |
| **Blue** | The main button. | The thing most people should press. |
| **Grey** | A quiet button. | Less important choices. |
| **Green** | A "good" button. | Yes, confirm, verify, join. |
| **Red** | A "careful" button. | Delete, close, leave. |
| **Link** | Opens a website. | Links. A Link button does not run blocks. |

3. Optional: add an **emoji** with the emoji picker. It has your server's own emojis too, even animated ones.

## Each button runs its own blocks

Every button gets its **own path** on the board. Blocks you connect under a button only run when someone presses **that** button. That is how one message can have a **Yes** and a **No** button that do different things.

## Select menus

A **select menu** is a drop-down list. It is good when there are too many choices for buttons, like picking one of 15 roles. Each option in the menu gets its own blocks, just like a button. Search `menu` in the block list.

## Answering a button press

When a message comes **after** a button or menu, its **Response type** can be **Reply to the command or button/menu interaction**. That answers the person who pressed it. Reply **privately** when only they should see it, so the channel does not fill up.

## Changing buttons later

Use the block that **updates buttons or menus** (search `update`) to change a button after the message was sent, for example to turn **Join** into a greyed out **Closed**.

## Layout messages

In a **Layout message**, buttons and menus get their own row automatically, so you can place them anywhere in your message.

See these recipes for full examples: [Verification](/build-a-system/verification), [Tickets](/build-a-system/tickets) and [Button roles](/build-a-system/button-roles).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.