Команды и кнопки
Описание и команды
Описание и команды бота хранятся в его зашифрованном профиле и приходят в приложения вместе с именем и аватаром.
PATCH /v1/me
{"about": "Прогноз погоды. Напишите /weather <город>."}PUT /v1/me/commands
{"commands": [
{"name": "start", "description": "Что умеет бот"},
{"name": "weather", "description": "Прогноз для города", "args": "<город>"}
]}- До 100 команд.
name—[a-z0-9_]{1,32},description— до 256 символов,args(подсказка в поле ввода) — до 32. about— до 512 символов.{"commands": []}убирает список.
Как это выглядит в приложениях:
- Пустой чат с ботом показывает описание, кнопку Начать (отправляет
/start) и строку, что переписку видит владелец бота. - Кнопка / Меню слева от поля ввода или
/в начале пустого поля открывает список команд; дальше он фильтруется по набранному. - Команда без
argsотправляется по нажатию; сargs— вставляется в поле с серой подсказкой. - В группе меню показывает команды всех её ботов; команда уходит с упоминанием бота.
Команда приходит обычным событием message с текстом вида /weather Тбилиси. В группе в mentions будет упоминание бота.
Кнопки
Бот может прикрепить к своему сообщению до шести кнопок: до 3 рядов по 2.
POST /v1/chats/{chat}/messages
{
"text": "Выкатить v1.4 в прод?",
"buttons": [
[{"text": "Выкатить", "data": "deploy:v1.4"}, {"text": "Отмена", "data": "cancel"}],
[{"text": "Что нового", "url": "https://example.com/changes/v1.4"}]
]
}text— до 64 символов.- У кнопки либо
data(до 64 байт, возвращается боту), либоurl(только https; приложение спрашивает подтверждение и показывает полный адрес). - Кнопки показываются только под сообщениями аккаунтов с меткой «бот».
Нажатия
Нажатие кнопки с data получает только бот, в чате его никто не видит:
{
"id": 42, "type": "button", "chat_id": "g3a…",
"button": {"message_id": "m9…", "from": {"id": "u7f…", "name": "Анна"},
"data": "deploy:v1.4", "press_id": "p1…"}
}Приложение крутит нажатую кнопку, а остальные делает неактивными до реакции бота. Если за 10 секунд реакции нет — «Бот не ответил», и кнопки снова активны. Реагировать можно как угодно, в том числе несколькими способами сразу:
- изменить сообщение —
PATCH …/messages/{msg}с новымtextи/илиbuttons([]— убрать). Сообщения с кнопками правятся без ограничения по времени; результат видят все в чате; - отправить новое сообщение, можно с
reply_to; - ответить на нажатие всплывающей строкой, которую видит только нажавший:
POST /v1/presses/{press_id}/answer
{"text": "Выкатываю…"}Ответ — до 200 символов, не позже минуты после нажатия.
В группе кнопку может нажать любой участник, а результат все видят через правку.