diff --git a/README.md b/README.md index d9aa62e..fc6c750 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ Бот для выполнения CLI команд на вашем ПК через Telegram с многоуровневым меню и гибкой настройкой. +**Версия:** 0.6.0 + ## Возможности - 🖥️ **Выполнение CLI команд** - запуск любых команд от имени пользователя @@ -12,10 +14,53 @@ - 🔧 **Легкое добавление команд** - простая регистрация новых команд через код - 🧠 **ИИ-агент с памятью** - чат с Qwen Code с контекстом и семантическим поиском - 🔍 **Векторная память** - поиск по истории диалогов на ChromaDB (RAG) +- 📦 **Автоматическая установка** - скрипт install.sh ставит все зависимости -## Установка +--- -### 1. Клонирование репозитория +## 🚀 Быстрый старт + +### 1. Установка (первый запуск) + +```bash +cd /path/to/telegram-cli-bot +./install.sh +``` + +Скрипт автоматически: +- Проверит Python, pip, Node.js, npm +- Установит qwen-code (для ИИ-агента) +- Создаст виртуальное окружение +- Установит все зависимости +- Создаст .env из примера + +### 2. Настройка + +Отредактируйте `.env` и укажите токен бота: + +```bash +nano .env +# TELEGRAM_BOT_TOKEN=ваш_токен_от_BotFather +``` + +### 3. Запуск + +```bash +./run.sh +``` + +--- + +## 📦 Подробная установка + +### Требования + +- **Python 3.10+** +- **pip** (менеджер пакетов Python) +- **Node.js 18+** (для qwen-code, опционально) +- **npm** (менеджер пакетов Node.js) + +### Шаг 1: Клонирование ```bash cd /home/mirivlad/git @@ -23,60 +68,60 @@ git clone telegram-cli-bot cd telegram-cli-bot ``` -### 2. Создание виртуального окружения +### Шаг 2: Запуск установщика ```bash -python3 -m venv venv -source venv/bin/activate +./install.sh ``` -### 3. Установка зависимостей +**Что делает install.sh:** + +| Шаг | Действие | +|-----|----------| +| 1 | Проверяет Python, pip | +| 2 | Проверяет Node.js, npm (предлагает установить если нет) | +| 3 | Устанавливает `qwen-code` через `npm install -g` | +| 4 | Создаёт/обновляет venv | +| 5 | Устанавливает pip зависимости из requirements.txt | +| 6 | Создаёт .env из .env.example (если нет) | +| 7 | Сохраняет версию в `.installed` | + +### Шаг 3: Настройка .env ```bash -pip install -r requirements.txt +# Отредактируйте .env +nano .env ``` -### 4. Получение токена бота - -1. Откройте [@BotFather](https://t.me/BotFather) в Telegram -2. Отправьте `/newbot` -3. Следуйте инструкциям -4. Скопируйте полученный токен - -### 5. Настройка токена - -**Способ 1: Через файл .env (рекомендуется)** - -Скопируйте `.env.example` в `.env` и укажите токен: - +Обязательные параметры: ```bash -cp .env.example .env -# Отредактируйте .env, вставив ваш токен +TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz +ALLOWED_USERS=ваш_telegram_id ``` -**Способ 2: Через переменную окружения** +Ваш Telegram ID можно узнать через @userinfobot. -```bash -export TELEGRAM_BOT_TOKEN='your_token_here' -``` - -**Способ 3: Интерактивная настройка** - -Запустите скрипт `run.sh` — он сам запросит токен: +### Шаг 4: Запуск ```bash ./run.sh ``` -### 6. Запуск бота +--- + +## 🔄 Обновление ```bash -python bot.py -# или через скрипт -./run.sh +# Просто запустите установщик снова +./install.sh ``` -## Использование +Скрипт определит что это обновление и: +- Обновит qwen-code +- Обновит pip зависимости +- Сохранит новую версию + +--- ### Команды бота @@ -220,26 +265,49 @@ WORKING_DIRECTORY=/home/user ``` telegram-cli-bot/ -├── bot.py # Основной файл бота -├── requirements.txt # Зависимости Python -├── .env # Конфигурация (создаётся автоматически, не коммитить) -├── .env.example # Пример конфигурации -├── .gitignore # Git ignore -├── bot.log # Лог файл -├── run.sh # Скрипт запуска -├── README.md # Документация -├── memory_system.py # Система памяти (SQLite) -├── vector_memory.py # Векторная память (ChromaDB) -├── qwen_integration.py # Интеграция с Qwen Code -├── MEMORY_ARCHITECTURE.md # Документация системы памяти -├── VECTOR_MEMORY_SETUP.md # Инструкция по установке памяти -└── test_vector_memory.py # Тесты системы памяти +├── bot.py # Точка входа (1411 строк) +├── bot/ # Модульная структура +│ ├── config.py # Конфигурация и глобальные объекты +│ ├── models/ # Модели данных +│ │ ├── server.py # Server, ServerManager +│ │ ├── session.py # SSH/Local сессии и менеджеры +│ │ └── user_state.py # UserState, StateManager +│ ├── utils/ # Утилиты +│ │ ├── cleaners.py # Очистка ANSI-кодов +│ │ ├── formatters.py # Форматирование сообщений +│ │ ├── decorators.py # Декоратор @check_access +│ │ └── ssh_readers.py # Чтение SSH/PTY вывода +│ ├── keyboards/ # Клавиатуры +│ │ └── menus.py # MenuItem, MenuBuilder +│ ├── handlers/ # Обработчики событий +│ │ ├── commands.py # /start, /menu, /help, /settings +│ │ └── callbacks.py # Callback от меню +│ └── services/ # Бизнес-логика +│ └── command_executor.py # Выполнение CLI команд +├── memory_system.py # Система памяти (SQLite) +├── vector_memory.py # Векторная память (ChromaDB + RAG) +├── qwen_integration.py # Интеграция с Qwen Code +├── install.sh # Универсальный установщик +├── run.sh # Скрипт запуска +├── requirements.txt # Зависимости Python +├── .env # Конфигурация (не коммитить!) +├── .env.example # Пример конфигурации +├── bot.log # Лог файл +└── README.md # Документация ``` +**Модульная архитектура:** +- **models** — модели данных и менеджеры +- **utils** — вспомогательные функции +- **handlers** — обработчики команд Telegram +- **services** — бизнес-логика выполнения команд +- **keyboards** — построение inline-клавиатур + ## Требования -- Python 3.8+ -- Библиотеки: `python-telegram-bot`, `pyyaml` +- **Python 3.10+** +- **Node.js 18+** (опционально, для qwen-code) +- Библиотеки: `python-telegram-bot`, `chromadb`, `sentence-transformers` - Доступ к Telegram API ## Лицензия