feat: 实现消息编解码器和消息处理模型

- 添加编解码器,用于序列化和反序列化MessageEnvelope对象。
- 创建消息模型,包括分段(Seg)、群组信息(GroupInfo)、用户信息(UserInfo)、格式信息(FormatInfo)、模板信息(TemplateInfo)、基础消息信息(BaseMessageInfo)和消息基础(MessageBase)。
引入路由器以管理消息路由和连接。
- 实现运行时机制,通过钩子和路由来处理消息处理。
- 使用HTTP和WebSocket客户端和服务器开发传输层,以进行消息传输。
- 为消息内容和信封定义类型,以标准化消息结构。
This commit is contained in:
Windpicker-owo
2025-11-21 18:40:51 +08:00
parent ccfe17c986
commit fee7611e99
36 changed files with 2201 additions and 84 deletions

View File

@@ -3,7 +3,7 @@ import re
import traceback
from typing import Any
from maim_message import UserInfo
from mofox_bus import UserInfo
from src.chat.message_manager import message_manager
from src.chat.message_receive.chat_stream import ChatStream, get_chat_manager
@@ -353,7 +353,7 @@ class ChatBot:
return
# 先提取基础信息检查是否是自身消息上报
from maim_message import BaseMessageInfo
from mofox_bus import BaseMessageInfo
temp_message_info = BaseMessageInfo.from_dict(message_data.get("message_info", {}))
if temp_message_info.additional_config:
sent_message = temp_message_info.additional_config.get("echo", False)

View File

@@ -2,7 +2,7 @@ import asyncio
import hashlib
import time
from maim_message import GroupInfo, UserInfo
from mofox_bus import GroupInfo, UserInfo
from rich.traceback import install
from sqlalchemy.dialects.mysql import insert as mysql_insert
from sqlalchemy.dialects.sqlite import insert as sqlite_insert
@@ -358,7 +358,7 @@ class ChatManager:
def register_message(self, message: DatabaseMessages):
"""注册消息到聊天流"""
# 从 DatabaseMessages 提取平台和用户/群组信息
from maim_message import GroupInfo, UserInfo
from mofox_bus import GroupInfo, UserInfo
user_info = UserInfo(
platform=message.user_info.platform,

View File

@@ -4,7 +4,7 @@ from dataclasses import dataclass
from typing import Optional
import urllib3
from maim_message import BaseMessageInfo, MessageBase, Seg, UserInfo
from mofox_bus import BaseMessageInfo, MessageBase, Seg, UserInfo
from rich.traceback import install
from src.chat.message_receive.chat_stream import ChatStream

View File

@@ -7,7 +7,7 @@ import time
from typing import Any
import orjson
from maim_message import BaseMessageInfo, Seg
from mofox_bus import BaseMessageInfo, Seg
from src.chat.utils.self_voice_cache import consume_self_voice_text
from src.chat.utils.utils_image import get_image_manager
@@ -430,9 +430,9 @@ def get_message_info_from_db_message(db_message: DatabaseMessages) -> BaseMessag
Returns:
BaseMessageInfo: 重建的消息信息对象
"""
from maim_message import GroupInfo, UserInfo
from mofox_bus import GroupInfo, UserInfo
# 从 DatabaseMessages 的 user_info 转换为 maim_message.UserInfo
# 从 DatabaseMessages 的 user_info 转换为 mofox_bus.UserInfo
user_info = UserInfo(
platform=db_message.user_info.platform,
user_id=db_message.user_info.user_id,
@@ -440,7 +440,7 @@ def get_message_info_from_db_message(db_message: DatabaseMessages) -> BaseMessag
user_cardname=db_message.user_info.user_cardname or ""
)
# 从 DatabaseMessages 的 group_info 转换为 maim_message.GroupInfo如果存在
# 从 DatabaseMessages 的 group_info 转换为 mofox_bus.GroupInfo如果存在
group_info = None
if db_message.group_info:
group_info = GroupInfo(

View File

@@ -8,7 +8,7 @@ from typing import Any
import numpy as np
import rjieba
from maim_message import UserInfo
from mofox_bus import UserInfo
from src.chat.message_receive.chat_stream import get_chat_manager