Commit Graph

15 Commits (f208ffecf739663aacae906e7d8fd363befb543b)

Author SHA1 Message Date
mirivlad d84271110c 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>
2026-02-25 14:57:13 +08:00
mirivlad a13db1490b feat: добавить команду /compact в меню памяти ИИ
- Добавлена кнопка '🔄 Компактификация' в меню memory_menu
- Реализован callback handler для memory_compact
- Компактификация запускается из меню с отображением прогресса
- Исправление: команда /compact теперь доступна через меню

Version: 0.5.3

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-25 14:39:57 +08:00
mirivlad d34c722471 feat: полноценная поддержка cron с croniter
Улучшения cron-системы:
- Интеграция библиотеки croniter для полноценного cron-синтаксиса
- Поддержка всех cron-выражений: */5 * * * *, 0 5 * * *, @daily и т.д.
- Автоматический пересчёт next_run после выполнения задачи
- Защита от duplicate execution (проверка last_run)
- Миграции для всех колонок БД (prompt, user_id, notify, log_results и др.)

Исправленные проблемы:
- Задачи выполнялись только один раз (не обновлялся next_run)
- Примитивный парсер расписания (только */N, @hourly, @daily)
- Возможность двойного выполнения при перезапуске бота

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-25 14:32:30 +08:00
mirivlad 95de7b8d85 fix: добавить миграции для всех колонок в cron_jobs
- Добавить проверку и миграции для колонок: prompt, user_id, enabled, notify, log_results, last_run, next_run
- Исправляет ошибку 'no such column: prompt' при запуске со старой БД

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-25 13:41:30 +08:00
mirivlad b748ceefb7 fix: исправить вызов метода get_tool() → get() в ToolsRegistry
- bot.py: исправить tools_registry.get_tool() на tools_registry.get()
- bot/handlers/commands.py: исправить tools_registry.get_tool() на tools_registry.get()

Исправляет ошибку AttributeError при запуске бота

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-25 13:39:18 +08:00
mirivlad f559c83baa feat: интеллектуальная cron-система с AI-агентом
Основные изменения:
- CronJob теперь хранит prompt для ИИ вместо команды
- Добавлены поля: user_id, notify, log_results
- Задачи выполняются через AI-агент (автономный выбор инструмента)
- Планировщик проверяет задачи каждую минуту
- Уведомления отправляются в Telegram (если notify=True)
- Результаты сохраняются в cron_logs/ (если log_results=True)
- Добавлена команда /cron для управления задачами
- Обновлена БД и модель данных

Новые файлы:
- bot/services/cron_scheduler.py - планировщик задач
- CRON_SYSTEM.md - документация

Изменённые файлы:
- bot/tools/cron_tool.py - обновлён для работы с промптами
- bot/handlers/commands.py - добавлена cron_command
- bot.py - интеграция планировщика, регистрация команды
- .gitignore - исключение cron_logs/

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-25 12:36:32 +08:00
mirivlad 09867ef558 fix: unify tool naming (ddgs_tool, rss_tool, ssh_tool, cron_tool)
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-25 12:13:38 +08:00
mirivlad 1dc40507c6 feat: add dialogue compaction module for context management
- bot/compaction.py: новый модуль для сжатия истории диалога
- Автоматическая компактификация при 70% заполнении контекста
- Сохранение summary в ChromaDB с структурированным форматом
- Интеграция с handle_ai_task для прозрачной работы
- Сохраняет последние 20 сообщений без изменений
- Структурированный промпт: факты, URL, серверы, настройки, решения

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-25 12:09:30 +08:00
mirivlad 2773680da1 feat: add AI agent tools, system prompt, and compaction module
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-25 09:52:10 +08:00
mirivlad 50dcec82fc fix: восстановить работу Markdown в send_long_message
- has_markdown переименован в has_code (более точно)
- Теперь Markdown применяется ко всем сообщениям если передан parse_mode
- Блоки кода без разрывов тоже работают с Markdown

Version: 0.5.5

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-25 00:24:31 +08:00
mirivlad 33263e6630 refactor: окончательная очистка bot.py от дубликатов
- bot.py: 2365 → 1411 строк (-954 строки, -40%)
- Удалены дублирующиеся функции которые теперь в модулях:
  - start_command, menu_command, help_command, settings_command → bot/handlers/commands.py
  - menu_callback → bot/handlers/callbacks.py
  - execute_cli_command, _execute_local_command, _execute_ssh_command, _show_result → bot/services/command_executor.py
  - clean_ansi_codes, normalize_output, split_message, send_long_message → bot/utils/
  - init_menus → bot/keyboards/menus.py
- Оставлены только:
  - handle_text_message, handle_ai_task
  - handle_ssh_session_input, handle_local_session_input, handle_server_input
  - finish_edit_server, stop_command, ai_command, memory_command, facts_command, forget_command
  - post_init, main
- Исправлены импорты в decorators.py, command_executor.py
- Добавлены ssh_session_manager, local_session_manager в bot/models/session.py

Version: 0.5.4

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-25 00:07:00 +08:00
mirivlad 5b332c33dd fix: добавить импорт config в decorators.py
- NameError: config not defined в @check_access
- Добавлен импорт from bot.config import config

Version: 0.5.3

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-24 23:59:32 +08:00
mirivlad 04ac125da6 fix: умная разбивка длинных сообщений с сохранением форматирования
- find_code_blocks — поиск блоков кода
- split_message — возвращает (text, has_markdown) для каждого сообщения
- send_long_message — отправляет блоки кода с Markdown, остальное без разметки
- Блоки кода не разрываются между сообщениями
- Слинные блоки кода отправляются частями без Markdown
- Нумерация добавляется автоматически

Version: 0.5.2

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-24 23:58:04 +08:00
mirivlad e9186e9dd2 refactor: разделение хендлеров и сервисов по модулям
- bot/handlers/commands.py - команды (/start, /menu, /help, /settings)
- bot/handlers/callbacks.py - callback от меню (468 строк)
- bot/services/command_executor.py - выполнение команд (299 строк)
- bot.py сокращён до 1330 строк (было 2365, -1000 строк!)

Итого:
- models: 425 строк
- utils: 384 строки
- keyboards: 200 строк
- handlers: 600 строк
- services: 300 строк
- bot.py: 1330 строк (точка входа + хендлеры сообщений)

Version: 0.5.1

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-24 23:47:12 +08:00
mirivlad d1592c7b38 refactor: модульная структура бота (v0.5.0)
Рефакторинг кода бота для улучшения поддерживаемости:

Структура:
- bot/models/ — модели данных (Server, UserState, сессии)
- bot/utils/ — утилиты (очистка текста, форматирование, декораторы)
- bot/keyboards/ — Inline-клавиатуры и меню
- bot/services/ — бизнес-логика (выполнение команд)
- bot/handlers/ — обработчики событий (пустые для будущего заполнения)
- bot/config.py — конфигурация и глобальные объекты

Изменения:
- bot.py сокращён с 3240 до 2364 строк (-900 строк дубликатов)
- Все модели перенесены в отдельные модули
- Утилиты разделены по назначению (cleaners, formatters, decorators)
- Меню вынесено в keyboards/menus.py
- Импорты из новой структуры через bot.config и bot.models

Преимущества:
- Лучшая организация кода
- Упрощённое тестирование модулей
- Легче добавлять новый функционал
- Чёткое разделение ответственности

Version: 0.5.0

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-24 23:32:26 +08:00