feat: чат с ИИ включен по умолчанию + systemd сервис

Изменения:
1. Чат с ИИ агентом теперь включен по умолчанию (ai_chat_mode=True)
   - При первом запуске бота чат с ИИ активен
   - Кнопка в меню показывает ' Выключить чат с ИИ'
   - Пользователь может выключить через настройки

2. Systemd сервис для автозапуска бота
   - telegram-bot.service - шаблон сервиса
   - install-systemd-service.sh - скрипт установки
   - Поддержка start/stop/restart/status
   - Логирование через journalctl
   - Security hardening (NoNewPrivileges, ProtectSystem)

3. Обновлена документация в README
   - Добавлен раздел про systemd сервис
   - Версия обновлена до 0.7.0

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
mirivlad 2026-02-25 14:57:13 +08:00
parent bedb5d96a0
commit d84271110c
4 changed files with 145 additions and 2 deletions

View File

@ -2,7 +2,7 @@
Бот для выполнения CLI команд на вашем ПК через Telegram с многоуровневым меню и гибкой настройкой. Бот для выполнения CLI команд на вашем ПК через Telegram с многоуровневым меню и гибкой настройкой.
**Версия:** 0.6.0 **Версия:** 0.7.0
## Возможности ## Возможности
@ -51,6 +51,54 @@ nano .env
--- ---
## 🔧 Установка как systemd сервис (автозапуск)
Для работы бота в фоновом режиме и автоматического запуска после перезагрузки:
### 1. Настройка .env
Убедитесь что `.env` файл существует и содержит все необходимые переменные:
```bash
cp .env.example .env
nano .env
```
### 2. Установка сервиса
```bash
sudo ./install-systemd-service.sh
```
Скрипт:
- Создаст systemd сервис в `/etc/systemd/system/telegram-bot.service`
- Включит автозапуск при загрузке
- Настроит логирование через journalctl
### 3. Управление сервисом
```bash
# Запуск
sudo systemctl start telegram-bot
# Остановка
sudo systemctl stop telegram-bot
# Перезапуск
sudo systemctl restart telegram-bot
# Статус
sudo systemctl status telegram-bot
# Автозапуск при загрузке
sudo systemctl enable telegram-bot
# Просмотр логов
sudo journalctl -u telegram-bot -f
```
---
## 📦 Подробная установка ## 📦 Подробная установка
### Требования ### Требования

View File

@ -16,7 +16,7 @@ class UserState:
working_directory: Optional[str] = None working_directory: Optional[str] = None
current_server: str = "local" # Имя текущего сервера current_server: str = "local" # Имя текущего сервера
editing_server: Optional[str] = None # Имя сервера, который редактируем editing_server: Optional[str] = None # Имя сервера, который редактируем
ai_chat_mode: bool = False # Режим чата с ИИ агентом ai_chat_mode: bool = True # Режим чата с ИИ агентом (включен по умолчанию)
ai_chat_history: List[str] = field(default_factory=list) # История диалога с ИИ ai_chat_history: List[str] = field(default_factory=list) # История диалога с ИИ
messages_since_fact_extract: int = 0 # Счётчик для извлечения фактов messages_since_fact_extract: int = 0 # Счётчик для извлечения фактов

71
install-systemd-service.sh Executable file
View File

@ -0,0 +1,71 @@
#!/bin/bash
# Скрипт установки systemd сервиса для Telegram CLI Bot
set -e
BOT_USER="${BOT_USER:-$USER}"
BOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BOT_VENV="${BOT_DIR}/venv"
SERVICE_FILE="${BOT_DIR}/telegram-bot.service"
SYSTEMD_SERVICE="/etc/systemd/system/telegram-bot.service"
echo "🔧 Установка systemd сервиса для Telegram CLI Bot"
echo "=================================================="
echo "Пользователь: $BOT_USER"
echo "Директория: $BOT_DIR"
echo "Venv: $BOT_VENV"
echo ""
# Проверка что скрипт запущен от root или через sudo
if [ "$EUID" -ne 0 ]; then
echo "❌ Запустите скрипт от имени root (sudo ./install-systemd-service.sh)"
exit 1
fi
# Проверка существования файлов
if [ ! -f "$BOT_DIR/bot.py" ]; then
echo "❌ bot.py не найден в $BOT_DIR"
exit 1
fi
if [ ! -f "$BOT_VENV/bin/python" ]; then
echo "❌ Venv не найден в $BOT_VENV"
echo " Запустите: source $BOT_DIR/venv/bin/activate && pip install -r requirements.txt"
exit 1
fi
if [ ! -f "$BOT_DIR/.env" ]; then
echo "⚠️ .env файл не найден. Создайте его:"
echo " cp $BOT_DIR/.env.example $BOT_DIR/.env"
echo " и отредактируйте переменные окружения"
exit 1
fi
# Создаём systemd сервис из шаблона
echo "📝 Создание systemd сервиса..."
sed -e "s|%USER%|$BOT_USER|g" \
-e "s|%WORKDIR%|$BOT_DIR|g" \
-e "s|%VENV_PATH%|$BOT_VENV/bin|g" \
"$SERVICE_FILE" > "$SYSTEMD_SERVICE"
echo "✅ Сервис установлен в $SYSTEMD_SERVICE"
# Перезагружаем systemd и включаем сервис
echo "🔄 Перезагрузка systemd..."
systemctl daemon-reload
echo "🚀 Включение сервиса..."
systemctl enable telegram-bot
echo ""
echo "✅ Установка завершена!"
echo ""
echo "Управление сервисом:"
echo " sudo systemctl start telegram-bot - Запустить бота"
echo " sudo systemctl stop telegram-bot - Остановить бота"
echo " sudo systemctl restart telegram-bot - Перезапустить бота"
echo " sudo systemctl status telegram-bot - Проверить статус"
echo ""
echo "Просмотр логов:"
echo " sudo journalctl -u telegram-bot -f - Логи в реальном времени"
echo " sudo journalctl -u telegram-bot --since today - Логи за сегодня"

24
telegram-bot.service Normal file
View File

@ -0,0 +1,24 @@
[Unit]
Description=Telegram CLI Bot
After=network.target
[Service]
Type=simple
User=%USER%
WorkingDirectory=%WORKDIR%
Environment="PATH=%VENV_PATH%"
ExecStart=%VENV_PATH%/python bot.py
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=telegram-bot
# Security hardening
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=read-only
PrivateTmp=true
[Install]
WantedBy=multi-user.target