- python-telegram-bot - библиотека для создания Telegram ботов
- SQLModel - ORM для работы с базой данных
- AsyncPG - асинхронный PostgreSQL драйвер
- Pydantic Settings - управление конфигурацией
- HTTPX - HTTP клиент для запросов к API
- Alembic - система миграций базы данных
Telegram Mini App (TWA - Telegram Web App) - это веб-приложение, которое запускается внутри Telegram и имеет доступ к данным пользователя и функциям мессенджера. Mini App позволяет создавать полноценные интерактивные приложения с веб-интерфейсом, не покидая Telegram.
Наш проект состоит из трех основных компонентов:
- Backend API - FastAPI сервер для обработки данных пользователей
- Telegram Bot (этот репозиторий) - бот для запуска Mini App и обработки команд
- Frontend - React приложение, которое отображается в Telegram
- Python 3.11+
- PostgreSQL база данных
- uv - менеджер пакетов Python
- Найдите @BotFather в Telegram
- Отправьте команду
/newbot - Следуйте инструкциям для создания бота
- Получите токен бота (BOT_TOKEN)
- Настройте Mini App:
- Отправьте команду
/mybots - Выберите своего бота
- Нажмите "Bot Settings" → "Menu Button"
- Установите URL вашего фронтенд приложения
- Введите название для кнопки (например, "Открыть приложение")
- Отправьте команду
Создайте файл .env в корне проекта:
# Telegram Bot Token (получить от @BotFather)
BOT_TOKEN=your_bot_token_here
# URL Mini App (для кнопки меню)
APP_URL=https://your-mini-app-domain.com
# URL Backend API
API_URL=http://localhost:8000
# База данных PostgreSQL (совместно с Backend API)
POSTGRES_DSN=postgresql+asyncpg://username:password@localhost:5432/tg_mini_appuv sync- Создайте базу данных PostgreSQL:
CREATE DATABASE tg_mini_app;- База данных будет использоваться совместно с Backend API
uv run python main.py- /start - приветствие и информация о Mini App
- 📱 Открыть приложение - запуск Mini App интерфейса
- 🔗 Проверить связь с backend - проверка связи с Backend API
- Bot Auth Token - система авторизации бота через подписанные токены
- Ping endpoint - кнопка для проверки связи с Backend API с полной авторизацией
- Health Check - диагностика состояния Backend с детальной информацией об ошибках
- Передача данных пользователя в Mini App через WebApp
- Безопасная аутентификация через Telegram WebApp API
- Бот создает JWT-подобный токен с
telegram_idпользователя - Токен подписывается секретным ключом (BOT_TOKEN)
- Backend проверяет подпись и находит пользователя в базе данных
- При успешной проверке возвращает данные API
- Автоматическая регистрация пользователей при первом запуске
- Интеграция с Mini App интерфейсом
- Логирование всех операций
- Обработка ошибок и исключений
├── main.py # Точка входа приложения
├── config/
│ └── settings.py # Настройки приложения
├── bot/
│ └── handlers/
│ └── start_handler.py # Обработчики команд бота
├── database/
│ ├── engine.py # Настройка подключения к БД
│ └── session.py # Сессии базы данных
├── models/
│ └── user.py # Модели пользователей
├── repositories/
│ └── user_repository.py # Репозиторий для работы с пользователями
├── services/
│ └── profile_service.py # Сервис для работы с профилями
└── utils/
└── logger.py # Настройка логирования
Настройки приложения находятся в config/settings.py и используют Pydantic Settings для удобного управления переменными окружения.
Бот автоматически настраивается для работы с Mini App через кнопку меню. При нажатии на кнопку пользователь перенаправляется в веб-интерфейс, где может:
- Просматривать свой профиль
- Редактировать информацию о себе
- Управлять социальными сетями
- Использовать все функции приложения через удобный веб-интерфейс