Files
BOINC-report-bot/README.md
dan 55cfd73c24
All checks were successful
publish-images / build (push) Successful in 1m3s
Add BOINC Telegram bot, CI, and deploy compose
2026-01-06 09:44:48 +03:00

53 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`.