Не удается редактировать ReplyKeyboardMarkup с помощью editMessageReplyMarkup в Google Apps Script (Telegram Bot + Webhooks) - PullRequest
0 голосов
/ 19 декабря 2018

Разработка 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)
    }

Вопросы:

  1. Что я могу сделать, чтобы исправить это, и успешно отредактировать отправленный мной ответный ключ?
  2. Почему мне кажется, что я получаю два разных сообщения об ошибках? (один говорит: «Не найден: метод не найден», другой говорит: «Не удается разобрать кнопку встроенной клавиатуры: текстовые кнопки не разрешены на встроенной клавиатуре»)

Спасибо зазаранее!

...