Разработка Telegram Bot с помощью Google App Script и Webhooks.
Я пытаюсь отредактировать кнопки клавиатуры сообщения ReplyKeyboardMarkup , которое я отправил с editMessageReplyMarkup .
В коде внизу этого вопроса вы можете увидеть, как я использую функцию sendKeyboardMessage()
(которая работает) и как я пытаюсь отредактировать ее с помощью editKeyboardMessage()
(что не ) работает).
Если я пытаюсь запустить editKeyboardMessage()
, я получаю что-то вроде этого:
Request error 400. Server response {"ok":false,"error_code":400,"description":"Bad Request: can't parse inline keyboard button: Text buttons are unallowed in the inline keyboard"} (use muteHttpExceptions to examine complete response)
Но если я пытаюсь войти в URL запросанапример: Logger.log(url + "/" + JSON.stringify(data))
Я получаю URL-адрес, который, если я получаю доступ, вместо этого получает эту ошибку:
{
ok: false,
error_code: 404,
description: "Not Found: method not found"
}
Это зарегистрированный URL-адрес, и я получаю доступ к этой ошибке:
https://api.telegram.org/bot + TOKEN + /{"method":"post","payload":{"method":"editMessageReplyMarkup","chat_id":"CHATID","message_id":"MESSAGEID","parse_mode":"HTML","reply_markup":"{\"inline_keyboard\":[[{\"text\":\"Yes\"}],[{\"text\":\"No\"}],[{\"text\":\"Maybe\"}]]}"}}
Это формат buttonArray
, используемый в приведенном ниже коде:
Отправленное сообщение: [[{"text":"Yes"}],[{"text":"No"}]]
Попытка изменить на: [[{"text":"Yes"}],[{"text":"No"}],[{"text":"Maybe"}]]
Вот функции:
var url = "https://api.telegram.org/bot" + token;
function sendKeyboardMessage(id, buttonArray, text) {
var keyboardMarkup = {"keyboard": buttonArray ,"resize_keyboard": true};
var data = {
method: "post",
payload: {
method: "sendMessage",
chat_id: String(id),
text: text,
parse_mode: "HTML",
reply_markup: JSON.stringify(keyboardMarkup)
}
};
var response = UrlFetchApp.fetch(url + "/", data);
}
function editKeyboardMessage(id, message_id, buttonArray) {
var keyboardMarkup = {"inline_keyboard": buttonArray};
var data = {
method: "post",
payload: {
method: "editMessageReplyMarkup",
chat_id: String(id),
message_id: String(message_id),
parse_mode: "HTML",
reply_markup: JSON.stringify(keyboardMarkup)
}
};
var response = UrlFetchApp.fetch(url + "/", data)
}
Вопросы:
- Что я могу сделать, чтобы исправить это, и успешно отредактировать отправленный мной ответный ключ?
- Почему мне кажется, что я получаю два разных сообщения об ошибках? (один говорит: «Не найден: метод не найден», другой говорит: «Не удается разобрать кнопку встроенной клавиатуры: текстовые кнопки не разрешены на встроенной клавиатуре»)
Спасибо зазаранее!