【发布时间】:2020-11-03 03:09:03
【问题描述】:
我的代码:
var keyBoardData = [];
var menu = ['Nightclub', 'Parks'];
for (var i = 0; i < menu.length; i++) {
keyBoardData.push([{'text': menu[i], 'callback_data': '{"a":(menu[i]),"b":(menu[i])}' }]);
}
var keyBoard = {"inline_keyboard": keyBoardData};
结果是:
{"inline_keyboard":[[{"text":"Nightclub","callback_data":"{\"a\":(menu[i]),\"b\":(menu[i])}"}],
[{"text":"Parks","callback_data":"{\"a\":(menu[i]),\"b\":(menu[i])}"}]]}
但我想得到:
{"inline_keyboard":[[{"text":"Nightclub","callback_data":'{"a":"Nightclub","b":"Nightclub"}'}],
[{"text":"Parks","callback_data":'{"a":"Parks","b":"Parks"}'}]]}
使用电报机器人 API 和谷歌表格应用脚本。 需要在电报中将列数据显示为按钮,并且在选择按钮时需要使用 callback_data 过滤工作表数据并返回结果。
这里有问题:'{"a":(menu[i]),"b":(menu[i])}' 这适合内联键盘,但 menu[i]) 被视为文本。 如果我删除单引号能够获取数据但内联键盘不起作用。
任何建议。
【问题讨论】:
-
在您的情况下,当您想使用包含变量的
'{"a":(menu[i]),"b":(menu[i])}'的值作为字符串时,我认为您可以将keyBoardData.push([{'text': menu[i], 'callback_data': '{"a":(menu[i]),"b":(menu[i])}' }]);修改为keyBoardData.push([{'text': menu[i], 'callback_data': JSON.stringify({"a":menu[i],"b":menu[i]})}]);。但我无法理解but inline keyboard not works.。我可以问你问题的细节吗?
标签: javascript google-apps-script telegram-bot