# Menu button

## Set menu button

You can set menu button using **MenuButton class-method** or `.setMenuButton` **answer/api method**

#### MenuButton class-method or .setMenuButton answer/api method take arguments:

<table><thead><tr><th width="150" data-type="number">Argument</th><th>Description</th><th>Required</th></tr></thead><tbody><tr><td>1</td><td><a href="https://core.telegram.org/bots/api#menubutton">Menu button</a> you want to set</td><td>Optional</td></tr><tr><td>2</td><td>Chat id you want to set menu button to. Pass <code>'_current'</code>  to set menu button for current chat</td><td>Optional</td></tr></tbody></table>

{% hint style="info" %}
If you want to know what arguments an API method takes, see the IDE hint

In **answer method** or **class-method**, you can pass `'_current'` as 2nd argument to set menu button for current chat
{% endhint %}

{% code title="app.controller.ts" %}

```typescript
import { Controller, OnCommand, MenuButton } from 'nestgram';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @OnCommand('start')
  setMenuButton() {
    return new MenuButton({
      type: 'web_app',
      text: 'Open web app',
      web_app: { url: 'https://youtube.com/' },
    }).next('Menu button updated!');
  }
}
```

{% endcode %}

## Get menu button

To get the menu button, use `.getMenuButton` **answer/api method**

{% hint style="info" %}
.getMenuButton answer method takes argument: chat id you want to get menu button (optional, for all by default). You can pass `'_current'` to get menu button in the current chat

If you want to know what arguments an API method takes, see the IDE hint
{% endhint %}

{% code title="app.controller.ts" %}

```typescript
import { Controller, OnCommand, GetAnswer, Answer } from 'nestgram';
import { AppService } from './app.service';

@Controller()
export class AppController {
  constructor(private readonly appService: AppService) {}

  @OnCommand('start')
  async getMenuButton(@GetAnswer() answer: Answer) {
    console.log(await answer.getMenuButton());
    return 'Logged to console!';
  }
}
```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://degreetpro.gitbook.io/nestgram/api-reference/menu-button.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
