Add BOINC Telegram bot, CI, and deploy compose
All checks were successful
publish-images / build (push) Successful in 1m3s

This commit is contained in:
dan
2026-01-06 09:44:48 +03:00
commit 55cfd73c24
15 changed files with 617 additions and 0 deletions

52
README.md Normal file
View File

@@ -0,0 +1,52 @@
# 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`.