错误的请求:无法解析回复键盘标记JSON对象

时间:2019-04-05 13:20:41

标签: javascript bots 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' +
    '&chat_id=' + chid +
    '&text=' + toxt +
    '&reply_markup=' + tasti;
  var respose = UrlFetchApp.fetch(url);
}

这是我的错误:

   Request failed for https://api.telegram.org/bot745193421:<token>/sendMessage?parse_mode=Markdown&chat_id=690534265&text=afs&reply_markup=[object%20Object] 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 个答案:

答案 0 :(得分:0)

由于opts是一个对象,当您尝试进行连接时,它将使用toString()方法,该方法只会返回在请求中可以看到的[object Object]

为了解决此问题,请在JSON.stringify函数中使用MainKeyboard对对象进行序列化。

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