# BOINC Telegram Bot Телеграм-бот для мониторинга задач BOINC/grcpool. Показывает активные задачи, очередь и задания, готовые к отправке, с компактным ASCII UI и кнопками обновления. ## Быстрый старт локально ```bash python -m venv .venv source .venv/bin/activate pip install -r requirements-dev.txt export TELEGRAM_TOKEN="ваш_токен" # Для тестов без реального BOINC: export BOINC_SAMPLE_FILE="sample_data/boinccmd_tasks.txt" python -m bot.main ``` ## Переменные окружения - `TELEGRAM_TOKEN` — токен бота (обязательно). - `BOINC_HOST` — адрес BOINC RPC/boinccmd (по умолчанию `localhost`). - `BOINC_PORT` — порт RPC (по умолчанию `31416`). - `BOINC_PASSWORD` — пароль GUI RPC, если требуется. - `BOINC_CMD` — путь к `boinccmd`, если не в `$PATH`. - `BOINC_SAMPLE_FILE` — путь к текстовому дампу `boinccmd --get_tasks` для офлайн-тестов. - `REFRESH_SECONDS` — не используется в логике, оставлен для будущего автообновления (по умолчанию `30`). ## Запуск в Docker на SSH-сервере ```bash docker build -t boinc-telegram-bot . docker run -d --name boinc-telegram-bot \ --network host \ -e TELEGRAM_TOKEN="ваш_токен" \ -e BOINC_HOST="127.0.0.1" \ -e BOINC_PORT="31416" \ -e BOINC_PASSWORD="gui_rpc_password" \ boinc-telegram-bot ``` Контейнер включает `boinccmd`. Если BOINC-клиент работает на том же сервере, используйте `--network host` или проброс порта 31416. При необходимости смонтируйте файл `gui_rpc_auth.cfg` и считайте пароль из него. ## Команды бота - `/start` или `/status` — сводный дашборд. - Кнопки: «Обновить», «Активные», «Очередь», «Готовы к отправке». ## CI/CD - Gitea Actions (`.gitea/workflows/publish-images.yml`) собирает образ на пуше в `main` и пушит в `cr.danosito.com/dan/boinc-report-bot` с тегами `latest` и `${{ gitea.sha }}`. Используются `vars.REGISTRY_USER` и `vars.REGISTRY_PASSWORD`. ## Деплой через docker compose - Пример compose в `deploy/docker-compose.yml` (host network для доступа к локальному BOINC). - Создайте `.env` рядом с compose с `TELEGRAM_TOKEN` и, при необходимости, `BOINC_PASSWORD`. - Для обхода блокировок Telegram указаны прокси-переменные (`HTTP_PROXY`, `HTTPS_PROXY`, `ALL_PROXY`) на локальный http-proxy `http://127.0.0.1:10809` (контейнер `xray`). Если прокси другой, скорректируйте значения или перенесите их в `.env`. - Запуск: `docker compose -f deploy/docker-compose.yml up -d`. ## Что под капотом - Python + `python-telegram-bot`. - Получение статуса через `boinccmd --get_tasks` (RPC на BOINC). - Парсер выдерживает типовой вывод и группирует задачи: активные, ожидающие, готовые к отправке. - UI в HTML-маркапе: прогресс-бары `[####.....]`, ETA, дедлайны и краткая сводка. ## Тесты ```bash pytest ``` В тестах используется сэмпл `sample_data/boinccmd_tasks.txt`.