Отправка данных обратно в бот (sendData)
Отправишь данные из Mini App боту через sendData и обработаешь web_app_data на стороне бота.
sendData
Telegram.WebApp.sendData(data) закрывает Mini App и передаёт строку боту как служебное сообщение web_app_data. Работает только если приложение открыто из кнопки клавиатуры типа web_app. Из Menu Button, inline-кнопки или прямой ссылки t.me/... этот путь не подходит — там используй свой HTTPS API + initData.
Лимит строки — до 4096 байт.
Клиент sendData и бот принимает web_app_data
Сначала бот показывает keyboard с web_app:
В Mini App — сбор формы и sendData:
Обработка на бэкенде бота (long polling / webhook):
Как это работает
- Keyboard
web_app— единственный поддерживаемый контекст дляsendData. sendData(string)— Telegram закрывает WebView и кладёт строку вmessage.web_app_data.data.- Бот читает Update; отдельный HTTPS callback от фронта не нужен.
- Для Menu Button / deep link — шлёшь
initDataна свой API, неsendData.
Частые ошибки
Вызываешь sendData из Menu Button → ничего полезного боту не придёт (или метод не сработает как ожидаешь). Открывай форму через keyboard web_app.
Шлёшь нестроковый объект → нужен JSON.stringify. Сырой object API не примет.
Кладёшь секреты в sendData → данные видны боту и проходят через Telegram. Для чувствительных операций — свой сервер + валидация initData.
Что дальше
- Настройка бота через BotFather — keyboard и Menu Button
- initData: проверка на бэкенде — альтернатива sendData для сложных сценариев
- MainButton и BackButton — кнопка «Отправить» на нативной MainButton
Материалы gramdocs.tech носят образовательный характер и не являются финансовой, юридической или инвестиционной рекомендацией. Работа с блокчейном TON и токеном Gram связана с рисками потери средств. Правовая информация