【发布时间】:2022-07-31 05:31:01
【问题描述】:
我正在尝试弄清楚如何正确使用添加到 Telegram API 的 WebApp。
所以,我有一个 React 应用程序和 Bot 的简单设置。 React 应用有计数器,我只需要使用 sendData 方法将计数器数据发送回机器人。
Bot 返回键盘按钮,如 telegram docs 中所述,带有指向我的网络应用程序的链接
private async returnButton(ctx: Context<Update>): Promise<void | object> {
ctx.reply('Enter number', Markup.keyboard([
Markup.button.webApp('Open counter', 'https://75bc-185-115-37-241.eu.ngrok.io')
]).resize())
return {};
}
这是 React 应用程序的一部分:
useEffect(() => {
Telegram.WebApp.ready();
Telegram.WebApp.MainButton.isVisible = true;
setDebug(Telegram.WebApp.sendData.toString());
}, [])
useEffect(() => {
Telegram.WebApp.onEvent('mainButtonClicked', () => {
Telegram.WebApp.MainButton.text = 'Clicked!';
try {
Telegram.WebApp.sendData(JSON.stringify({ counter }));
setDebug(`Sent`);
} catch (e) {
setDebug(`${e}, ${JSON.stringify(e)}`)
}
})
}, [counter])
我添加了
setDebug(Telegram.WebApp.sendData.toString())只是为了 确保方法存在。我没有找到任何调试的好方法,因为我没有 在 webapp 窗口中访问类似 devtools 的东西
所以下面的 gif 显示了当我单击 Mac 客户端上的按钮时会发生什么。调试数据设置为Sent,没有错误弹出。但 modal 并没有按应有的方式关闭,最重要的是 bot 没有从 webapp 接收任何数据。
虽然使用 iOS/ipadOS 电报流可以正常工作。窗口关闭并将数据发送到机器人。
我尝试重新安装 Telegram 客户端,但仍然没有任何变化。是我遗漏了什么还是这是 Mac 客户端错误?
【问题讨论】:
-
以防万一:我使用的是电报网络应用程序类型,所以
Telegram.WebApp与window.Telegram.WebApp相同 -
这似乎是一个错误,它也不适用于我。
标签: telegram telegram-bot telegraf