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

3.7 KiB
Raw Blame History

BOINC Telegram Bot

Телеграм-бот для мониторинга задач BOINC/grcpool. Показывает активные задачи, очередь и задания, готовые к отправке, с компактным ASCII UI и кнопками обновления.

Быстрый старт локально

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-сервере

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, дедлайны и краткая сводка.

Тесты

pytest

В тестах используется сэмпл sample_data/boinccmd_tasks.txt.