Увы, в Telegram нет метода чтобы обновить ReplyKeyboardMarkup без текста. Есть только метод
editMessageReplyMarkup для обновления InlineKeyboardMarkup.
Я думал, что может получиться отправить сообщение с keyboard, а потом вызвать метод editmessagereplymarkup, чтобы в предыдущее сообщение подставить inline_keyboard, но нет. API выдал ошибку "Bad Request: message can't be edited". Листинг запросов:
1. Отправка keyboard + text
curl --location --request GET 'https://api.telegram.org/bot###/sendMessage' \
--header 'Content-Type: application/json' \
--data '{
"chat_id": "###",
"text": "Some text",
"reply_markup": {
"keyboard": [
[
{
"text": "Button 1",
"request_contact": true
}
]
],
"resize_keyboard": true
}
}'
2. Попытка отредактировать предыдущее сообщение и вставить inline_keyboard
curl --location --request GET 'https://api.telegram.org/bot###/editMessageReplyMarkup' \
--header 'Content-Type: application/json' \
--data '{
"chat_id": "###",
"message_id": 1332,
"reply_markup": {
"inline_keyboard": [
[
{
"text": "Button 2",
"callback_data": "foo"
}
]
],
}
}'