https://github.com/nata-practices/studentfvtbot
A comprehensive learning process management system that combines a Telegram bot and a web-based administration panel.
https://github.com/nata-practices/studentfvtbot
async flask mongodb python python-telegram-bot telegram-bot
Last synced: 2 months ago
JSON representation
A comprehensive learning process management system that combines a Telegram bot and a web-based administration panel.
- Host: GitHub
- URL: https://github.com/nata-practices/studentfvtbot
- Owner: Nata-Practices
- Created: 2025-06-28T07:02:44.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2025-06-28T07:03:55.000Z (about 1 year ago)
- Last Synced: 2025-06-28T07:43:48.128Z (about 1 year ago)
- Topics: async, flask, mongodb, python, python-telegram-bot, telegram-bot
- Language: Python
- Homepage:
- Size: 0 Bytes
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# StudentFVTBot
Telegram бот для студентов, преподавателей и администрации университета с веб-панелью управления.
## Описание
StudentFVTBot - комплексная система для автоматизации учебного процесса, включающая Telegram-бота и веб-интерфейс администрирования. Система предоставляет студентам доступ к расписанию, учебным материалам, контактам преподавателей и возможность задавать вопросы. Преподаватели могут управлять материалами, отвечать на вопросы и делать рассылки. Администраторы имеют полный контроль над системой через веб-панель.
## Функциональность
### Для студентов
- Просмотр расписания занятий
- Доступ к учебным материалам
- Получение контактов института
- Отправка вопросов преподавателям
- Настройка персональных напоминаний
- Просмотр карты университета
- Отслеживание статуса обращений
### Для преподавателей
- Загрузка и управление учебными материалами
- Ответы на вопросы студентов
- Массовые рассылки по группам
- Просмотр информации о студентах
### Для администраторов
- Управление пользователями и ролями
- Мониторинг активности системы
- Настройка команд бота
- Просмотр логов и статистики
- Управление режимами работы бота
## Требования
- Python 3.8+
- MongoDB
- Telegram Bot Token
## Установка
1. Клонируйте репозиторий:
```bash
git clone https://github.com/yourusername/StudentFVTBot.git
cd StudentFVTBot
```
2. Установите зависимости:
```bash
pip install -r requirements.txt
```
3. Создайте файл `.env` в корневой директории со следующими параметрами:
```
DB_URL=connection string to mongodb
DB_NAME=mongodb name
TELEGRAM_TOKEN=telegram bot token
ENCRYPTION_KEY=encryption key
ADMIN_USERNAME=webapp admin username
ADMIN_PASSWORD=webapp admin password
```
4. Запустите приложение:
```bash
python main.py
```
## Структура проекта
```
StudentFVTBot/
│
├── bot/ # Модули Telegram-бота
│ ├── __init__.py # Регистрация всех обработчиков
│ ├── contacts_handler.py # Обработчик команды контактов
│ ├── login_handler.py # Обработчик авторизации
│ ├── map_handler.py # Обработчик карты университета
│ ├── materials_handler.py # Обработчик учебных материалов
│ ├── notifications_handler.py # Обработчик напоминаний
│ ├── questions_handler.py # Обработчик вопросов студентов
│ ├── questions_tracker_handler.py # Трекер вопросов
│ ├── start_handler.py # Обработчик команды /start
│ └── timetable_handler.py # Обработчик расписания
│
├── core/ # Основные модули системы
│ ├── models/ # Модели данных
│ │ ├── command_config.py # Конфигурация команд
│ │ ├── config.py # Системные настройки
│ │ ├── notification_config.py # Конфигурация уведомлений
│ │ ├── question_config.py # Конфигурация вопросов
│ │ └── users.py # Модель пользователей
│ ├── db.py # Работа с базой данных
│ └── templates.py # Шаблоны документов
│
├── services/ # Сервисные модули
│ ├── encryption.py # Сервис шифрования
│ └── schedule_parser.py # Парсер расписания
│
├── webapp/ # Веб-приложение
│ ├── routes/ # Маршруты Flask
│ │ ├── __init__.py # Инициализация маршрутов
│ │ ├── announcements_routes.py # Рассылки
│ │ ├── auth_routes.py # Авторизация
│ │ ├── check_routes.py # Проверки системы
│ │ ├── dashboard_routes.py # Главная панель
│ │ ├── logs_routes.py # Просмотр логов
│ │ ├── materials_routes.py # Управление материалами
│ │ ├── questions_routes.py # Управление вопросами
│ │ ├── settings_routes.py # Настройки системы
│ │ └── user_routes.py # Управление пользователями
│ ├── static/ # Статические файлы
│ │ ├── css/ # Стили
│ │ └── icons/ # Иконки
│ └── templates/ # HTML шаблоны
│ ├── announcements.html # Страница рассылок
│ ├── base.html # Базовый шаблон
│ ├── index.html # Главная страница
│ ├── login.html # Страница входа
│ ├── logs.html # Страница логов
│ ├── materials.html # Страница материалов
│ ├── questions.html # Страница вопросов
│ ├── settings.html # Страница настроек
│ └── users.html # Страница пользователей
│
├── utils/ # Вспомогательные утилиты
│ ├── check_utils.py # Проверки доступности
│ └── logger_utils.py # Настройка логирования
│
├── tests/ # Тесты
│ ├── test_check_utils.py
│ ├── test_encryption.py
│ ├── test_logger_utils.py
│ ├── test_measure_duration.py
│ └── test_schedule_parser.py
│
├── schedules/ # Файлы расписания
│ └── mapping.json # Маппинг групп к файлам
│
├── materials/ # Учебные материалы (создается автоматически)
├── logs/ # Логи приложения (создается автоматически)
├── data/ # Данные приложения
│ └── scheme.jpg # Схема университета
│
├── main.py # Точка входа приложения
├── scheduler.py # Планировщик задач
├── requirements.txt # Зависимости Python
├── .gitignore # Игнорируемые файлы Git
└── README.md # Документация
```
## Архитектура
### Telegram Bot
- Использует библиотеку python-telegram-bot
- Асинхронная обработка команд
- ConversationHandler для многошаговых диалогов
- Декораторы для проверки доступности и измерения производительности
### Web Application
- Flask-приложение с Blueprint архитектурой
- Система авторизации с поддержкой ролей
- Responsive дизайн с использованием CSS Grid
- AJAX для динамического обновления контента
### База данных
- MongoDB для хранения данных
- Коллекции: users, config, notifications, questions, data
- Шифрование паролей с использованием Fernet
### Безопасность
- Шифрование паролей пользователей
- Проверка ролей для доступа к функциям
- Защита от SQL-инъекций через параметризованные запросы
- CSRF-защита через Flask sessions
## Команды бота
- `/start` - Начало работы с ботом
- `/login <группа>` - Авторизация в системе
- `/get_timetable` - Получить расписание
- `/contacts` - Контакты института
- `/materials` - Учебные материалы
- `/questions` - Задать вопрос преподавателю
- `/create_notification` - Создать напоминание
- `/notification_list` - Список напоминаний
- `/map` - Карта университета
- `/tracker` - Отслеживание вопросов
## Веб-интерфейс
Доступен по адресу `http://localhost:5000` после запуска приложения.
### Страницы администратора
- Главная панель - статистика и управление ботом
- Пользователи - управление пользователями и ролями
- Вопросы - просмотр и ответы на вопросы
- Логи - системные логи
- Настройки - конфигурация бота и команд
### Страницы преподавателя
- Материалы - загрузка и управление файлами
- Рассылка - отправка сообщений студентам
- Вопросы - ответы на вопросы студентов
## Мониторинг
Система собирает следующую статистику:
- Количество выполнений команд
- Время выполнения команд
- Количество новых пользователей
- Активность по группам
- История авторизаций
## Разработка
### Добавление новой команды
1. Создайте обработчик в директории `bot/`
2. Зарегистрируйте обработчик в `bot/__init__.py`
3. Добавьте команду в список BotCommand в `main.py`
### Добавление нового маршрута веб-приложения
1. Создайте файл маршрута в `webapp/routes/`
2. Зарегистрируйте Blueprint в `webapp/routes/__init__.py`
3. Создайте соответствующий шаблон в `webapp/templates/`
## Тестирование
Запуск тестов:
```bash
pytest
```