{"id":29190739,"url":"https://github.com/nata-practices/studentfvtbot","last_synced_at":"2026-04-15T16:02:47.962Z","repository":{"id":301684814,"uuid":"1010018529","full_name":"Nata-Practices/StudentFVTBot","owner":"Nata-Practices","description":"A comprehensive learning process management system that combines a Telegram bot and a web-based administration panel.","archived":false,"fork":false,"pushed_at":"2025-06-28T07:03:55.000Z","size":0,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-28T07:43:48.128Z","etag":null,"topics":["async","flask","mongodb","python","python-telegram-bot","telegram-bot"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Nata-Practices.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-28T07:02:44.000Z","updated_at":"2025-06-28T07:05:46.000Z","dependencies_parsed_at":"2025-06-28T07:43:50.822Z","dependency_job_id":"2f3c5ea1-1f58-48f6-a88d-2cde8f42e2ad","html_url":"https://github.com/Nata-Practices/StudentFVTBot","commit_stats":null,"previous_names":["nata-practices/studentfvtbot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Nata-Practices/StudentFVTBot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nata-Practices%2FStudentFVTBot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nata-Practices%2FStudentFVTBot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nata-Practices%2FStudentFVTBot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nata-Practices%2FStudentFVTBot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Nata-Practices","download_url":"https://codeload.github.com/Nata-Practices/StudentFVTBot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nata-Practices%2FStudentFVTBot/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263052430,"owners_count":23406106,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","flask","mongodb","python","python-telegram-bot","telegram-bot"],"created_at":"2025-07-02T00:11:04.146Z","updated_at":"2026-04-15T16:02:47.903Z","avatar_url":"https://github.com/Nata-Practices.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# StudentFVTBot\n\nTelegram бот для студентов, преподавателей и администрации университета с веб-панелью управления.\n\n## Описание\n\nStudentFVTBot - комплексная система для автоматизации учебного процесса, включающая Telegram-бота и веб-интерфейс администрирования. Система предоставляет студентам доступ к расписанию, учебным материалам, контактам преподавателей и возможность задавать вопросы. Преподаватели могут управлять материалами, отвечать на вопросы и делать рассылки. Администраторы имеют полный контроль над системой через веб-панель.\n\n## Функциональность\n\n### Для студентов\n- Просмотр расписания занятий\n- Доступ к учебным материалам\n- Получение контактов института\n- Отправка вопросов преподавателям\n- Настройка персональных напоминаний\n- Просмотр карты университета\n- Отслеживание статуса обращений\n\n### Для преподавателей\n- Загрузка и управление учебными материалами\n- Ответы на вопросы студентов\n- Массовые рассылки по группам\n- Просмотр информации о студентах\n\n### Для администраторов\n- Управление пользователями и ролями\n- Мониторинг активности системы\n- Настройка команд бота\n- Просмотр логов и статистики\n- Управление режимами работы бота\n\n## Требования\n\n- Python 3.8+\n- MongoDB\n- Telegram Bot Token\n\n## Установка\n\n1. Клонируйте репозиторий:\n```bash\ngit clone https://github.com/yourusername/StudentFVTBot.git\ncd StudentFVTBot\n```\n\n2. Установите зависимости:\n```bash\npip install -r requirements.txt\n```\n\n3. Создайте файл `.env` в корневой директории со следующими параметрами:\n```\nDB_URL=connection string to mongodb\nDB_NAME=mongodb name\nTELEGRAM_TOKEN=telegram bot token\nENCRYPTION_KEY=encryption key\nADMIN_USERNAME=webapp admin username\nADMIN_PASSWORD=webapp admin password\n```\n\n4. Запустите приложение:\n```bash\npython main.py\n```\n\n## Структура проекта\n\n```\nStudentFVTBot/\n│\n├── bot/                          # Модули Telegram-бота\n│   ├── __init__.py              # Регистрация всех обработчиков\n│   ├── contacts_handler.py       # Обработчик команды контактов\n│   ├── login_handler.py          # Обработчик авторизации\n│   ├── map_handler.py           # Обработчик карты университета\n│   ├── materials_handler.py      # Обработчик учебных материалов\n│   ├── notifications_handler.py  # Обработчик напоминаний\n│   ├── questions_handler.py      # Обработчик вопросов студентов\n│   ├── questions_tracker_handler.py # Трекер вопросов\n│   ├── start_handler.py          # Обработчик команды /start\n│   └── timetable_handler.py      # Обработчик расписания\n│\n├── core/                         # Основные модули системы\n│   ├── models/                   # Модели данных\n│   │   ├── command_config.py     # Конфигурация команд\n│   │   ├── config.py            # Системные настройки\n│   │   ├── notification_config.py # Конфигурация уведомлений\n│   │   ├── question_config.py    # Конфигурация вопросов\n│   │   └── users.py             # Модель пользователей\n│   ├── db.py                    # Работа с базой данных\n│   └── templates.py             # Шаблоны документов\n│\n├── services/                     # Сервисные модули\n│   ├── encryption.py            # Сервис шифрования\n│   └── schedule_parser.py       # Парсер расписания\n│\n├── webapp/                       # Веб-приложение\n│   ├── routes/                  # Маршруты Flask\n│   │   ├── __init__.py         # Инициализация маршрутов\n│   │   ├── announcements_routes.py # Рассылки\n│   │   ├── auth_routes.py      # Авторизация\n│   │   ├── check_routes.py     # Проверки системы\n│   │   ├── dashboard_routes.py # Главная панель\n│   │   ├── logs_routes.py      # Просмотр логов\n│   │   ├── materials_routes.py # Управление материалами\n│   │   ├── questions_routes.py # Управление вопросами\n│   │   ├── settings_routes.py  # Настройки системы\n│   │   └── user_routes.py      # Управление пользователями\n│   ├── static/                  # Статические файлы\n│   │   ├── css/                # Стили\n│   │   └── icons/              # Иконки\n│   └── templates/              # HTML шаблоны\n│       ├── announcements.html  # Страница рассылок\n│       ├── base.html          # Базовый шаблон\n│       ├── index.html         # Главная страница\n│       ├── login.html         # Страница входа\n│       ├── logs.html          # Страница логов\n│       ├── materials.html     # Страница материалов\n│       ├── questions.html     # Страница вопросов\n│       ├── settings.html      # Страница настроек\n│       └── users.html         # Страница пользователей\n│\n├── utils/                       # Вспомогательные утилиты\n│   ├── check_utils.py          # Проверки доступности\n│   └── logger_utils.py         # Настройка логирования\n│\n├── tests/                       # Тесты\n│   ├── test_check_utils.py\n│   ├── test_encryption.py\n│   ├── test_logger_utils.py\n│   ├── test_measure_duration.py\n│   └── test_schedule_parser.py\n│\n├── schedules/                   # Файлы расписания\n│   └── mapping.json            # Маппинг групп к файлам\n│\n├── materials/                   # Учебные материалы (создается автоматически)\n├── logs/                       # Логи приложения (создается автоматически)\n├── data/                       # Данные приложения\n│   └── scheme.jpg             # Схема университета\n│\n├── main.py                     # Точка входа приложения\n├── scheduler.py                # Планировщик задач\n├── requirements.txt            # Зависимости Python\n├── .gitignore                 # Игнорируемые файлы Git\n└── README.md                  # Документация\n```\n\n## Архитектура\n\n### Telegram Bot\n- Использует библиотеку python-telegram-bot\n- Асинхронная обработка команд\n- ConversationHandler для многошаговых диалогов\n- Декораторы для проверки доступности и измерения производительности\n\n### Web Application\n- Flask-приложение с Blueprint архитектурой\n- Система авторизации с поддержкой ролей\n- Responsive дизайн с использованием CSS Grid\n- AJAX для динамического обновления контента\n\n### База данных\n- MongoDB для хранения данных\n- Коллекции: users, config, notifications, questions, data\n- Шифрование паролей с использованием Fernet\n\n### Безопасность\n- Шифрование паролей пользователей\n- Проверка ролей для доступа к функциям\n- Защита от SQL-инъекций через параметризованные запросы\n- CSRF-защита через Flask sessions\n\n## Команды бота\n\n- `/start` - Начало работы с ботом\n- `/login \u003cгруппа\u003e` - Авторизация в системе\n- `/get_timetable` - Получить расписание\n- `/contacts` - Контакты института\n- `/materials` - Учебные материалы\n- `/questions` - Задать вопрос преподавателю\n- `/create_notification` - Создать напоминание\n- `/notification_list` - Список напоминаний\n- `/map` - Карта университета\n- `/tracker` - Отслеживание вопросов\n\n## Веб-интерфейс\n\nДоступен по адресу `http://localhost:5000` после запуска приложения.\n\n### Страницы администратора\n- Главная панель - статистика и управление ботом\n- Пользователи - управление пользователями и ролями\n- Вопросы - просмотр и ответы на вопросы\n- Логи - системные логи\n- Настройки - конфигурация бота и команд\n\n### Страницы преподавателя\n- Материалы - загрузка и управление файлами\n- Рассылка - отправка сообщений студентам\n- Вопросы - ответы на вопросы студентов\n\n## Мониторинг\n\nСистема собирает следующую статистику:\n- Количество выполнений команд\n- Время выполнения команд\n- Количество новых пользователей\n- Активность по группам\n- История авторизаций\n\n## Разработка\n\n### Добавление новой команды\n\n1. Создайте обработчик в директории `bot/`\n2. Зарегистрируйте обработчик в `bot/__init__.py`\n3. Добавьте команду в список BotCommand в `main.py`\n\n### Добавление нового маршрута веб-приложения\n\n1. Создайте файл маршрута в `webapp/routes/`\n2. Зарегистрируйте Blueprint в `webapp/routes/__init__.py`\n3. Создайте соответствующий шаблон в `webapp/templates/`\n\n## Тестирование\n\nЗапуск тестов:\n```bash\npytest\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnata-practices%2Fstudentfvtbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnata-practices%2Fstudentfvtbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnata-practices%2Fstudentfvtbot/lists"}