Telegram давно уже не просто мессенджер для переписки — это целая платформа, где можно строить ботов, запускать мини-игры, и вот теперь — пилить свои Web Apps прямо внутри чатов. Это не просто ссылки на сайты, а настоящие веб-приложения, которые интегрируются с Telegram на уровне UI и API. Если ты когда-то хотел запускать свои сервисы прямо в чате — добро пожаловать в клуб!
Возможности Telegram Web App
- Встраивание кастомных интерфейсов (React, Vue, Angular, ванильный JS — что душе угодно).
- Доступ к Telegram API: можно получать user_id, имя, аватарку, а также отправлять данные обратно в чат.
- Работа на любых устройствах, где есть Telegram (мобила, десктоп, web-версия).
- Безопасность: Telegram сам заботится о токенах и авторизации.
- Возможность оплаты прямо в Web App через Telegram Payments.
Что требуется (требования, ос, железо)
- Любая ОС: Linux, macOS, Windows — не важно, всё крутится на Node.js и браузере.
- Node.js: Желательно LTS-версия (16+), чтобы не ловить баги с пакетами.
- Telegram-бот: Без него никуда. Создаём через BotFather.
- Хостинг для фронта: Можно локально для теста, но для продакшена нужен публичный HTTPS (Cloudflare Pages, GitHub Pages, Render, Vercel и т.д.).
- Базовые знания JS/HTML/CSS: Ну, ты же не просто так сюда пришёл 🙂
Установка — пошаговая инструкция
- Создаём бота:
В Telegram ищем BotFather, пишем/newbot, даём имя, получаем токен. Сохраняем! - Пилим фронт:
npx create-react-app tg-webapp-demo cd tg-webapp-demo npm start
Или любой другой фреймворк, можно даже простую HTML-страницу.
- Встраиваем Telegram Web Apps SDK:
Добавь вpublic/index.htmlперед закрывающим</body>:<script src="https://telegram.org/js/telegram-web-app.js"></script>
Теперь в JS доступен глобальный объект
window.Telegram.WebApp. - Подключаем Web App к боту:
В боте должна быть кнопка, которая вызывает Web App. Пример на Node.js (telegraf):const { Telegraf, Markup } = require('telegraf'); const bot = new Telegraf('YOUR_BOT_TOKEN'); bot.command('start', (ctx) => { ctx.reply('Жми кнопку!', Markup.keyboard([ [Markup.button.webApp('Открыть WebApp', 'https://твой_домен/app')] ]).resize()); }); bot.launch();Не забудь заменить
https://твой_домен/appна свой адрес! - Публикуем фронт:
npm run build
Заливаем содержимое
build/на любой HTTPS-хостинг.
Для локального теста можно использовать ngrok:npx serve -s build npx ngrok http 5000
ngrok даст тебе публичный HTTPS-URL.
- Проверяем:
Открываем бота в Telegram, жмём кнопку — если всё ок, откроется твой Web App с Telegram Web Apps API.
Использование, полный список команд и вариантов
Вот что ты можешь делать через window.Telegram.WebApp:
Telegram.WebApp.initData— строка с данными пользователя (JWT-подобная, для верификации на сервере).Telegram.WebApp.initDataUnsafe— объект с parsed данными (user, chat, query_id и т.д.).Telegram.WebApp.sendData(data)— отправить строку обратно боту (например, выбранный товар).Telegram.WebApp.close()— закрыть Web App.Telegram.WebApp.expand()— развернуть Web App на весь экран.Telegram.WebApp.MainButton— объект для управления главной кнопкой (цвет, текст, обработчик onClick).Telegram.WebApp.HapticFeedback— тактильная отдача (на мобиле).
Полный список методов и описания смотри в официальной документации Telegram Web Apps.
Ошибки, как делать не надо
- Не забывай про HTTPS! Telegram Web Apps не работает на HTTP, только на HTTPS.
- Не хардкодь токены! Не передавай токен бота или секреты в фронт.
- Не доверяй initData без верификации на сервере! Проверяй подпись через свой бэкенд — иначе можно подделать юзера.
- Не рассчитывай на работу в старых клиентах Telegram. Web Apps поддерживаются только в актуальных версиях.
- Не пихай тяжелый фронт с кучей статики. Telegram открывает Web App внутри WebView, юзеры не любят ждать.
Пример реального использования в окружении
Я недавно делал Web App для внутреннего учета оборудования в офисе. Кнопка в боте открывает форму, где можно отсканировать QR-код с компа, добавить комментарий, и отправить результат обратно в чат. Всё работает прямо на мобиле, не надо ставить отдельные приложения. Данные летят через sendData() — бот ловит их и пишет в Google Sheets через API.
Заключение
Telegram Web Apps — это реально крутая тема для быстрой интеграции твоих сервисов прямо в Telegram. Можно делать магазины, таск-трекеры, системы учета, мини-игры — почти всё что угодно. Главное — не забывай про безопасность и валидацию данных. Если хочешь почитать подробнее, вот официальная документация Telegram Web Apps и подборка примеров на GitHub.
Если остались вопросы — ищи меня на Хабре, Reddit или в чате DevOps-ов. Удачи, и пусть твои Web Apps будут быстрыми и удобными!
Ваш отзыв