Для передачи данных с веб-версии Telegram на серверное приложение можно использовать webhook, который позволяет Telegram отправлять обновления на ваш сервер в реальном времени. Для этого необходимо настроить webhook на вашем сервере и зарегистрировать его в API Telegram.
Чтобы реализовать отправку данных при нажатии кнопки с сохранением приложения открытым в webapp, вы можете использовать Long Polling в библиотеке aiogram 3. Для этого необходимо создать асинхронный цикл, который будет постоянно проверять наличие новых сообщений и обновлений от пользователя.
Пример реализации может выглядеть примерно так:
```python
import asyncio
from aiogram import Bot, Dispatcher, types
API_TOKEN = 'YOUR_API_TOKEN'
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
# Обработчик кнопки
@dp.message_handler(lambda message: message.text == 'Button')
async def process_button_message(message: types.Message):
# Отправка данных на серверное приложение
# sendData(data)
# Запуск цикла Long Polling
async def main():
await dp.start_polling()
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.create_task(main())
loop.run_forever()
```
Здесь при нажатии на кнопку "Button" будет вызываться функция `process_button_message`, которая отправит данные на серверное приложение. Вся обработка происходит в асинхронном режиме, что позволяет избежать блокировок приложения.