Comments 6
Если мне не изменяет память, то предыдущую клавиатуру можно не удалять, а обновлять с помощью updateMessage - обновление будет более плавным, чем отправка и удаление. Только нужно убедиться, что предыдущее сообщение не удалено пользователем. Также вроде можно обновить только inline-клавиатуру
Всё верно, вот только убедиться никак нельзя. Бот не знает, что сообщение удалено, ведь удаляется оно только на стороне пользователя, т.о. не происходит никаких ошибок/исключений при попытке изменить такое сообщение.
Но в целом совет правильный, если просто изменять предыдущее сообщение, это будет выглядеть гораздо приятнее и даже с некоторой долей магии.
Сказывается моя невнимательность или fuzzy brain в конце рабочего дня, но я не нашла в документации инфы про обновление клавы.
editMessage есть, но шифтнуть одну клаву другой вроде нельзя.
Если нашли что-то, тыкните пожалуйста)
Посмотрите метод editMessageReplyMarkup
Для обнаружения того, что сообщение удалено, можно читать ответ от выполнения метода editMessage - он возвращает JSON, в котором вроде есть информация об успешности или неуспешности зарпоса:
On success, if the edited message is not an inline message, the edited Message is returned, otherwise True is returned.
Спасибо за совет^^ Выглядит действительно лучше
Добавила функцию edit_inline()
function edit_inline(chat_id, msg_id) {
let keyboard = getKeyboard(chat_id);
var payload = {
'method': 'editMessageReplyMarkup',
'chat_id': String(chat_id),
'message_id': String(msg_id),
'reply_markup': JSON.stringify(keyboard)
}
var Data = {
"method": "post",
"payload": payload
}
UrlFetchApp.fetch('https://api.telegram.org/bot' + API + '/', Data);
}
И немного изменила doPost()
Множественный выбор кнопок в боте