Files
BOINC-report-bot/README.md
dan 79bb14f05c
All checks were successful
publish-images / build (push) Successful in 6s
Limit task lists and clamp message length
2026-01-06 10:09:20 +03:00

62 lines
3.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` — сводный дашборд.
- Кнопки: «Обновить», «Активные», «Очередь», «Готовы к отправке».
## 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`.