No description
  • Python 98.5%
  • Nix 1.5%
Find a file
2026-09-26 15:51:09 +03:00
nhm21bot fix: ensure dead users remain clickable links 2026-09-26 15:51:09 +03:00
tests initial commit 2026-09-04 08:55:16 +03:00
.env.example initial commit 2026-09-04 08:55:16 +03:00
.envrc initial commit 2026-09-04 08:55:16 +03:00
.gitignore initial commit 2026-09-04 08:55:16 +03:00
.python-version initial commit 2026-09-04 08:55:16 +03:00
flake.lock initial commit 2026-09-04 08:55:16 +03:00
flake.nix initial commit 2026-09-04 08:55:16 +03:00
LICENSE initial commit 2026-09-04 08:55:16 +03:00
pyproject.toml chore: add The Unlicense to project metadata 2026-09-19 16:19:53 +03:00
README.md docs: add simple technical README 2026-09-19 16:21:48 +03:00
uv.lock initial commit 2026-09-04 08:55:16 +03:00

nhmt21bot

Telegram-бот для автоматического парсинга и рассылки изменений в расписании (замен) с официального сайта НХМТ. Бот парсит страницы замен СПО и НПО, нормализует номера аудиторий и распределяет их по корпусам колледжа (ЦОПП, Кванториум, Главный корпус и т.д.).

Стек технологий

  • Python 3.13+
  • aiogram 3.x для работы с Telegram Bot API
  • BeautifulSoup4 / lxml для парсинга HTML
  • uv для быстрого управления зависимостями
  • Nix для воспроизводимого окружения (опционально)

Установка и локальный запуск

  1. Склонируйте репозиторий:

    git clone https://github.com/rus07tam/nhmt21bot.git
    cd nhmt21bot
    
  2. Настройте конфигурацию:

    cp .env.example .env
    

    Затем откройте файл .env и укажите BOT_TOKEN — токен, полученный от @BotFather.

  3. Установите зависимости проекта с помощью uv:

    uv sync
    
  4. Запустите бота:

    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.