- Добавить пути nvm и node в PATH
- Добавить ReadWritePaths для ~/.nvm и ~/.config/nvm
- Обновить install-systemd-service.sh для авто-определения путей
- Исправляет ошибку 'qwen: command not found'
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Добавить ReadWritePaths=%WORKDIR% для разрешения записи в БД
- Исправляет ошибку 'attempt to write a readonly database' от ChromaDB
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>
- Добавить инициализацию компактора в post_init()
- Убрать дублирующую инициализацию из handle_ai_task()
- Исправляет ошибку при вызове компактификации через меню памяти
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>
- Добавлена версия 0.6.0
- Секция 'Быстрый старт' с install.sh
- Подробная инструкция по установке
- Инструкция по обновлению
- Обновлённая структура проекта с bot/
- Модульная архитектура
- Актуализированные требования (Python 3.10+, Node.js 18+)
Version: 0.6.1
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- install.sh — автоматическая установка всех зависимостей
- Проверка Python, pip, Node.js, npm
- Установка qwen-code через npm (глобально)
- Создание venv и установка pip зависимостей
- Определение: новая установка или обновление
- Сохранение версии в .installed
- run.sh — только запуск бота (без установки)
- Проверка наличия venv
- Проверка .env и токена
- Запуск bot.py
- install.sh делает:
1. Проверяет системные требования
2. Устанавливает Node.js (если нет)
3. Устанавливает qwen-code (npm install -g)
4. Создаёт venv и ставит pip зависимости
5. Создаёт .env из .env.example
6. Сохраняет версию
Version: 0.6.0
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- _Контекст_ не работал из-за экранирования подчёркивания
- *Контекст* — работает корректно
Version: 0.5.6
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>
Новые возможности:
- Автоматическое извлечение фактов каждые 5 сообщений диалога
- ИИ анализирует диалог и извлекает факты по категориям (личное, технологии, проекты, предпочтения)
- Команда /facts — показать все сохранённые факты
- Команда /forget <номер> — удалить факт
- Счётчик сообщений для триггера извлечения (messages_since_fact_extract)
Архитектура:
- Эвристики (мгновенно): простые паттерны типа 'меня зовут...', 'я использую...'
- ИИ (каждые 5 сообщений): анализ последних 10 сообщений, JSON-ответ с фактами
- ChromaDB: все сообщения для семантического поиска
- SQLite (facts): извлечённые факты с категориями и уверенностью
Промпт для ИИ:
- Категории: PERSONAL, TECHNICAL, PROJECT, PREFERENCE, OTHER
- Формат: JSON с type, content, confidence
- Только явные факты из диалога
Version: 0.4.0
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Изменения:
- Убран лишний ai_status из label кнопки
- Чёткие названия: '✅ Выключить чат с ИИ' / '❌ Включить чат с ИИ'
- Добавлен флаг --yolo для qwen-code (авто-подтверждение)
Теперь кнопка правильно показывает действие
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Изменения:
- Разные callback_data для вкл/выкл (toggle_ai_chat_on/off)
- Разный текст кнопки в зависимости от статуса
- Telegram теперь правильно обновляет кнопку
Теперь кнопка показывает правильное действие
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Изменения:
- UserState.ai_chat_history — хранение истории диалога
- handle_ai_task() передаёт историю в Qwen Code
- История ограничена 20 последними сообщениями
- Команда /ai clear — очистка истории
- Исправлена кнопка меню (убран лишний импорт)
Теперь ИИ помнит контекст диалога в рамках сессии
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Новые возможности:
- Кнопка '💬 Чат с ИИ агентом' в главном меню
- Включение/выключение режима чата
- Все сообщения отправляются в Qwen Code когда режим включён
- Индикация статуса в кнопке (✅/❌)
- Индикация статуса в главном меню
Изменения:
- UserState.ai_chat_mode — флаг режима
- handle_ai_task() — обработка задач для ИИ
- Динамическое обновление кнопки в get_keyboard()
- Обновление 'О боте' с информацией о чате с ИИ
Использование:
1. Меню → 💬 Чат с ИИ агентом (включить)
2. Отправлять сообщения как задачи для ИИ
3. Меню → 💬 Чат с ИИ агентом (выключить)
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Изменения:
- Использование флага -p для передачи задачи
- Простой текстовый вывод вместо stream-json
- Каждый запрос запускает новый процесс qwen
- Убрано сложное управление сессиями
- Edit сообщения вместо новых сообщений
Теперь /ai работает стабильнее
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Новые возможности:
- Команда /ai для выполнения задач через Qwen Code
- Автоматический запуск сессии при первой задаче
- Обработка OAuth авторизации (ссылка отправляется в чат)
- Команды /ai status и /ai stop для управления сессией
- Таймаут неактивности 30 минут
- Буферизация вывода
Файлы:
- qwen_integration.py — менеджер сессий Qwen Code
- bot.py — команда /ai и хендлеры
Пример использования:
/ai создай функцию Python для сортировки списка
/ai status
/ai stop
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Изменения в меню 'О боте':
- Обновлена версия на 2.1.0
- Добавлен список возможностей бота
- Улучшено форматирование текста
- Добавлена информация о безопасности
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Проблема:
- В MenuItem иконка указывалась в label ('🖥️ Выбор сервера')
- И дополнительно добавлялась через поле icon
- Результат: '🖥️🖥️ Выбор сервера'
Решение:
- Убрать добавление иконки в get_keyboard()
- Иконки указываются только в label MenuItem
Изменения:
- MenuBuilder.get_keyboard() теперь использует только item.label
- Поле icon в MenuItem сохранено для обратной совместимости
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Изменения:
- Очистка ANSI-кодов через re.sub() вместо pyte
- Обработка \r для прогресс-баров (схлопывание в финальный результат)
- Удаление дублирующегося текста вида "0% [текст] 0% [текст]"
- Форматирование вывода: первые 5 + последние 10 строк
- Индикация количества пропущенных строк
Результат:
- Вместо 100+ строк мусора — 5-15 строк чистого вывода
- Корректная обработка sudo команд с запросом пароля
- Удалена зависимость от pyte
Пример:
sudo apt update теперь показывает список репозиториев и итог,
без прогресс-баров "Чтение списков пакетов… 95%"
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Новые возможности:
- Класс Server и ServerManager для управления серверами
- Конфигурация серверов через .env (SERVERS, SSH_KEY_PATH)
- Меню выбора сервера с динамическим обновлением
- Выполнение команд через SSH на удалённых серверах
- Индикатор текущего сервера в UI
- Персональная рабочая директория для каждого сервера
- Поддержка составных команд с cd через SSH
Формат конфигурации серверов:
SERVERS=name|host|port|user|tags,name|host|port|user|tags
Изменения:
- + asyncssh==2.16.0 в зависимости
- ~ .env.example: добавлены SERVERS, SSH_KEY_PATH, DEFAULT_SERVER
- ~ bot.py: ~600 строк нового кода
- ~ menu: добавлено 🖥️ Выбор сервера
Настройки состояния пользователя:
- current_server: имя текущего сервера (по умолчанию 'local')
- working_directory: сбрасывается при смене сервера
Безопасность:
- known_hosts отключён для простоты (можно включить в продакшене)
- SSH ключ через client_keys (путь из .env)
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Основные изменения:
- Перенос конфигурации из bot_config.json в .env
- Удалено хранение токена в JSON (только переменные окружения)
- Добавлена проверка прав доступа через ALLOWED_USERS
- Декоратор @check_access для защиты хендлеров
- Настройки бота: BOT_NAME, BOT_DESCRIPTION, BOT_ICON_EMOJI, WORKING_DIRECTORY
- python-dotenv для загрузки переменных окружения
- Обновлён run.sh для работы с .env
- Убрана установка имени/описания при запуске (rate limit fix)
- Удалён функционал изменения настроек через бота (только через .env)
- Обновлена документация
Безопасность:
- Токен только в .env (не коммитится)
- Проверка прав доступа по списку ALLOWED_USERS
- bot_config.json удалён
Файлы:
- + .env.example (шаблон конфигурации)
- - bot_config.json
- ~ bot.py, run.sh, README.md, requirements.txt
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>