Telegram бот для студентов, преподавателей и администрации университета с веб-панелью управления.
StudentFVTBot - комплексная система для автоматизации учебного процесса, включающая Telegram-бота и веб-интерфейс администрирования. Система предоставляет студентам доступ к расписанию, учебным материалам, контактам преподавателей и возможность задавать вопросы. Преподаватели могут управлять материалами, отвечать на вопросы и делать рассылки. Администраторы имеют полный контроль над системой через веб-панель.
- Просмотр расписания занятий
- Доступ к учебным материалам
- Получение контактов института
- Отправка вопросов преподавателям
- Настройка персональных напоминаний
- Просмотр карты университета
- Отслеживание статуса обращений
- Загрузка и управление учебными материалами
- Ответы на вопросы студентов
- Массовые рассылки по группам
- Просмотр информации о студентах
- Управление пользователями и ролями
- Мониторинг активности системы
- Настройка команд бота
- Просмотр логов и статистики
- Управление режимами работы бота
- Python 3.8+
- MongoDB
- Telegram Bot Token
- Клонируйте репозиторий:
git clone https://github.com/yourusername/StudentFVTBot.git
cd StudentFVTBot- Установите зависимости:
pip install -r requirements.txt- Создайте файл
.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
- Запустите приложение:
python main.pyStudentFVTBot/
│
├── 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 # Документация
- Использует библиотеку python-telegram-bot
- Асинхронная обработка команд
- ConversationHandler для многошаговых диалогов
- Декораторы для проверки доступности и измерения производительности
- 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 после запуска приложения.
- Главная панель - статистика и управление ботом
- Пользователи - управление пользователями и ролями
- Вопросы - просмотр и ответы на вопросы
- Логи - системные логи
- Настройки - конфигурация бота и команд
- Материалы - загрузка и управление файлами
- Рассылка - отправка сообщений студентам
- Вопросы - ответы на вопросы студентов
Система собирает следующую статистику:
- Количество выполнений команд
- Время выполнения команд
- Количество новых пользователей
- Активность по группам
- История авторизаций
- Создайте обработчик в директории
bot/ - Зарегистрируйте обработчик в
bot/__init__.py - Добавьте команду в список BotCommand в
main.py
- Создайте файл маршрута в
webapp/routes/ - Зарегистрируйте Blueprint в
webapp/routes/__init__.py - Создайте соответствующий шаблон в
webapp/templates/
Запуск тестов:
pytest