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:
parent
bedb5d96a0
commit
d84271110c
50
README.md
50
README.md
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
Бот для выполнения 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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📦 Подробная установка
|
||||
|
||||
### Требования
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ class UserState:
|
|||
working_directory: Optional[str] = None
|
||||
current_server: str = "local" # Имя текущего сервера
|
||||
editing_server: Optional[str] = None # Имя сервера, который редактируем
|
||||
ai_chat_mode: bool = False # Режим чата с ИИ агентом
|
||||
ai_chat_mode: bool = True # Режим чата с ИИ агентом (включен по умолчанию)
|
||||
ai_chat_history: List[str] = field(default_factory=list) # История диалога с ИИ
|
||||
messages_since_fact_extract: int = 0 # Счётчик для извлечения фактов
|
||||
|
||||
|
|
|
|||
|
|
@ -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 - Логи за сегодня"
|
||||
|
|
@ -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
|
||||
Loading…
Reference in New Issue