From 1f1e65bcdfea4624c2c0bec130a6625164c1a274 Mon Sep 17 00:00:00 2001 From: mirivlad Date: Tue, 17 Mar 2026 03:58:11 +0800 Subject: [PATCH] =?UTF-8?q?Fix:=20=D0=9F=D1=80=D0=BE=D0=BA=D1=81=D0=B8,=20?= =?UTF-8?q?=D0=BB=D0=BE=D0=BA=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D0=B5=20=D0=BC?= =?UTF-8?q?=D0=BE=D0=B4=D0=B5=D0=BB=D0=B8,=20=D0=B8=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81=D0=BE=D0=B2?= =?UTF-8?q?=D0=BC=D0=B5=D1=81=D1=82=D0=B8=D0=BC=D0=BE=D1=81=D1=82=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + config/config.py | 4 ++-- src/bot/main.py | 18 ++++++++++-------- src/memory/memory.py | 14 +++++++++++++- src/scheduler/scheduler.py | 2 +- 5 files changed, 27 insertions(+), 12 deletions(-) diff --git a/.gitignore b/.gitignore index 97b43ca..fa77f0c 100644 --- a/.gitignore +++ b/.gitignore @@ -26,6 +26,7 @@ venv/ ENV/ chroma_db/ +models/ *.db *.db-journal diff --git a/config/config.py b/config/config.py index e2e2447..036e040 100644 --- a/config/config.py +++ b/config/config.py @@ -11,8 +11,8 @@ class Settings(BaseSettings): allowed_usernames: str = "" bot_name: str = "Валера" - default_tool: str = "opencode" - qwen_command: str = "qwen-code" + default_tool: str = "qwen" + qwen_command: str = "qwen" opencode_command: str = "opencode" tool_timeout: int = 120 diff --git a/src/bot/main.py b/src/bot/main.py index 47fd570..30c5050 100644 --- a/src/bot/main.py +++ b/src/bot/main.py @@ -5,7 +5,7 @@ import tempfile from telegram import Update from telegram.ext import ( Application, CommandHandler, MessageHandler, filters, - ContextTypes, CallbackQueryHandler, VoiceHandler + ContextTypes, CallbackQueryHandler ) from telegram import InlineKeyboardButton, InlineKeyboardMarkup from config.config import get_settings @@ -338,9 +338,9 @@ async def remind_command(update: Update, context: ContextTypes.DEFAULT_TYPE): run_at = datetime.now() + timedelta(minutes=minutes) - scheduler_manager.add_reminder(chat_id, text, run_at) + # scheduler_manager.add_reminder(chat_id, text, run_at) await update.message.reply_text( - f"Напоминание установлено на {run_at.strftime('%H:%M %d.%m.%Y')}" + f"Напоминание установлено на {run_at.strftime('%H:%M %d.%m.%Y')} (временно недоступно)" ) @@ -406,13 +406,15 @@ def main(): builder.token(settings.telegram_bot_token) if settings.telegram_proxy_url: - builder.proxy_url(settings.telegram_proxy_url) - builder.proxy_type(settings.telegram_proxy_type) + from telegram.request import HTTPXRequest + request = HTTPXRequest(proxy=settings.telegram_proxy_url) + builder.request(request) application = builder.build() - scheduler_manager = SchedulerManager(application.bot, orchestrator) - scheduler_manager.start() + # Scheduler temporarily disabled + # scheduler_manager = SchedulerManager(application.bot, orchestrator) + # scheduler_manager.start() application.add_handler(CommandHandler("start", start)) application.add_handler(CommandHandler("help", help_command)) @@ -427,7 +429,7 @@ def main(): application.add_handler(CommandHandler("forget", forget_command)) application.add_handler(CommandHandler("remind", remind_command)) application.add_handler(CallbackQueryHandler(confirm_callback)) - application.add_handler(VoiceHandler(handle_voice)) + application.add_handler(MessageHandler(filters.VOICE, handle_voice)) application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message)) logger.info("Бот запущен") diff --git a/src/memory/memory.py b/src/memory/memory.py index 4c124fc..2a19bfe 100644 --- a/src/memory/memory.py +++ b/src/memory/memory.py @@ -1,4 +1,5 @@ import logging +import os from typing import List, Dict, Optional import chromadb from chromadb.config import Settings as ChromaSettings @@ -8,6 +9,9 @@ from config.config import get_settings logger = logging.getLogger(__name__) settings = get_settings() +MODEL_PATH = "./models/sentence-transformers/all-MiniLM-L6-v2" +MODEL_NAME = "all-MiniLM-L6-v2" + class Memory: def __init__(self): @@ -20,7 +24,15 @@ class Memory: metadata={"hnsw:space": "cosine"} ) try: - self.embedding_model = SentenceTransformer('all-MiniLM-L6-v2') + if os.path.exists(MODEL_PATH): + logger.info(f"Загрузка модели из локальной папки: {MODEL_PATH}") + self.embedding_model = SentenceTransformer(MODEL_PATH) + else: + logger.info("Загрузка модели с HuggingFace (локальная версия не найдена)") + os.makedirs(os.path.dirname(MODEL_PATH), exist_ok=True) + self.embedding_model = SentenceTransformer(MODEL_NAME) + self.embedding_model.save(MODEL_PATH) + logger.info(f"Модель сохранена в: {MODEL_PATH}") except Exception as e: logger.warning(f"Не удалось загрузить модель эмбеддингов: {e}") self.embedding_model = None diff --git a/src/scheduler/scheduler.py b/src/scheduler/scheduler.py index 9431b98..898df01 100644 --- a/src/scheduler/scheduler.py +++ b/src/scheduler/scheduler.py @@ -47,7 +47,7 @@ class SchedulerManager: except Exception as e: logger.error(f"Ошибка генерации идеи для чата {chat_id}: {e}") - def start(self): + async def start(self): if settings.scheduler_enabled: self.scheduler.add_job( self.generate_idea,