Add BOINC Telegram bot, CI, and deploy compose
All checks were successful
publish-images / build (push) Successful in 1m3s
All checks were successful
publish-images / build (push) Successful in 1m3s
This commit is contained in:
52
README.md
Normal file
52
README.md
Normal 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`.
|
||||
Reference in New Issue
Block a user