【问题标题】:Telegram WebApp sendData method doesn't work on MacOSTelegram WebApp sendData 方法在 MacOS 上不起作用
【发布时间】: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.WebAppwindow.Telegram.WebApp 相同
  • 这似乎是一个错误,它也不适用于我。

标签: telegram telegram-bot telegraf


【解决方案1】:

要从主按钮获取数据,您需要使用键盘打开应用程序。这不适用于内联键盘。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 2021-10-29
    • 2022-10-22
    • 1970-01-01
    相关资源
    最近更新 更多