# SHiNE-agent-bot-coder Локальный Telegram-бот-сервис для пользователя `ai`: - принимает сообщения от `@AidarKC`; - ведёт историю диалога в `JSONL`; - ставит задачи в файловую очередь; - обрабатывает задачи строго последовательно; - поддерживает текстовые и голосовые сообщения (voice/audio через OpenAI transcription); - вызывает Codex CLI и отправляет ответ в Telegram; - при рестарте восстанавливает незавершённые задачи; - отправляет аварийный статус только если Codex молчит 2 минуты подряд во время активной задачи; - принимает сообщения из канала/группы `@shine_writing`, выполняет команды только от `@AidarKC`, а сообщения других авторов сохраняет как контекст; - на сообщения других участников группы отвечает в тот же чат коротким подтверждением получения, не создавая задачу Codex; - учитывает миграцию обычной 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/*.jsonl` — активные истории; - `data/history/archive/*.jsonl` — архив историй после `/new`. ## Локальный запуск 1. Скопировать пример: - `cp .env.example .env` 2. Заполнить секреты в `.env`. - `TELEGRAM_BOT_TOKEN` — токен рабочего Telegram-бота. - `ALLOWED_TELEGRAM_USERNAME` — пользователь, чьи сообщения выполняются как команды. - `ALLOWED_TELEGRAM_CHANNEL_USERNAME` — канал, из которого принимаются `channel_post`; обычные group/supergroup-сообщения обрабатываются как `message`. 3. Запуск: - `python3 SHiNE-agent-bot-coder/py_bot_service.py` ## Быстрый self-test Codex (без Telegram) ```bash python3 SHiNE-agent-bot-coder/py_bot_service.py --selftest-codex "Ответь одной строкой: Codex работает" ``` ## Запуск как systemd-сервис Файлы для установки: - `scripts/systemd/shine-agent-bot-coder.service` - `scripts/systemd/install-local-systemd.sh` Установка: - `bash SHiNE-agent-bot-coder/scripts/systemd/install-local-systemd.sh` Проверка: - `systemctl --user status shine-agent-bot-coder --no-pager` - `journalctl --user -u shine-agent-bot-coder -f` Перезапуск после изменений: - `systemctl --user restart shine-agent-bot-coder` ## Telegram-команды - `/status` — активная задача и размер очереди. - `/queue` — список задач в очереди. - `/stop` — остановить текущую задачу. - `/cancel ` — удалить задачу по id/префиксу или очистить очередь. - `/new` — архивировать текущую историю и начать новый диалог. - `/restart_service` — перезапустить сервис; systemd должен поднять процесс заново.