Warning
🚧 Проект находится в активной разработке
Бот пока не доступен для публичного использования. Следите за обновлениями!
Journal Bot — это Telegram бот для студентов Политеха, который предоставляет удобный доступ к электронному журналу успеваемости edu-tpi.donstu.ru прямо в мессенджере. Проект построен на современном асинхронном стеке технологий с использованием профессиональной архитектуры для обеспечения безопасности, производительности и масштабируемости.
- 📊 Просмотр оценок - получайте актуальную информацию об оценках по всем дисциплинам
- 🔔 Уведомления - автоматические алерты о появлении новых оценок в электронном журнале
- 📈 Статистика - анализ успеваемости: средний балл, динамика по предметам, посещаемость
- 📅 Фильтрация - просмотр оценок за выбранный период или по конкретной дисциплине
- 📄 Экспорт данных - выгрузка таблиц с оценками в Excel для дальнейшего анализа
- 🔐 Безопасность - шифрование учетных данных edu-tpi в защищенной базе PostgreSQL
- 🔄 Авто-синхронизация - регулярное обновление данных из электронного журнала
- 🔐 Безопасность - все данные хранятся в защищенной базе данных PostgreSQL
- 🎨 Админ-панель - удобный веб-интерфейс на Flask-Admin для управления
- 📊 Аналитика - интеграция с Amplitude, PostHog или Google Analytics
- 📈 Мониторинг - Prometheus + Grafana для отслеживания производительности
- 🐛 Отслеживание ошибок - интеграция с Sentry
- 🌍 Интернационализация - поддержка нескольких языков
Journal Bot создан для студентов ПИ ДГТУ, которые хотят:
- Быстро проверять оценки без входа в веб-версию журнала
- Получать мгновенные уведомления о новых оценках
- Отслеживать свою академическую успеваемость
- Экспортировать данные для личного анализа
- Все учетные данные от edu-tpi шифруются с использованием Fernet (симметричное шифрование)
- Пароли хранятся в зашифрованном виде в защищенной базе данных PostgreSQL
- Ключи шифрования хранятся отдельно в переменных окружения
- Регулярное обновление зависимостей для устранения уязвимостей
- Rate limiting для защиты от злоупотреблений
- Python 3.10 или выше
- PostgreSQL 15+
- Redis 7+
- Аккаунт в системе edu-tpi.donstu.ru
- Telegram Bot Token (получить у @BotFather)
/start- Начать работу с ботом/login- Авторизация в системе edu-tpi/grades- Показать все оценки за текущий семестр/stats- Статистика успеваемости и посещаемости/sync- Принудительная синхронизация с журналом/settings- Настройки уведомлений и параметров/logout- Выход из системы
- Базовая авторизация и синхронизация с edu-tpi
- Просмотр оценок и фильтрация по предметам
- Система уведомлений о новых оценках
- Статистика и аналитика успеваемости
- Экспорт данных в Excel/PDF
- Графики динамики успеваемости
- Напоминания о предстоящих экзаменах
- Интеграция с расписанием занятий
- Поддержка других вузов
Этот бот является неофициальным инструментом и не связан с официальной системой edu-tpi.donstu.ru или администрацией ДГТУ. Используйте на свой страх и риск. Разработчики не несут ответственности за сохранность учетных данных и точность отображаемой информации.
- Клонируйте репозиторий:
git clone https://github.com/goxa2020/journal_bot.git
cd journal_bot
- Создайте
.envфайл на основе.env.example:
cp .env.example .env
-
Настройте переменные окружения в
.envфайле (как минимумBOT_TOKEN, настройки БД и Redis) -
Запустите сервисы:
docker compose up -d --build
- Установите зависимости с помощью uv:
uv sync --frozen --all-groups
-
Запустите необходимые сервисы (PostgreSQL и Redis)
-
Настройте
.envфайл -
Примените миграции:
uv run alembic upgrade head
- Запустите бота:
uv run python -m bot
- Запустите админ-панель (опционально):
uv run gunicorn -c admin/gunicorn_conf.py
- Python 3.10+ - основной язык разработки
- aiogram - асинхронный фреймворк для Telegram Bot API
- SQLAlchemy 2.0 - ORM для работы с базой данных
- Alembic - система миграций базы данных
- Pydantic V2 - валидация данных
- PostgreSQL - основная база данных
- Redis - кеширование и FSM
- PGBouncer - connection pooling для PostgreSQL
- Docker & Docker Compose - контейнеризация
- uv - современный менеджер пакетов Python
- GitHub Actions - CI pipeline
- pre-commit - git hooks для качества кода
- Prometheus - сбор метрик
- Grafana - визуализация метрик
- Sentry - отслеживание ошибок
- Amplitude/PostHog - продуктовая аналитика
- Flask-Admin - административный интерфейс
- AdminLTE - UI для админ-панели
- Gunicorn - WSGI сервер
journal_bot/
├── bot/ # Основной код бота
│ ├── handlers/ # Обработчики команд и событий
│ ├── keyboards/ # Клавиатуры (inline и reply)
│ ├── database/ # Модели и работа с БД
│ ├── middlewares/ # Промежуточные обработчики
│ ├── services/ # Бизнес-логика
│ ├── locales/ # Файлы локализации
│ └── core/ # Настройки и конфигурация
├── admin/ # Админ-панель
├── migrations/ # Миграции Alembic
├── configs/ # Конфигурации для мониторинга
├── scripts/ # Вспомогательные скрипты
├── docker-compose.yml # Docker Compose конфигурация
├── Dockerfile # Dockerfile для бота
├── Makefile # Make команды
└── pyproject.toml # Зависимости и настройки проекта
Основные переменные окружения в .env:
| Переменная | Описание |
|---|---|
BOT_TOKEN |
Токен Telegram бота |
DB_HOST, DB_PORT, DB_USER, DB_PASS, DB_NAME |
Настройки PostgreSQL |
REDIS_HOST, REDIS_PORT, REDIS_PASS |
Настройки Redis |
ADMIN_HOST, ADMIN_PORT |
Настройки админ-панели |
SENTRY_DSN |
DSN для Sentry (опционально) |
AMPLITUDE_API_KEY |
API ключ Amplitude (опционально) |
Полный список переменных смотрите в файле .env.example
uv run pre-commit install
uv run alembic revision --autogenerate -m "описание изменений"
uv run alembic upgrade head
make help \# Показать все доступные команды
make lint \# Запустить линтеры
make format \# Форматировать код
make migrate \# Применить миграции
После запуска через Docker Compose доступны:
- Grafana: http://localhost:3000
- Prometheus: http://localhost:9090
- Админ-панель: http://localhost:8000
Буду рад вашему вкладу! Если у вас есть предложения по улучшению:
- Сделайте Fork репозитория
- Создайте ветку для новой функции (
git checkout -b feature/amazing-feature) - Зафиксируйте изменения (
git commit -m 'Add amazing feature') - Отправьте в ветку (
git push origin feature/amazing-feature) - Откройте Pull Request
Проект распространяется под лицензией MIT. Подробности в файле LICENSE.
Автор: goxa2020
Сделано с ❤️ для вашего удобства