6.7 KiB
6.7 KiB
Telegram CLI Bot
Бот для выполнения CLI команд на вашем ПК через Telegram с многоуровневым меню и гибкой настройкой.
Возможности
- 🖥️ Выполнение CLI команд - запуск любых команд от имени пользователя
- 📋 Многоуровневое меню - навигация через inline-кнопки
- ⚙️ Настройка из бота - изменение имени, описания, иконки прямо в диалоге
- 🎯 Предустановленные команды - готовые команды для файловой системы, поиска, системы и сети
- 👥 Управление доступом - ограничение круга пользователей
- 🔧 Легкое добавление команд - простая регистрация новых команд через код
Установка
1. Клонирование репозитория
cd /home/mirivlad/git
git clone <repository_url> telegram-cli-bot
cd telegram-cli-bot
2. Создание виртуального окружения
python3 -m venv venv
source venv/bin/activate
3. Установка зависимостей
pip install -r requirements.txt
4. Получение токена бота
- Откройте @BotFather в Telegram
- Отправьте
/newbot - Следуйте инструкциям
- Скопируйте полученный токен
5. Запуск бота
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
Настройка бота
Через меню ⚙️ Настройки бота:
- 📝 Изменить имя бота - новое отображаемое имя
- 📄 Изменить описание - описание бота
- 🎨 Изменить иконку - emoji для бота
- 👥 Управление доступом - whitelist пользователей
Добавление новых команд
Быстрое добавление через меню
Найдите функцию init_menus() в bot.py и добавьте новую кнопку:
# В нужное меню добавьте:
MenuItem("🔥 Ваша команда", "cmd_your", command="ваша_команда", icon="🔥"),
Пример добавления команды для git:
# В 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 для сложной логики:
@command_registry.register("my_command")
async def my_custom_command(update, context):
# Ваша логика
pass
Конфигурация
Настройки хранятся в bot_config.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 |
Рабочая директория для команд |
Безопасность
⚠️ Важные предупреждения:
- Бот выполняет команды от имени запустившего пользователя
- Не запускайте бота от root
- Ограничьте доступ через
allowed_users - Будьте осторожны с деструктивными командами (
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