Vardges Academy — Telegram-бот для продажи онлайн-курсов по ИИ для предпринимателей.
Каталог курсов, корзина, оплата через ЮKassa, автоматическая выдача материалов, админ-панель — всё в одном боте.
🌐 Mini App: vardges13.github.io/course-bot — веб-приложение академии внутри Telegram
| Функция | Описание |
|---|---|
| 📚 Каталог курсов | Просмотр курсов с описанием и ценами |
| 🛒 Корзина | Добавление / удаление курсов, итоговая сумма |
| 💳 Оплата ЮKassa | Redirect-схема, автоматический webhook |
| 📦 Мои курсы | Просмотр купленных курсов + ссылки на материалы |
| 🔧 Админ-панель | Добавление/удаление курсов, статистика продаж |
| 🎓 Mini App | Telegram WebApp с каталогом и тарифами |
- Python 3.12+
- aiogram 3.x — асинхронный фреймворк для Telegram Bot API
- SQLAlchemy + aiosqlite — ORM + асинхронный SQLite
- ЮKassa SDK — приём платежей
- aiohttp — webhook-сервер для уведомлений ЮKassa
- Docker — контейнеризация
course-bot/
├── bot/
│ ├── __init__.py
│ ├── __main__.py # Точка входа
│ ├── config.py # Конфигурация из .env
│ ├── handlers/
│ │ ├── __init__.py # Регистрация роутеров
│ │ ├── start.py # /start, каталог, мои курсы
│ │ ├── cart.py # Корзина и оформление заказа
│ │ ├── payment.py # Webhook ЮKassa
│ │ └── admin.py # Админ-панель
│ ├── keyboards/
│ │ ├── __init__.py
│ │ └── inline.py # Инлайн-клавиатуры
│ ├── models/
│ │ ├── __init__.py
│ │ ├── base.py # Базовый класс, движок БД
│ │ ├── user.py # Модель User
│ │ ├── course.py # Модель Course
│ │ └── order.py # Модели Order, OrderItem, Payment
│ └── services/
│ ├── __init__.py
│ ├── db.py # CRUD-операции с БД
│ └── payment.py # Работа с API ЮKassa
├── docs/ # GitHub Pages (Mini App)
│ └── index.html
├── webapp/ # Исходники Mini App
│ └── index.html
├── .env.example # Шаблон переменных окружения
├── requirements.txt
├── Dockerfile
├── docker-compose.yml
├── LICENSE
└── README.md
- Python 3.12+
- Telegram-бот (токен от @BotFather)
- Аккаунт ЮKassa (можно тестовый)
git clone https://github.com/Vardges13/course-bot.git
cd course-bot
cp .env.example .envОтредактируйте .env — заполните все переменные:
| Переменная | Описание |
|---|---|
BOT_TOKEN |
Токен бота от @BotFather |
YOOKASSA_SHOP_ID |
ID магазина в ЮKassa |
YOOKASSA_SECRET |
Секретный ключ ЮKassa |
ADMIN_IDS |
Telegram ID админов через запятую |
WEBHOOK_HOST |
Публичный URL сервера (для webhook ЮKassa) |
WEBHOOK_PORT |
Порт webhook-сервера (по умолчанию 8080) |
DATABASE_URL |
Строка подключения к БД (по умолчанию SQLite) |
docker compose up -d --buildБот запустится и будет слушать:
- Telegram polling — для сообщений пользователей
- HTTP порт 8080 — для webhook ЮKassa
python -m venv venv
source venv/bin/activate # Linux/macOS
pip install -r requirements.txt
python -m botВ личном кабинете ЮKassa укажите URL для уведомлений:
https://yourdomain.com:8080/webhook/yookassa
События: payment.succeeded и payment.canceled.
| Команда | Описание |
|---|---|
/start |
Приветствие + главное меню |
/admin |
Админ-панель (только для ADMIN_IDS) |
Доступна только пользователям, чей Telegram ID указан в ADMIN_IDS.
- ➕ Добавить курс — пошаговый ввод: название, описание, цена, ссылка на материалы
- 🗑 Удалить курс — выбор из списка (мягкое удаление)
- 📊 Статистика — кол-во пользователей, заказов, выручка
| Таблица | Описание |
|---|---|
users |
Пользователи Telegram |
courses |
Курсы (название, описание, цена, ссылка, статус) |
orders |
Заказы (pending / paid / cancelled) |
order_items |
Элементы заказа (связь заказ ↔ курс) |
payments |
Платежи ЮKassa (pending / succeeded / canceled) |
БД создаётся автоматически при первом запуске.
Бот включает Telegram Mini App — полноценное веб-приложение внутри Telegram:
- Каталог направлений с красивым UI
- Информация об академии
- Выбор тарифных планов
- Интеграция с Telegram WebApp API
Mini App размещён на GitHub Pages из папки docs/.
MIT © Vardges Harutyunyan
