У сообщений бота в MAX есть второй этаж — клавиатура: кнопки, которыми пользователь отвечает, не печатая ни слова. Документация отводит этому пульту потолок в 210 кнопок под одним сообщением и семь типов на выбор — от обычной ссылки до кнопки, которая кладёт текст прямо в буфер обмена. При этом официальная библиотека JavaScript перечисляет только шесть типов, из двадцати девяти страниц методов API вложение с кнопками упоминают три, а пользовательская справка не произносит слово «клавиатура» ни разу. Мы прошли обзор API, страницу библиотеки и весь раздел методов — и собрали устройство кнопочного пульта в один материал.

210кнопок — потолок одной inline-клавиатуры: тридцать рядов по семь
7 против 6типов кнопок называет API — библиотека JavaScript знает на один меньше
3 из 29страниц методов API упоминают вложение inline_keyboard
0 из 192статей справки MAX содержат слово «клавиатура»

Кнопки вместо сообщений: что такое клавиатура бота

Обзор API MAX объясняет назначение клавиатуры одной фразой:

«Клавиатура позволяет отправлять боту запросы кнопками, а не сообщениями»

Обзор API MAX, раздел «Клавиатура для чат-бота»

То есть речь не о клавиатуре телефона и не о наборе текста. Клавиатура бота — это панель кнопок, закреплённая под его сообщением: пользователь не печатает ответ, а нажимает готовый вариант. Страница библиотеки JavaScript описывает ту же конструкцию бытовым сравнением:

«Клавиатура отображается в сообщениях бота и похожа на пульт управления»

Документация MAX, раздел «Библиотека JavaScript»

У пульта есть обязательные правила вёрстки, и документация перечисляет их до всякого кода: текст на кнопке выравнивается по центру и обрезается, если выходит за границы; кнопки в одной строке всегда одинаковой ширины; ряд кнопок растягивается на всю ширину клавиатуры, а высота у кнопок по умолчанию одна и та же. Владельцу бота отсюда следует практичный вывод: длинные подписи на кнопках жить не будут — их срежет сама вёрстка. Как бот вообще появляется на свет и где живут его настройки, мы разбирали в руководстве о создании ботов в MAX.

Арифметика пульта: тридцать рядов по семь кнопок

Потолок у клавиатуры задан числами, и числа эти щедрые:

«Она позволяет разместить под сообщением бота до 210 кнопок, сгруппированных в 30 рядов — до 7 кнопок в каждом»

Обзор API MAX, раздел «Клавиатура для чат-бота» — об inline-клавиатуре

Арифметика сходится ровно: тридцать рядов по семь дают заявленный потолок. Но у него есть оговорка, которую легко пропустить: до семи кнопок в ряд можно ставить не всегда. Для четырёх типов — link, open_app, request_geo_location и request_contact — лимит ряда жёстче — до трёх кнопок. Если собрать клавиатуру целиком из таких кнопок, вместо 210 позиций останется девяносто.

Ограничен и размер того, что кнопка несёт внутри: для кнопки-ссылки максимальная длина адреса — 2048 символов. А на случай, когда рядов слишком много, у библиотеки готов ответ:

«Если ряды кнопок не помещаются в плейсхолдер клавиатуры, автоматически подключается скролл»

Документация MAX, раздел «Библиотека JavaScript»

Иными словами, к пульту на две сотни кнопок прилагается прокрутка: платформа заранее допускает, что целиком он на экран не поместится.

Семь типов кнопок в API, шесть — в библиотеке

Обзор API перечисляет семь типов кнопок. Вот весь набор: callback — отправляет серверу событие о нажатии; link — открывает ссылку в новой вкладке; request_contact — запрашивает у пользователя его контакт и номер телефона; request_geo_location — просит поделиться местоположением; open_app — открывает мини-приложение; message — отправляет боту текстовое сообщение; clipboard — копирует текст в буфер обмена.

А теперь замер, ради которого стоило читать оба раздела подряд. Страница библиотеки JavaScript в разделе «Типы кнопок» описывает шесть классов: CallbackButton, LinkButton, RequestContactButton, RequestGeoLocationButton, OpenAppButton и MessageButton. Слово clipboard на этой странице не встречается ни разу — мы проверили поиском по всему её тексту. Седьмой тип кнопки существует только на этаже «голого» API: собрать такую кнопку библиотечным конструктором по документации нельзя, только руками в JSON.

Когда именно седьмой тип появился, официальная история изменений не сообщает: в журнале API MAX записи о clipboard нет. Сам журнал и то, что платформа открыла API для разработчиков, мы разбирали в материале об открытии API MAX.

Практическое следствие: если ваш бот собран на официальной библиотеке JavaScript, кнопку копирования придётся добавлять прямым вызовом API — для методов, которых библиотека не поддерживает, у неё есть вызовы ctx.api.raw.

Кнопка clipboard: текст сразу в буфер обмена

Седьмой тип заслуживает отдельного разбора — это единственная кнопка, которая ничего не отправляет и никуда не ведёт. При нажатии текст из её свойства payload копируется в буфер обмена устройства. Документация прямо подсказывает, что туда класть:

«В свойстве payload можно передать любой текст, например промокод, трек-номер, платёжные реквизиты»

Обзор API MAX, раздел «Кнопка clipboard»

Сценарий очевиден: бот присылает код или номер отправления, пользователь забирает его одним нажатием — без выделения текста пальцем и без ошибок ручного набора. Забавная деталь: пользовательская справка MAX не употребляет слово «буфер» ни в одной из своих статей — сама возможность описана только в документации для разработчиков.

