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 с многоуровневым меню и гибкой настройкой.
|
Бот для выполнения 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
|
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 # Счётчик для извлечения фактов
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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