Skip to content

Repository files navigation

StudentFVTBot

Telegram бот для студентов, преподавателей и администрации университета с веб-панелью управления.

Описание

StudentFVTBot - комплексная система для автоматизации учебного процесса, включающая Telegram-бота и веб-интерфейс администрирования. Система предоставляет студентам доступ к расписанию, учебным материалам, контактам преподавателей и возможность задавать вопросы. Преподаватели могут управлять материалами, отвечать на вопросы и делать рассылки. Администраторы имеют полный контроль над системой через веб-панель.

Функциональность

Для студентов

  • Просмотр расписания занятий
  • Доступ к учебным материалам
  • Получение контактов института
  • Отправка вопросов преподавателям
  • Настройка персональных напоминаний
  • Просмотр карты университета
  • Отслеживание статуса обращений

Для преподавателей

  • Загрузка и управление учебными материалами
  • Ответы на вопросы студентов
  • Массовые рассылки по группам
  • Просмотр информации о студентах

Для администраторов

  • Управление пользователями и ролями
  • Мониторинг активности системы
  • Настройка команд бота
  • Просмотр логов и статистики
  • Управление режимами работы бота

Требования

  • Python 3.8+
  • MongoDB
  • Telegram Bot Token

Установка

  1. Клонируйте репозиторий:
git clone https://github.com/yourusername/StudentFVTBot.git
cd StudentFVTBot
  1. Установите зависимости:
pip install -r requirements.txt
  1. Создайте файл .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
  1. Запустите приложение:
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/

Тестирование

Запуск тестов:

pytest

About

A comprehensive learning process management system that combines a Telegram bot and a web-based administration panel.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages