Reply-клавиатура
В отличие от inline, Reply Keyboard заменяет системную клавиатуру и показывает кнопки внизу экрана. Тап на кнопку = отправка её текста как обычного сообщения.
Простой пример
{
"chat_id": 12345,
"text": "Что хотите сделать?",
"reply_markup": {
"keyboard": [
[{"text": "📋 Мой профиль"}, {"text": "⚙️ Настройки"}],
[{"text": "💳 Оплата"}]
],
"resize_keyboard": true,
"one_time_keyboard": false
}
}
Параметры markup
| Параметр | Тип | Описание |
|---|---|---|
keyboard | array array | Кнопки рядами |
is_persistent | bool | Показывать всегда (true) или только когда юзер тапнул input (false) |
resize_keyboard | bool | Подгонять высоту под кнопки |
one_time_keyboard | bool | Скрывать после первого использования |
input_field_placeholder | string | Placeholder в поле ввода |
selective | bool | Показывать только определённым юзерам в группе |
Специальные кнопки
{"text": "📍 Поделиться геолокацией", "request_location": true}
{"text": "📞 Поделиться контактом", "request_contact": true}
{"text": "📊 Создать опрос", "request_poll": {"type": "regular"}}
{"text": "🪟 Открыть приложение", "web_app": {"url": "https://your-app.com"}}
Скрытие клавиатуры
{
"reply_markup": {"remove_keyboard": true}
}
ForceReply
Заставить юзера ответить с цитатой (полезно для wizard-ов):
{
"reply_markup": {
"force_reply": true,
"input_field_placeholder": "Введите ваше имя",
"selective": true
}
}
Inline vs Reply — что когда
- Inline — для интерактивных кнопок, callback'ов, web_app, ссылок. Кнопка живёт внутри сообщения.
- Reply — для постоянных команд, главного меню, частых действий. Заменяет клавиатуру.