Интерактивные элементы
Кнопки под сообщением
keyboard принадлежит конкретному сообщению. Сетка может содержать разное число кнопок в строках; максимум 9 строк и 10 кнопок в строке.
Действия
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')]
] }
}});