2.7 KiB
2.7 KiB
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— сводный дашборд.- Кнопки: «Обновить», «Активные», «Очередь», «Готовы к отправке».
Что под капотом
- Python +
python-telegram-bot. - Получение статуса через
boinccmd --get_tasks(RPC на BOINC). - Парсер выдерживает типовой вывод и группирует задачи: активные, ожидающие, готовые к отправке.
- UI в HTML-маркапе: прогресс-бары
[####.....], ETA, дедлайны и краткая сводка.
Тесты
pytest
В тестах используется сэмпл sample_data/boinccmd_tasks.txt.