telegram-cli-bot/README.md

198 lines
6.7 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Telegram CLI Bot
Бот для выполнения CLI команд на вашем ПК через Telegram с многоуровневым меню и гибкой настройкой.
## Возможности
- 🖥️ **Выполнение CLI команд** - запуск любых команд от имени пользователя
- 📋 **Многоуровневое меню** - навигация через inline-кнопки
- ⚙️ **Настройка из бота** - изменение имени, описания, иконки прямо в диалоге
- 🎯 **Предустановленные команды** - готовые команды для файловой системы, поиска, системы и сети
- 👥 **Управление доступом** - ограничение круга пользователей
- 🔧 **Легкое добавление команд** - простая регистрация новых команд через код
## Установка
### 1. Клонирование репозитория
```bash
cd /home/mirivlad/git
git clone <repository_url> telegram-cli-bot
cd telegram-cli-bot
```
### 2. Создание виртуального окружения
```bash
python3 -m venv venv
source venv/bin/activate
```
### 3. Установка зависимостей
```bash
pip install -r requirements.txt
```
### 4. Получение токена бота
1. Откройте [@BotFather](https://t.me/BotFather) в Telegram
2. Отправьте `/newbot`
3. Следуйте инструкциям
4. Скопируйте полученный токен
### 5. Запуск бота
```bash
export TELEGRAM_BOT_TOKEN='your_token_here'
python bot.py
```
## Использование
### Команды бота
| Команда | Описание |
|---------|----------|
| `/start` | Запустить бота, показать главное меню |
| `/help` | Показать справку |
| `/settings` | Открыть настройки бота |
### Главное меню
- **🖥️ Выполнить команду** - ввод произвольной CLI команды
- **📋 Предустановленные команды** - меню с готовыми командами
- **⚙️ Настройки бота** - конфигурация бота
- ** О боте** - информация о боте
### Предустановленные команды
#### Файловая система
- `ls -la` - список файлов
- `pwd` - текущая директория
- `df -h` - свободное место
- `du -sh *` - размер папок
#### Поиск
- `find . -name` - поиск файлов
- `grep пример` - поиск по содержимому
- `which command` - путь к командам
#### Система
- `top -n 1` - процессы
- `ps aux` - список процессов
- `free -h` - использование памяти
- `uname -a` - информация о системе
- `uptime` - время работы
#### Сеть
- `ip addr` - сетевые интерфейсы
- `ping google` - проверка связи
- `netstat` - сетевые подключения
- `curl ifconfig.me` - внешний IP
### Настройка бота
Через меню **⚙️ Настройки бота**:
1. **📝 Изменить имя бота** - новое отображаемое имя
2. **📄 Изменить описание** - описание бота
3. **🎨 Изменить иконку** - emoji для бота
4. **👥 Управление доступом** - whitelist пользователей
## Добавление новых команд
### Быстрое добавление через меню
Найдите функцию `init_menus()` в `bot.py` и добавьте новую кнопку:
```python
# В нужное меню добавьте:
MenuItem("🔥 Ваша команда", "cmd_your", command=ашаоманда", icon="🔥"),
```
### Пример добавления команды для git:
```python
# В init_menus() добавьте новое меню:
git_menu = [
MenuItem("git status", "cmd_git_status", command="git status", icon="📊"),
MenuItem("git log", "cmd_git_log", command="git log --oneline -10", icon="📜"),
MenuItem("⬅️ Назад", "preset", icon="⬅️"),
]
menu_builder.add_menu("git", git_menu)
# И добавьте кнопку в preset_menu:
MenuItem("🔗 Git", "git_menu", icon="🔗"),
```
### Продвинутое: регистрация через декоратор
Используйте `command_registry` для сложной логики:
```python
@command_registry.register("my_command")
async def my_custom_command(update, context):
# Ваша логика
pass
```
## Конфигурация
Настройки хранятся в `bot_config.json`:
```json
{
"bot_name": "CLI Assistant",
"bot_description": "Бот для выполнения CLI команд",
"bot_icon_emoji": "🤖",
"allowed_users": [],
"require_confirmation": true,
"working_directory": "/home/user"
}
```
| Параметр | Описание |
|----------|----------|
| `bot_name` | Имя бота |
| `bot_description` | Описание бота |
| `bot_icon_emoji` | Emoji-иконка |
| `allowed_users` | Список разрешённых user ID (пусто = все) |
| `require_confirmation` | Требовать подтверждение перед выполнением |
| `working_directory` | Рабочая директория для команд |
## Безопасность
⚠️ **Важные предупреждения:**
1. Бот выполняет команды от имени запустившего пользователя
2. Не запускайте бота от root
3. Ограничьте доступ через `allowed_users`
4. Будьте осторожны с деструктивными командами (`rm`, `dd`, etc.)
## Логи
Логи сохраняются в `bot.log` в директории бота.
## Структура проекта
```
telegram-cli-bot/
├── bot.py # Основной файл бота
├── requirements.txt # Зависимости Python
├── bot_config.json # Конфигурация (создаётся автоматически)
├── bot.log # Лог файл
├── .gitignore # Git ignore
└── README.md # Документация
```
## Требования
- Python 3.8+
- Библиотеки: `python-telegram-bot`, `pyyaml`
- Доступ к Telegram API
## Лицензия
MIT