Проблема:
- При нажатии '❌ Отмена' в режиме редактирования сервера
бот продолжал ждать ввода и игнорировал другие команды
Исправление:
- Добавлен сброс состояния (waiting_for_input, input_type, editing_server, context)
при нажатии кнопки 'server_menu' в menu_callback
Теперь:
- Кнопка '❌ Отмена' корректно возвращает в меню серверов
- Бот больше не зависает в режиме ожидания ввода
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Удалено из меню:
- Команда /ai из списка команд бота
- Кнопка 'Управление доступом' из меню настроек
- Кнопка 'AI-провайдер' из меню настроек
Также удалены обработчики:
- access_menu, show_access, add_access, remove_access
- ai_provider_menu, ai_provider_toggle, ai_provider_info
Команды /ai* и AI-провайдеры остаются доступными через:
- /ai_presets, /ai_off, /ai_qwen, /ai_giga_*
- Прямые команды /ai
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Исправленные проблемы:
- Бот зависал после выполнения команд из кнопок меню
- PTY цикл зацикливался при ошибке чтения ([Errno 5] Input/output error)
- CallbackQuery обрабатывался неправильно (effective_user vs from_user)
- Длинные сообщения разбивались с неправильным экранированием Markdown
- Event loop блокировался при ожидании кнопок Продолжить/Отменить
Изменения:
1. bot/utils/ssh_readers.py — исправлено зависание read_pty_output()
2. bot/utils/formatters.py — переписана send_long_message() без блокировки event loop
3. bot/handlers/callbacks.py — обработка кнопок continue_output_/cancel_output
4. bot/models/user_state.py — добавлены поля для управления выводом
5. bot/services/command_executor.py — ограничитель итераций в цикле PTY
6. bot/utils/formatters.py — escape_markdown() не экранирует содержимое блоков кода
7. bot.py — мелкие исправления
Теперь:
- Кнопки меню работают корректно
- Длинный вывод разбивается на части с кнопками Продолжить/Отменить
- Бот не зависает и продолжает обрабатывать команды
- Markdown рендеринг работает правильно
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Добавлен базовый класс BaseAIProvider с единым интерфейсом
- Реализованы QwenCodeProvider и GigaChatProvider
- AIProviderManager использует единый процесс с инструментами
- Любой AI-провайдер теперь может работать с инструментами
- Поддержка process_with_tools для всех провайдеров
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Новый инструмент gigachat_tool для работы с GigaChat API
- GigaChatProvider в qwen_integration как альтернатива Qwen Code
- Настройки GigaChat и YandexGPT в .env.example
- Документация по настройке в README.md
- GigaChatCapability зарегистрирован в реестре инструментов
- Поддержка системных промптов, температуры, лимита токенов
- Автоматическое получение и кэширование OAuth токена
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Изменения:
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>
- Добавлена кнопка '🔄 Компактификация' в меню memory_menu
- Реализован callback handler для memory_compact
- Компактификация запускается из меню с отображением прогресса
- Исправление: команда /compact теперь доступна через меню
Version: 0.5.3
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Улучшения 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>
- Добавить проверку и миграции для колонок: prompt, user_id, enabled, notify, log_results, last_run, next_run
- Исправляет ошибку 'no such column: prompt' при запуске со старой БД
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Основные изменения:
- 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>
- bot/compaction.py: новый модуль для сжатия истории диалога
- Автоматическая компактификация при 70% заполнении контекста
- Сохранение summary в ChromaDB с структурированным форматом
- Интеграция с handle_ai_task для прозрачной работы
- Сохраняет последние 20 сообщений без изменений
- Структурированный промпт: факты, URL, серверы, настройки, решения
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- has_markdown переименован в has_code (более точно)
- Теперь Markdown применяется ко всем сообщениям если передан parse_mode
- Блоки кода без разрывов тоже работают с Markdown
Version: 0.5.5
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- NameError: config not defined в @check_access
- Добавлен импорт from bot.config import config
Version: 0.5.3
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- 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>
Рефакторинг кода бота для улучшения поддерживаемости:
Структура:
- 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>