Интерактивные элементы

Кнопки под сообщением

keyboard принадлежит конкретному сообщению. Сетка может содержать разное число кнопок в строках; максимум 9 строк и 10 кнопок в строке.

Формат кнопки

Обязательна command либо action. text и emoji icon опциональны; длинный текст сокращается многоточием. По умолчанию action.type равен send_command.

{
  "command": "/status",
  "text": "Статус",
  "icon": "📦",
  "single_use": false,
  "expires_at": null
}

Действия

send_command отправляет команду видимым сообщением, send_message — заданный текст, callback создаёт событие без пользовательского сообщения, open_url открывает подтверждённую HTTPS-ссылку. Во время callback кнопка показывает загрузку.

Практика с SDK

Команда создаёт видимое сообщение пользователя, callback — нет. Выбирайте callback для приватного состояния интерфейса и не помещайте чувствительные данные в action.data.

При обработке single_use сервер бота всё равно должен быть идемпотентным: два сетевых запроса могут быть доставлены до обновления кнопки.

Примеры использования

import { callbackButton, commandButton, urlButton } from '@keychat/bots';

await bot.sendMessage({ chat_id: chatId, content: {
  text: 'Choose an action',
  keyboard: { rows: [
    [commandButton('/status', { text: 'Status', icon: '📦' })],
    [callbackButton('details', 'Details', 'order-42'), urlButton('Help', 'https://example.com/help')]
  ] }
}});
© 2026. Key Chat.