No description
- Python 98.5%
- Nix 1.5%
| nhm21bot | ||
| tests | ||
| .env.example | ||
| .envrc | ||
| .gitignore | ||
| .python-version | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE | ||
| pyproject.toml | ||
| README.md | ||
| uv.lock | ||
nhmt21bot
Telegram-бот для автоматического парсинга и рассылки изменений в расписании (замен) с официального сайта НХМТ. Бот парсит страницы замен СПО и НПО, нормализует номера аудиторий и распределяет их по корпусам колледжа (ЦОПП, Кванториум, Главный корпус и т.д.).
Стек технологий
- Python 3.13+
- aiogram 3.x для работы с Telegram Bot API
- BeautifulSoup4 / lxml для парсинга HTML
- uv для быстрого управления зависимостями
- Nix для воспроизводимого окружения (опционально)
Установка и локальный запуск
-
Склонируйте репозиторий:
git clone https://github.com/rus07tam/nhmt21bot.git cd nhmt21bot -
Настройте конфигурацию:
cp .env.example .envЗатем откройте файл
.envи укажитеBOT_TOKEN— токен, полученный от @BotFather. -
Установите зависимости проекта с помощью uv:
uv sync -
Запустите бота:
uv run python -m nhm21bot
Альтернативный запуск через Nix
Проект поддерживает работу через Nix Flakes. Для входа в настроенное окружение со всеми зависимостями выполните:
nix develop
Либо используйте direnv (конфигурация .envrc уже есть в репозитории).
Конфигурация (.env)
| Переменная | Описание | Значение по умолчанию |
|---|---|---|
BOT_TOKEN |
Токен Telegram-бота | (обязательно) |
BASE_URL |
Базовый URL страницы замен | https://zamena.nhmt.ru/zamena |
SUFFIX_SPO |
Относительный путь для замен СПО | /spo.php?a=0 |
SUFFIX_NPO |
Относительный путь для замен НПО | /npo.php?a=0 |
ADMIN_ID |
Telegram ID администратора | None |
SYNC_CRON |
Интервал проверки сайта в секундах | 300 |
Структура проекта
nhm21bot/— исходный код бота.bot/— хэндлеры и роутеры aiogram.parser/— логика сбора данных с сайта НХМТ.render/— генерация изображений или PDF-файлов с расписанием.settings.py— настройки приложения (pydantic-settings).sync.py— фоновая синхронизация и проверка обновлений.
tests/— автотесты (pytest).data/— директория для сохранения временных файлов (создается автоматически).
Лицензия
Проект распространяется под лицензией The Unlicense.