53 lines
2.7 KiB
Markdown
53 lines
2.7 KiB
Markdown
# 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`.
|