# 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` — сводный дашборд. - Кнопки: «Обновить», «Активные», «Очередь», «Готовы к отправке». ## Что под капотом - Python + `python-telegram-bot`. - Получение статуса через `boinccmd --get_tasks` (RPC на BOINC). - Парсер выдерживает типовой вывод и группирует задачи: активные, ожидающие, готовые к отправке. - UI в HTML-маркапе: прогресс-бары `[####.....]`, ETA, дедлайны и краткая сводка. ## Тесты ```bash pytest ``` В тестах используется сэмпл `sample_data/boinccmd_tasks.txt`.