Merge branch 'master' of https://github.com/MaiBot-Plus/MaiMbot-Pro-Max
This commit is contained in:
@@ -6,7 +6,6 @@
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
import re
|
||||
import sqlite3
|
||||
import pymysql
|
||||
from contextlib import closing
|
||||
|
||||
@@ -11,8 +11,7 @@
|
||||
import re
|
||||
import time
|
||||
import hashlib
|
||||
import asyncio
|
||||
from typing import Dict, List, Optional, Tuple
|
||||
from typing import Dict, List
|
||||
from dataclasses import asdict
|
||||
|
||||
from src.common.logger import get_logger
|
||||
|
||||
@@ -6,9 +6,7 @@
|
||||
主要通过注入系统提示词来指导AI安全响应。
|
||||
"""
|
||||
|
||||
import random
|
||||
import re
|
||||
from typing import List, Optional
|
||||
from typing import List
|
||||
|
||||
from src.common.logger import get_logger
|
||||
from src.config.config import global_config
|
||||
|
||||
@@ -13,7 +13,6 @@ from typing import Optional, Tuple, List, Any
|
||||
from PIL import Image
|
||||
from rich.traceback import install
|
||||
from sqlalchemy import select
|
||||
from src.common.database.database import db
|
||||
from src.common.database.sqlalchemy_database_api import get_db_session
|
||||
from src.common.database.sqlalchemy_models import Emoji, Images
|
||||
from src.common.logger import get_logger
|
||||
|
||||
@@ -7,8 +7,7 @@ from rich.traceback import install
|
||||
from maim_message import GroupInfo, UserInfo
|
||||
|
||||
from src.common.logger import get_logger
|
||||
from src.common.database.database import db
|
||||
from sqlalchemy import select, text
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.dialects.sqlite import insert as sqlite_insert
|
||||
from sqlalchemy.dialects.mysql import insert as mysql_insert
|
||||
from src.common.database.sqlalchemy_models import ChatStreams # 新增导入
|
||||
|
||||
@@ -12,7 +12,6 @@ from src.common.logger import get_logger
|
||||
from src.chat.utils.utils_image import get_image_manager
|
||||
from src.chat.utils.utils_voice import get_voice_text
|
||||
from src.chat.utils.utils_video import get_video
|
||||
from src.multimodal.video_analyzer import get_video_analyzer
|
||||
from src.config.config import global_config
|
||||
from .chat_stream import ChatStream
|
||||
|
||||
|
||||
@@ -16,7 +16,6 @@ from src.chat.utils.chat_message_builder import (
|
||||
build_readable_messages_with_id,
|
||||
get_raw_msg_before_timestamp_with_chat,
|
||||
)
|
||||
from src.plugin_system.apis.message_api import filter_mai_messages
|
||||
from src.chat.utils.utils import get_chat_type_and_target_info
|
||||
from src.chat.planner_actions.action_manager import ActionManager
|
||||
from src.chat.message_receive.chat_stream import get_chat_manager
|
||||
|
||||
@@ -260,7 +260,6 @@ def get_actions_by_timestamp_with_chat(
|
||||
) -> List[Dict[str, Any]]:
|
||||
"""获取在特定聊天从指定时间戳到指定时间戳的动作记录,按时间升序排序,返回动作记录列表"""
|
||||
from src.common.logger import get_logger
|
||||
from src.common.database.sqlalchemy_database_api import get_db_session
|
||||
|
||||
logger = get_logger("chat_message_builder")
|
||||
|
||||
@@ -353,7 +352,6 @@ def get_actions_by_timestamp_with_chat_inclusive(
|
||||
chat_id: str, timestamp_start: float, timestamp_end: float, limit: int = 0, limit_mode: str = "latest"
|
||||
) -> List[Dict[str, Any]]:
|
||||
"""获取在特定聊天从指定时间戳到指定时间戳的动作记录(包含边界),按时间升序排序,返回动作记录列表"""
|
||||
from src.common.database.sqlalchemy_database_api import get_db_session
|
||||
with get_db_session() as session:
|
||||
if limit > 0:
|
||||
if limit_mode == "latest":
|
||||
@@ -785,7 +783,6 @@ def build_pic_mapping_info(pic_id_mapping: Dict[str, str]) -> str:
|
||||
sorted_items = sorted(pic_id_mapping.items(), key=lambda x: int(x[1].replace("图片", "")))
|
||||
|
||||
|
||||
from src.common.database.sqlalchemy_database_api import get_db_session
|
||||
for pic_id, display_name in sorted_items:
|
||||
# 从数据库中获取图片描述
|
||||
description = "内容正在阅读,请稍等"
|
||||
|
||||
@@ -12,7 +12,6 @@ from PIL import Image
|
||||
from rich.traceback import install
|
||||
|
||||
from src.common.logger import get_logger
|
||||
from src.common.database.database import db
|
||||
from src.common.database.sqlalchemy_models import Images, ImageDescriptions
|
||||
from src.config.config import global_config, model_config
|
||||
from src.llm_models.utils_model import LLMRequest
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
import time
|
||||
import json
|
||||
import hashlib
|
||||
import inspect
|
||||
import os
|
||||
from pathlib import Path
|
||||
import numpy as np
|
||||
import faiss
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
# mmc/src/common/database/db_migration.py
|
||||
|
||||
from sqlalchemy import inspect, text
|
||||
from sqlalchemy.engine import Engine
|
||||
from src.common.database.sqlalchemy_models import Base, get_engine
|
||||
from src.common.logger import get_logger
|
||||
|
||||
|
||||
@@ -7,9 +7,7 @@
|
||||
import traceback
|
||||
import time
|
||||
from typing import Dict, List, Any, Union, Type, Optional
|
||||
from contextlib import contextmanager
|
||||
from sqlalchemy.orm import Session
|
||||
from sqlalchemy.exc import SQLAlchemyError, DisconnectionError, OperationalError
|
||||
from sqlalchemy.exc import SQLAlchemyError
|
||||
from sqlalchemy import desc, asc, func, and_
|
||||
from src.common.logger import get_logger
|
||||
from src.common.database.sqlalchemy_models import (
|
||||
|
||||
@@ -11,7 +11,6 @@ import os
|
||||
import datetime
|
||||
import time
|
||||
from src.common.logger import get_logger
|
||||
import threading
|
||||
from contextlib import contextmanager
|
||||
|
||||
logger = get_logger("sqlalchemy_models")
|
||||
|
||||
@@ -17,7 +17,6 @@ from src.common.server import get_global_server, Server
|
||||
from src.mood.mood_manager import mood_manager
|
||||
from rich.traceback import install
|
||||
from src.manager.schedule_manager import schedule_manager
|
||||
from src.common.cache_manager import tool_cache
|
||||
# from src.api.main import start_api_server
|
||||
|
||||
# 导入新的插件管理器和热重载管理器
|
||||
|
||||
@@ -156,7 +156,7 @@ class ScheduleManager:
|
||||
schedule_str += f" - {item.get('time_range', '未知时间')}: {item.get('activity', '未知活动')}\n"
|
||||
logger.info(schedule_str)
|
||||
else:
|
||||
logger.warning(f"数据库中的日程数据格式无效,将重新生成日程")
|
||||
logger.warning("数据库中的日程数据格式无效,将重新生成日程")
|
||||
await self.generate_and_save_schedule()
|
||||
except json.JSONDecodeError as e:
|
||||
logger.error(f"日程数据JSON解析失败: {e},将重新生成日程")
|
||||
@@ -219,13 +219,13 @@ class ScheduleManager:
|
||||
existing_schedule = session.query(Schedule).filter(Schedule.date == today_str).first()
|
||||
if existing_schedule:
|
||||
# 更新现有日程
|
||||
setattr(existing_schedule, 'schedule_data', json.dumps(schedule_data))
|
||||
setattr(existing_schedule, 'updated_at', datetime.now())
|
||||
existing_schedule.schedule_data = json.dumps(schedule_data)
|
||||
existing_schedule.updated_at = datetime.now()
|
||||
else:
|
||||
# 创建新日程
|
||||
new_schedule = Schedule()
|
||||
setattr(new_schedule, 'date', today_str)
|
||||
setattr(new_schedule, 'schedule_data', json.dumps(schedule_data))
|
||||
new_schedule.date = today_str
|
||||
new_schedule.schedule_data = json.dumps(schedule_data)
|
||||
session.add(new_schedule)
|
||||
session.commit()
|
||||
|
||||
@@ -241,7 +241,7 @@ class ScheduleManager:
|
||||
logger.warning(f"第 {attempt + 1} 次生成的日程验证失败,正在重试...")
|
||||
if attempt < self.max_retries - 1:
|
||||
# 在重试时添加更详细的错误提示
|
||||
prompt += f"\n\n**上次生成失败,请特别注意**:\n- 确保所有时间段连续覆盖24小时\n- 时间格式必须为HH:MM-HH:MM\n- 不能有时间间隙或重叠"
|
||||
prompt += "\n\n**上次生成失败,请特别注意**:\n- 确保所有时间段连续覆盖24小时\n- 时间格式必须为HH:MM-HH:MM\n- 不能有时间间隙或重叠"
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"第 {attempt + 1} 次生成日程失败: {e}")
|
||||
|
||||
@@ -73,7 +73,7 @@ class VideoAnalyzer:
|
||||
self.frame_interval = 1.0 # 抽帧时间间隔(秒)
|
||||
self.batch_size = 3 # 批处理时每批处理的帧数
|
||||
self.timeout = 60.0 # 分析超时时间(秒)
|
||||
self.logger.info(f"✅ 从配置文件读取视频分析参数")
|
||||
self.logger.info("✅ 从配置文件读取视频分析参数")
|
||||
|
||||
except AttributeError as e:
|
||||
# 如果配置不存在,使用代码中的默认值
|
||||
@@ -494,7 +494,7 @@ class VideoAnalyzer:
|
||||
return {"summary": existing_video.description}
|
||||
|
||||
# hash未匹配,但可能是重编码的相同视频,进行特征检测
|
||||
self.logger.info(f"未找到hash匹配的视频记录,检查是否为重编码的相同视频(测试功能)")
|
||||
self.logger.info("未找到hash匹配的视频记录,检查是否为重编码的相同视频(测试功能)")
|
||||
|
||||
# 创建临时文件以提取视频特征
|
||||
with tempfile.NamedTemporaryFile(delete=False, suffix='.mp4') as temp_file:
|
||||
@@ -520,7 +520,7 @@ class VideoAnalyzer:
|
||||
self._update_video_count(existing_similar_video.id)
|
||||
return {"summary": existing_similar_video.description}
|
||||
|
||||
self.logger.info(f"未找到相似视频,开始新的分析")
|
||||
self.logger.info("未找到相似视频,开始新的分析")
|
||||
|
||||
# 检查临时文件是否创建成功
|
||||
if not os.path.exists(temp_path):
|
||||
|
||||
@@ -9,7 +9,6 @@ from json_repair import repair_json
|
||||
from typing import Any, Callable, Dict, Union, Optional
|
||||
from sqlalchemy import select
|
||||
from src.common.logger import get_logger
|
||||
from src.common.database.database import db
|
||||
from src.common.database.sqlalchemy_models import PersonInfo
|
||||
from src.common.database.sqlalchemy_database_api import get_db_session
|
||||
from src.llm_models.utils_model import LLMRequest
|
||||
|
||||
@@ -209,7 +209,7 @@ class PluginHotReloadManager:
|
||||
else:
|
||||
dir_info.append(f"{watch_dir} (外部插件)")
|
||||
|
||||
logger.info(f"🚀 插件热重载已启动,监听目录:")
|
||||
logger.info("🚀 插件热重载已启动,监听目录:")
|
||||
for info in dir_info:
|
||||
logger.info(f" 📂 {info}")
|
||||
|
||||
|
||||
@@ -10,7 +10,6 @@ from src.plugin_system import (
|
||||
)
|
||||
from src.person_info.person_info import get_person_info_manager
|
||||
from src.common.logger import get_logger
|
||||
from src.plugin_system import database_api
|
||||
from src.plugin_system.base.component_types import ChatType
|
||||
logger = get_logger(__name__)
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ from collections import deque
|
||||
|
||||
# 导入新插件系统
|
||||
from src.plugin_system import BaseAction, ActionActivationType, ChatMode
|
||||
from src.plugin_system.base.component_types import ChatType
|
||||
|
||||
# 导入依赖的系统组件
|
||||
from src.common.logger import get_logger
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
负责处理所有与图片相关的任务,特别是AI生成图片。
|
||||
"""
|
||||
import base64
|
||||
import os
|
||||
from pathlib import Path
|
||||
from typing import Callable
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import re
|
||||
from typing import List, Tuple, Type
|
||||
import difflib
|
||||
|
||||
from src.plugin_system import (
|
||||
BasePlugin,
|
||||
@@ -9,9 +8,7 @@ from src.plugin_system import (
|
||||
ComponentInfo,
|
||||
ActionActivationType,
|
||||
ConfigField,
|
||||
database_api,
|
||||
)
|
||||
from src.common.database.sqlalchemy_models import Messages, PersonInfo
|
||||
from src.common.logger import get_logger
|
||||
from src.plugin_system.apis import send_api
|
||||
from .qq_emoji_list import qq_face
|
||||
|
||||
Reference in New Issue
Block a user