결론부터
- 1메뉴 버튼은 기본이 명령 목록 — 미니 앱 열기로 바꿀 수 있다.
- 2@BotFather 나 setChatMenuButton — chat_id 를 주면 그 사용자만.
- 3버튼을 바꿔도 /start · /help 는 계속 처리한다.
메뉴 버튼이란
봇과의 개인 대화에서 입력창 옆에 있는 버튼입니다. 기본으로는 누르면 봇이 등록해 둔 명령 목록이 설명과 함께 뜹니다. 이 버튼을 미니 앱을 여는 버튼으로 바꿀 수 있습니다 — 사용자는 명령을 외우지 않고 버튼 한 번으로 봇의 화면에 들어갑니다.
| 종류(MenuButton) | 누르면 | 맞는 봇 |
|---|---|---|
| commands | 명령 목록이 뜬다 | 명령 몇 개로 일하는 봇 |
| web_app | 정해 둔 미니 앱이 열린다(버튼 글자도 정한다) | 주문·예약·게임처럼 화면이 있는 봇 |
| default | 따로 정하지 않은 기본 동작 | 설정을 되돌릴 때 |
바꾸는 방법
- 코드 없이: @BotFather 에서 봇을 고르고 봇 설정의 메뉴 버튼 항목에서 미니 앱 주소와 버튼 글자를 정합니다.
- 봇 API:
setChatMenuButton을 부릅니다.chat_id를 빼면 모든 사용자의 기본값, 넣으면 그 사용자 대화 하나만 바뀝니다.
curl https://api.telegram.org/bot123456:ABC-EXAMPLE/setChatMenuButton \
-H "Content-Type: application/json" \
-d '{"menu_button":{"type":"web_app","text":"주문하기",
"web_app":{"url":"https://example.com/app"}}}'
지금 설정은 getChatMenuButton 으로 봅니다. 미니 앱 주소는 HTTPS 여야 합니다.
사용자마다 다르게
chat_id 를 넣어 부르면 사람마다 다른 버튼을 줄 수 있습니다. 예를 들어 가입을 마친 사용자에게만 '내 주문' 미니 앱 버튼을 주고, 처음 온 사용자에게는 명령 목록(시작 안내)을 보여 주는 식입니다.
미니 앱 쪽에서 할 일
메뉴 버튼으로 열린 미니 앱은 사용자 정보를 함께 받지만, 서버에서 서명을 검사하기 전에는 믿지 않습니다 — 미니 앱 사용자 확인. 미니 앱을 처음 만드는 순서는 미니 앱 만들기 입문에 있습니다.
자주 묻는 질문
텔레그램 봇 메뉴 버튼을 미니 앱으로 바꾸려면?
@BotFather 의 봇 설정에서 메뉴 버튼에 미니 앱 주소와 글자를 정하거나, 봇 API 의 setChatMenuButton 에 type web_app 을 넘깁니다.
사용자마다 다른 메뉴 버튼을 줄 수 있나요?
setChatMenuButton 에 그 사용자의 chat_id 를 넣으면 그 대화만 바뀝니다.
메뉴 버튼을 바꾸면 명령어가 사라지나요?
버튼에서만 사라지고, / 를 치면 명령 목록은 그대로 보입니다.
원래대로 되돌리려면?
menu_button 을 type default 로 다시 설정합니다.
참고한 공식 문서
한눈에 정리
- 1종류
commands · web_app · default.
- 2바꾸기
BotFather · setChatMenuButton.
- 3남길 것
/start · /help 처리.
최종 수정 2026-10-06