Не отправляются данные через Telegram.WebApp.sendData

Есть бот, написанный с помощью pyTelegramBotApi.

Я пытаюсь отправить данные с веб-приложения, запущенного через bot menu-кнопку, на телеграмм бота с помощью window.Telegram.WebApp.sendData('test');.

введите сюда описание изображения

Вчера данные отправлялись, хоть и приходилось после каждой отправки данных перезаходить в чат, чтобы отправить их снова.

введите сюда описание изображения

Сегодня же данные не отправляются совсем.

В ниже приведенных ссылках, пишут что sendData работает только если запуск идет через обычную клавиатуру, а не через inline, коей является кнопка Menu. Хотя в примере @DurgerKingBot, все вроде как работает через inline-кнопки.

введите сюда описание изображения

https://stackoverflow.com/questions/71909144/dont-get-a-response-from-from-telegram-web-app-for-bots

https://github.com/telegramdesktop/tdesktop/issues/24390

Примечание. Проблема именно в вызове через inline-кнопку, через обычную все прекрасно работает


Ответы (2 шт):

Автор решения: Vitalik_

На официальном сайте Телеграм написано что sendData() можно отправить только через Keyboard button

This method is only available for Web Apps launched via a Keyboard button.

Как вариант с решением этой проблемы, можно создать свой сервер который будет ловить запросы с Web App и делать нужное Вам поведение. Этим сервером одновременно может и быть процесс который отвечает за бота.

То есть, пользователь заходит на Order Food ->
Например нажимает на кнопку ->
Web App отправляет запрос на ваш бек ->
Бек отправляет инфу на сервер с ботом (или бек и есть ваш сервер с ботом) ->
Вы выполняете нужные действия (отправляете например текст пользователю) ->
Возвращаете Response в Web App ->
И выполняете window.Telegram.WebApp.close()

В итоге поведение будет аналогичное тому что Вам нужно

Когда отправляете запрос с WebApp на Ваш сервер для идентификации юзера можно получить например вот так window.Telegram.WebApp.initDataUnsafe.user

→ Ссылка
Автор решения: Exit load

Если в initDataUnsafe ничего нет, то данные можно передавать через url-параметры GET запроса к webapp.

https://example.com/webapp?hello=<user_id>
→ Ссылка