Commit Graph

9 Commits (107685771cada0b0f7dbabc83a51add6fa2185b7)

Author SHA1 Message Date
mirivlad 769c662ab5 Версия 0.8.1 - Автоматическая OAuth авторизация Qwen Code
Основные изменения:
- Добавлена автоматическая OAuth авторизация для Qwen Code
- При первом запросе к Qwen бот отправляет ссылку на авторизацию
- После авторизации токены сохраняются в ~/.qwen/oauth_creds.json
- Добавлена команда /qwen_auth для явной авторизации
- Ссылка на авторизацию кликабельная в Telegram

Новые файлы:
- bot/utils/qwen_oauth.py — OAuth 2.0 Device Flow клиент
- authorize_qwen.sh — скрипт для ручной авторизации

Изменения:
- bot.py — проверка авторизации в handle_ai_task, qwen_auth_command
- bot/models/user_state.py — поле waiting_for_qwen_oauth
- qwen_integration.py — интеграция с OAuth модулем
- README.md — версия 0.8.1

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-01 22:06:14 +08:00
mirivlad 9f906af400 Версия 0.8.0 - Исправление SSH и команда /restart_bot
Основные изменения:
- Исправлено чтение вывода SSH команд (wait_and_read_ssh вместо цикла с таймаутом)
- Добавлена команда /restart_bot для перезапуска бота через sudo
- Пароль sudo запрашивается у пользователя (ИИ отключается на время ввода)
- После перезапуска бот отправляет уведомление с главным меню
- Улучшена обработка stdout/stderr в SSH инструменте

Исправленные проблемы:
- SSH команды не возвращали вывод (returncode был None до завершения процесса)
- Использован подход с параллельным чтением потоков и process.wait()
- Команда /restart_bot использует script для создания PTY

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-01 19:18:17 +08:00
mirivlad d2f22ee149 v0.7.2: Исправление зависания бота и обработки длинного вывода
Исправленные проблемы:
- Бот зависал после выполнения команд из кнопок меню
- 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>
2026-02-28 11:10:29 +08:00
mirivlad d0f91d7daa fix: используем asyncio.Event для неблокирующего ожидания кнопок
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-27 19:49:19 +08:00
mirivlad fbf0edc60a v0.7.2: Улучшения AI-провайдеров, инструменты и обработчики
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-27 18:07:57 +08:00
mirivlad e538d84e13 v0.7: AI Provider Manager для работы с любым AI-провайдером (Qwen, GigaChat)
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-02-26 23:21:20 +08:00
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 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 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