Не отправляются данные через 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 шт):
На официальном сайте Телеграм написано что 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
Если в initDataUnsafe ничего нет, то данные можно передавать через url-параметры GET запроса к webapp.
https://example.com/webapp?hello=<user_id>