Кнопка с контактом: поле hash как замена авторизации

Самая нагруженная кнопка пульта — request_contact. По нажатию пользователь отправляет боту свой контакт и номер телефона, привязанный к аккаунту. Вместе с контактом в сообщение приходит поле hash — криптографическая подпись: бот считает HMAC-SHA256(access_token, vcf_info) и сравнивает с присланным значением. Совпало — значит, пользователь поделился номером, который привязан к его аккаунту. Документация оценивает приём без ложной скромности: полученный так номер

«…можно использовать, например, как альтернативу авторизации»

Обзор API MAX, раздел «Кнопка request_contact»

Важна и обратная сторона. Если пользователь отправит номер боту любым другим способом — например, решит переслать из телефонной книги, — сообщение не будет содержать поля hash, и подтвердить принадлежность номера не получится. Проверяемым контакт делает именно кнопка: тот же самый номер, присланный не через неё, для бота остаётся словом без подписи. Документация при этом очерчивает границы: данные, полученные кнопкой, можно использовать только для взаимодействия с текущим ботом — программа лояльности, статус заказа, идентификация внутри сервиса.

Кнопки едут только внутри сообщения

Отдельного метода «отправить клавиатуру» в API нет. Мы обошли весь раздел «Методы API» — в нём двадцать девять страниц — и картина такая: вложение inline_keyboard упоминают три страницы (отправка сообщений, их редактирование и ответ на callback), а слово «клавиатура» встречается ровно на одной — в отправке сообщений, и то ссылкой на обзор. Кнопки всегда приезжают как вложение: в теле запроса POST /messages передаётся объект attachments с типом inline_keyboard и массивом кнопок. В списке типов вложений на той же странице клавиатура записана буднично: «сообщение или пост с кнопкой» — в одном перечне со стикерами и файлами.

Зато у кнопочных сообщений есть привилегия, которой нет у обычных. Страница редактирования сообщений оговаривает особый режим для диалогов с ботом:

«Сообщения с кнопками inline_keyboard редактируются независимо от срока давности»

Документация API MAX, метод PUT /messages

Обычное сообщение в диалоге бот может править только первую неделю после отправки — дальше оно застывает. Сообщение с клавиатурой можно перерисовывать бесконечно: старое меню годичной давности остаётся живым пультом, и бот может менять на нём кнопки хоть каждый день. О том, как бот вообще узнаёт о нажатиях — и почему без подписки на события он молчит, — мы писали в разборе о подписке бота на события.

Справка молчит: ноль статей о клавиатуре

Теперь этаж пользователя. В справке MAX сто девяносто две статьи; слова «клавиатура» нет ни в одном заголовке и ни в одном тексте — ноль употреблений на весь корпус. Кнопки как элемент интерфейса справка, конечно, упоминает — в десятках статей, — но всё это кнопки приложения: позвонить, настроить, удалить. Кнопочный пульт бота, его типы и лимиты для пользователя не описаны нигде: человек нажимает на «Поделиться контактом», не имея ни одной справочной страницы о том, что это за механика и что она отправит.

Для владельца бота это означает простую вещь: объяснять пульт придётся самому боту. Подпись на кнопке — единственная документация, которую увидит пользователь, и тем важнее, что вёрстка её обрежет, если текст выйдет за границы кнопки. Короткие глаголы работают лучше описаний. А если бот живёт в групповом чате, помните: там свои правила входа и прав — мы разбирали их в материале о групповых чатах в MAX.

Частые вопросы

Сколько кнопок помещается под одним сообщением бота?

Потолок inline-клавиатуры — до 210 кнопок: тридцать рядов, до семи кнопок в каждом. Для кнопок типов link, open_app, request_geo_location и request_contact ряд короче — до трёх. Если ряды не помещаются на экран, платформа включает прокрутку.

Чем кнопка clipboard отличается от остальных?

Это единственный тип, который ничего не отправляет боту и не открывает: при нажатии текст из свойства payload копируется в буфер обмена — документация предлагает класть туда промокоды и трек-номера. В официальной библиотеке JavaScript этого типа нет, он доступен только прямым вызовом API.

Зачем в сообщении с контактом поле hash?

Это подпись HMAC-SHA256, которой платформа подтверждает: пользователь поделился номером, привязанным к его аккаунту. Проверка работает только для контакта, отправленного кнопкой request_contact; номер, пересланный иначе, приходит без hash — и подтвердить его нельзя.

Можно ли поменять кнопки в уже отправленном сообщении?

Да, методом PUT /messages. Более того, в диалогах с ботом сообщения с inline_keyboard редактируются независимо от срока давности — в отличие от обычных, у которых в диалогах на правку отведена неделя.

Где пользователю почитать про клавиатуру бота?

Негде: в пользовательской справке MAX слово «клавиатура» не встречается ни разу — на момент замера в ней сто девяносто две статьи, и все упоминания кнопок относятся к интерфейсу самого приложения. Клавиатура бота описана только в документации для разработчиков.

Развивайте свой канал в MAX

Добавьте канал в каталог, чтобы его находили новые подписчики, — а продвижение ускорит VIP-размещение.

Добавить канал в каталог
клавиатура ботаinline-клавиатуракнопки в MAXкнопка clipboardrequest_contactAPI MAX
Материал опирается на обзор API MAX, страницы раздела «Методы API» и «Библиотека JavaScript» на dev.max.ru и корпус пользовательской справки help.max.ru. Замеры — обход двадцати девяти страниц методов и поиск по ста девяноста двум статьям справки — выполнены 12 августа 2026 года.