| .. | ||
| Players | ||
| scripts/systemd | ||
| .env.example | ||
| .gitignore | ||
| AGENT.md | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| py_bot_service.py | ||
| README.md | ||
SHiNE-agent-bot-coder
Локальный Telegram-бот-сервис для пользователя ai:
- принимает сообщения от
@AidarKC; - поддерживает whitelist игроков (
ALLOWED_TELEGRAM_PLAYERS) с отдельными историями; - ведёт историю диалога в
JSONL; - ставит задачи в файловую очередь;
- обрабатывает задачи строго последовательно;
- поддерживает текстовые и голосовые сообщения (voice/audio через OpenAI transcription);
- вызывает Codex CLI и отправляет ответ в Telegram;
- при рестарте восстанавливает незавершённые задачи;
- отправляет аварийный статус только если Codex молчит 2 минуты подряд во время активной задачи;
- принимает сообщения из канала/группы
@shine_writing, выполняет команды только от@AidarKC; - учитывает миграцию обычной Telegram-группы в supergroup и перенаправляет ответы на новый
chat_id.
Рабочая реализация сервиса — только py_bot_service.py. Старая Java-реализация удалена, потому что не заработала и больше не используется.
Структура
.env— локальные секреты и параметры запуска (не коммитится);data/py_queue.jsonl— очередь Python-сервиса;data/py_state.json— текущее состояние Python-сервиса;data/py_processed_updates.log— дедуп входящих update;data/history/<username>/*.jsonl— активные истории по пользователям;data/history/<username>/archive/*.jsonl— архивы после/new.
Локальный запуск
- Скопировать пример:
cp .env.example .env
- Заполнить секреты в
.env.TELEGRAM_BOT_TOKEN— токен рабочего Telegram-бота.ALLOWED_TELEGRAM_USERNAME— пользователь, чьи сообщения выполняются как команды.ALLOWED_TELEGRAM_PLAYERS— whitelist игроков в форматеusername:Имя,username2:Имя2.ALLOWED_TELEGRAM_CHANNEL_USERNAME— канал, из которого принимаютсяchannel_post; обычные group/supergroup-сообщения обрабатываются какmessage.TELEGRAM_FILE_DOWNLOAD_TIMEOUT_SECONDS— тайм-аут скачивания voice/audio из Telegram, по умолчанию 300 секунд.OPENAI_TRANSCRIBE_TIMEOUT_SECONDS— тайм-аут распознавания voice/audio в OpenAI, по умолчанию 900 секунд.
- Запуск:
python3 SHiNE-agent-bot-coder/py_bot_service.py
Быстрый self-test Codex (без Telegram)
python3 SHiNE-agent-bot-coder/py_bot_service.py --selftest-codex "Ответь одной строкой: Codex работает"
Запуск как systemd-сервис
Файлы для установки:
scripts/systemd/shine-agent-bot-coder.servicescripts/systemd/install-local-systemd.sh
Установка:
bash SHiNE-agent-bot-coder/scripts/systemd/install-local-systemd.sh
Проверка:
systemctl --user status shine-agent-bot-coder --no-pagerjournalctl --user -u shine-agent-bot-coder -f
Перезапуск после изменений:
systemctl --user restart shine-agent-bot-coder
Telegram-команды
/status— активная задача и размер очереди./queue— список задач в очереди./stop— остановить текущую задачу./cancel <id|all>— удалить задачу по id/префиксу или очистить очередь./new— архивировать текущую историю и начать новый диалог./restart_service— перезапустить сервис (только для Айдара); systemd должен поднять процесс заново.