微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

动态创建多维嵌入式键盘电报bot API?

如何解决动态创建多维嵌入式键盘电报bot API?

我的代码

onChange

结果是:

        .onChange(of: selectedTab) { newValue in
            model.myFunction(item: newValue)
        }

但是我试图得到:

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};

使用电报bot API和Google表格应用脚本。 需要将列数据显示为电报中的“按钮”,并且在选择按钮时需要使用callback_data过滤工作表数据并返回结果。

在这里有问题:'{“ a” :( menu [i]),“ b” :( menu [i])}'这适合嵌入式键盘,但menu [i])被当作文本。 如果我删除单引号,则可以获取数据,但嵌入式键盘不起作用。

任何建议。

解决方法

请勿通过对字符串进行硬编码来创建

使用JSON.stringify()URLSearchParams()格式化所需的数据;

使用相同数据的示例;结果如下;

// Create keyBoard data
var keyBoardData = [];
var menu = ['Nightclub','Parks'];
for (var i = 0; i < menu.length; i++) {
  keyBoardData.push({
      text: menu[i],callback_data: menu[i]
  });
}

// Create fetch options
var requestOptions = new URLSearchParams({
  reply_markup: JSON.stringify({ "inline_keyboard": [ keyBoardData ]}),chat_id: 12345678,text: 'Test Keyboard'
}).toString();

// Send test
const token = '1134534202?????????????';
fetch("https://api.telegram.org/bot" + token + "/sendMessage?" + requestOptions)
  .then(response => response.json())
  .then(result => console.log(result))
  .catch(error => console.log('error',error));

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。