Неверный запрос: не удается проанализировать объект JSON разметки клавиатуры ответа

#javascript #bots #telegram

#javascript #боты #telegram

Вопрос:

Я хочу создать кнопку в моем боте Telegram с помощью javascript, и я работаю в скрипте Google.

Но он не извлекался.

Мой код:

 function a() {
  const opts = {
    reply_to_message_id: '690534265',
    reply_markup: {
      resize_keyboard: true,
      one_time_keyboard: true,
      keyboard: [ ['test'], ['test1'] ]
    }
  };

  MainKeyBoard(opts, 'afs', '690534265');
}


function MainKeyBoard(tasti, toxt, chid) {
  var url = link   '/sendMessage?parse_mode=Markdown'  
    'amp;chat_id='   chid  
    'amp;text='   toxt  
    'amp;reply_markup='   tasti;
  var respose = UrlFetchApp.fetch(url);
}
  

Это моя ошибка:

    Request failed for https://api.telegram.org/bot745193421:<token>/sendMessage?parse_mode=Markdownamp;chat_id=690534265amp;text=afsamp;reply_markup=[object Object] returned code 400. Truncated server response: {"ok":false,"error_code":400,"description":"Bad Request: can't parse reply keyboard markup JSON object"} (use muteHttpExceptions option to examine full response)
  

Я попытался добавить JSON.parse, но ошибка :

 SyntaxError: Unexpected token: o
  

Ответ №1:

Поскольку opts это объект, когда вы пытаетесь объединить, он будет использовать toString() метод, который просто вернет [object Object] то, что вы можете видеть в запросе.

Чтобы решить эту проблему, сериализуйте свой объект с помощью JSON.stringify в вашей MainKeyboard функции.

 function MainKeyBoard(tasti, toxt, chid) {
  var url = link   '/sendMessage?parse_mode=Markdownamp;chat_id='   chid  
    'amp;text='   toxt   'amp;reply_markup='   JSON.stringify(tasti);
  var response = UrlFetchApp.fetch(url);
}