重构代码以使用 mofox_wire 替代 mofox_bus,更新相关文档和示例
This commit is contained in:
@@ -342,7 +342,7 @@ class ChatManager:
|
||||
def register_message(self, message: DatabaseMessages):
|
||||
"""注册消息到聊天流"""
|
||||
# 从 DatabaseMessages 提取平台和用户/群组信息
|
||||
from mofox_bus import GroupInfo, UserInfo
|
||||
from mofox_wire import GroupInfo, UserInfo
|
||||
|
||||
user_info = UserInfo(
|
||||
platform=message.user_info.platform,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"""
|
||||
统一消息处理器 (Message Handler)
|
||||
|
||||
利用 mofox_bus.MessageRuntime 的路由功能,简化消息处理链条:
|
||||
利用 mofox_wire.MessageRuntime 的路由功能,简化消息处理链条:
|
||||
|
||||
1. 使用 @runtime.on_message() 装饰器注册按消息类型路由的处理器
|
||||
2. 使用 before_hook 进行消息预处理(ID标准化、过滤等)
|
||||
@@ -35,7 +35,7 @@ import traceback
|
||||
from functools import partial
|
||||
from typing import TYPE_CHECKING, Any
|
||||
|
||||
from mofox_bus import MessageEnvelope, MessageRuntime
|
||||
from mofox_wire import MessageEnvelope, MessageRuntime
|
||||
|
||||
from src.chat.message_manager import message_manager
|
||||
from src.chat.message_receive.storage import MessageStorage
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
"""消息处理工具模块
|
||||
将原 MessageRecv 的消息处理逻辑提取为独立函数,
|
||||
基于 mofox-bus 的 TypedDict 形式构建消息数据,然后转换为 DatabaseMessages
|
||||
基于 mofox-wire 的 TypedDict 形式构建消息数据,然后转换为 DatabaseMessages
|
||||
"""
|
||||
import base64
|
||||
import time
|
||||
from typing import Any
|
||||
|
||||
import orjson
|
||||
from mofox_bus import MessageEnvelope
|
||||
from mofox_bus.types import MessageInfoPayload, SegPayload, UserInfoPayload, GroupInfoPayload
|
||||
from mofox_wire import MessageEnvelope
|
||||
from mofox_wire.types import MessageInfoPayload, SegPayload, UserInfoPayload, GroupInfoPayload
|
||||
|
||||
from src.chat.utils.self_voice_cache import consume_self_voice_text
|
||||
from src.chat.utils.utils_image import get_image_manager
|
||||
|
||||
@@ -8,7 +8,7 @@ from typing import TYPE_CHECKING
|
||||
|
||||
from rich.traceback import install
|
||||
|
||||
from mofox_bus import MessageEnvelope
|
||||
from mofox_wire import MessageEnvelope
|
||||
|
||||
from src.chat.message_receive.message_processor import process_message_from_dict
|
||||
from src.chat.message_receive.storage import MessageStorage
|
||||
|
||||
@@ -13,7 +13,7 @@ from datetime import datetime, timedelta
|
||||
from typing import Any, Literal, TYPE_CHECKING
|
||||
|
||||
from src.chat.express.expression_selector import expression_selector
|
||||
from mofox_bus import MessageEnvelope
|
||||
from mofox_wire import MessageEnvelope
|
||||
from src.chat.message_receive.message import Seg, UserInfo
|
||||
from src.chat.message_receive.uni_message_sender import HeartFCSender
|
||||
from src.chat.utils.chat_message_builder import (
|
||||
|
||||
@@ -11,7 +11,7 @@ CoreSink 统一管理器
|
||||
4. 提供统一的消息发送接口
|
||||
|
||||
架构说明(2025-11 重构):
|
||||
- 集成 mofox_bus.MessageRuntime 作为消息路由中心
|
||||
- 集成 mofox_wire.MessageRuntime 作为消息路由中心
|
||||
- 使用 @runtime.on_message() 装饰器注册消息处理器
|
||||
- 利用 before_hook/after_hook/error_hook 处理前置/后置/错误逻辑
|
||||
- 简化消息处理链条,提高可扩展性
|
||||
@@ -24,7 +24,7 @@ import contextlib
|
||||
import multiprocessing as mp
|
||||
from typing import TYPE_CHECKING, Any, Awaitable, Callable, Dict, Optional
|
||||
|
||||
from mofox_bus import (
|
||||
from mofox_wire import (
|
||||
InProcessCoreSink,
|
||||
MessageEnvelope,
|
||||
MessageRuntime,
|
||||
|
||||
@@ -534,7 +534,7 @@ DEFAULT_MODULE_COLORS = {
|
||||
# 数据库和消息
|
||||
"database_model": "#875F00", # 橙褐色
|
||||
"database": "#00FF00", # 橙褐色
|
||||
"mofox_bus": "#AF87D7", # 紫褐色
|
||||
"mofox_wire": "#AF87D7", # 紫褐色
|
||||
# 日志系统
|
||||
"logger": "#808080", # 深灰色
|
||||
"confirm": "#FFFF00", # 黄色+粗体
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import os
|
||||
|
||||
from mofox_bus import MessageServer
|
||||
from mofox_wire import MessageServer
|
||||
|
||||
from src.common.logger import get_logger
|
||||
from src.common.server import get_global_server
|
||||
@@ -45,7 +45,7 @@ def get_global_api() -> MessageServer:
|
||||
|
||||
if bus_config.auth_token:
|
||||
kwargs["enable_token"] = True
|
||||
kwargs["custom_logger"] = get_logger("mofox_bus")
|
||||
kwargs["custom_logger"] = get_logger("mofox_wire")
|
||||
|
||||
global_api = MessageServer(**kwargs)
|
||||
for token in bus_config.auth_token:
|
||||
|
||||
@@ -575,7 +575,7 @@ class ExperimentalConfig(ValidatedConfigBase):
|
||||
|
||||
|
||||
class MessageBusConfig(ValidatedConfigBase):
|
||||
"""mofox_bus 消息服务配置"""
|
||||
"""mofox_wire 消息服务配置"""
|
||||
|
||||
use_custom: bool = Field(default=False, description="是否使用自定义地址")
|
||||
host: str = Field(default="127.0.0.1", description="消息服务主机")
|
||||
|
||||
@@ -92,7 +92,7 @@ import traceback
|
||||
import uuid
|
||||
from typing import TYPE_CHECKING, Any
|
||||
|
||||
from mofox_bus import MessageEnvelope
|
||||
from mofox_wire import MessageEnvelope
|
||||
from src.common.data_models.database_data_model import DatabaseUserInfo
|
||||
if TYPE_CHECKING:
|
||||
from src.common.data_models.database_data_model import DatabaseMessages
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"""
|
||||
插件系统 Adapter 基类
|
||||
|
||||
提供插件化的适配器支持,包装 mofox_bus.AdapterBase,
|
||||
提供插件化的适配器支持,包装 mofox_wire.AdapterBase,
|
||||
添加插件生命周期、配置管理、自动启动等特性。
|
||||
"""
|
||||
|
||||
@@ -12,7 +12,7 @@ from abc import ABC, abstractmethod
|
||||
from pathlib import Path
|
||||
from typing import TYPE_CHECKING, Any, Dict, Optional
|
||||
|
||||
from mofox_bus import AdapterBase as MoFoxAdapterBase, CoreSink, MessageEnvelope, ProcessCoreSink
|
||||
from mofox_wire import AdapterBase as MoFoxAdapterBase, CoreSink, MessageEnvelope, ProcessCoreSink
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from src.plugin_system.base.base_plugin import BasePlugin
|
||||
@@ -26,7 +26,7 @@ class BaseAdapter(MoFoxAdapterBase, ABC):
|
||||
"""
|
||||
插件系统的 Adapter 基类
|
||||
|
||||
相比 mofox_bus.AdapterBase,增加了以下特性:
|
||||
相比 mofox_wire.AdapterBase,增加了以下特性:
|
||||
1. 插件生命周期管理 (on_adapter_loaded, on_adapter_unloaded)
|
||||
2. 配置管理集成
|
||||
3. 自动重连与健康检查
|
||||
|
||||
@@ -19,7 +19,7 @@ from typing import TYPE_CHECKING, Dict, Optional
|
||||
if TYPE_CHECKING:
|
||||
from src.plugin_system.base.base_adapter import BaseAdapter
|
||||
|
||||
from mofox_bus import ProcessCoreSinkServer
|
||||
from mofox_wire import ProcessCoreSinkServer
|
||||
from src.common.logger import get_logger
|
||||
|
||||
logger = get_logger("adapter_manager")
|
||||
@@ -45,7 +45,7 @@ def _adapter_process_entry(
|
||||
"""
|
||||
import asyncio
|
||||
import contextlib
|
||||
from mofox_bus import ProcessCoreSink
|
||||
from mofox_wire import ProcessCoreSink
|
||||
|
||||
async def _run() -> None:
|
||||
adapter_cls = _load_class(*adapter_path)
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
# NEW_napcat_adapter
|
||||
|
||||
基于 mofox-bus v2.x 的 Napcat 适配器(使用 BaseAdapter 架构)
|
||||
基于 mofox-wire v2.x 的 Napcat 适配器(使用 BaseAdapter 架构)
|
||||
|
||||
## 🏗️ 架构设计
|
||||
|
||||
本插件采用 **BaseAdapter 继承模式** 重写,完全抛弃旧版 maim_message 库,改用 mofox-bus 的 TypedDict 数据结构。
|
||||
本插件采用 **BaseAdapter 继承模式** 重写,完全抛弃旧版 maim_message 库,改用 mofox-wire 的 TypedDict 数据结构。
|
||||
|
||||
### 核心组件
|
||||
- **NapcatAdapter**: 继承自 `mofox_bus.AdapterBase`,负责 OneBot 11 协议与 MessageEnvelope 的双向转换
|
||||
- **NapcatAdapter**: 继承自 `mofox_wire.AdapterBase`,负责 OneBot 11 协议与 MessageEnvelope 的双向转换
|
||||
- **WebSocketAdapterOptions**: 自动管理 WebSocket 连接,提供 incoming_parser 和 outgoing_encoder
|
||||
- **CoreMessageSink**: 通过 `InProcessCoreSink` 将消息递送到核心系统
|
||||
- **Handlers**: 独立的消息处理器,分为 to_core(接收)和 to_napcat(发送)两个方向
|
||||
@@ -56,10 +56,10 @@ NEW_napcat_adapter/
|
||||
|
||||
## 🔑 核心数据结构
|
||||
|
||||
### MessageEnvelope (mofox-bus v2.x)
|
||||
### MessageEnvelope (mofox-wire v2.x)
|
||||
|
||||
```python
|
||||
from mofox_bus import MessageEnvelope, SegPayload, MessageInfoPayload
|
||||
from mofox_wire import MessageEnvelope, SegPayload, MessageInfoPayload
|
||||
|
||||
# 创建消息信封
|
||||
envelope: MessageEnvelope = {
|
||||
@@ -249,13 +249,13 @@ class NapcatAdapter(BaseAdapter):
|
||||
|
||||
```python
|
||||
# ❌ 旧版(maim_message)
|
||||
from mofox_bus import Seg, MessageBase
|
||||
from mofox_wire import Seg, MessageBase
|
||||
|
||||
seg = Seg(type="text", data="hello")
|
||||
message = MessageBase(message_info=info, message_segment=seg)
|
||||
|
||||
# ✅ 新版(mofox-bus v2.x)
|
||||
from mofox_bus import SegPayload, MessageEnvelope
|
||||
# ✅ 新版(mofox-wire v2.x)
|
||||
from mofox_wire import SegPayload, MessageEnvelope
|
||||
|
||||
seg_payload: SegPayload = {"type": "text", "data": "hello"}
|
||||
envelope: MessageEnvelope = {
|
||||
@@ -359,8 +359,8 @@ async def from_platform_message(self, message: dict[str, Any]) -> MessageEnvelop
|
||||
|
||||
## 📚 参考资料
|
||||
|
||||
- **mofox-bus 文档**: 查看 `mofox_bus/types.py` 了解 TypedDict 定义
|
||||
- **BaseAdapter 示例**: 参考 `docs/mofox_bus_demo_adapter.py`
|
||||
- **mofox-wire 文档**: 查看 `mofox_wire/types.py` 了解 TypedDict 定义
|
||||
- **BaseAdapter 示例**: 参考 `docs/mofox_wire_demo_adapter.py`
|
||||
- **旧版实现**: `src/plugins/built_in/napcat_adapter_plugin/` (仅参考逻辑)
|
||||
- **OneBot 11 协议**: [OneBot 11 标准](https://github.com/botuniverse/onebot-11)
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ from typing import Any, ClassVar, Dict, List, Optional
|
||||
import orjson
|
||||
import websockets
|
||||
|
||||
from mofox_bus import CoreSink, MessageEnvelope, WebSocketAdapterOptions
|
||||
from mofox_wire import CoreSink, MessageEnvelope, WebSocketAdapterOptions
|
||||
from src.common.logger import get_logger
|
||||
from src.plugin_system import register_plugin
|
||||
from src.plugin_system.base import BaseAdapter, BasePlugin
|
||||
@@ -33,7 +33,7 @@ logger = get_logger("napcat_adapter")
|
||||
|
||||
|
||||
class NapcatAdapter(BaseAdapter):
|
||||
"""Napcat 适配器 - 完全基于 mofox-bus 架构"""
|
||||
"""Napcat 适配器 - 完全基于 mofox-wire 架构"""
|
||||
|
||||
adapter_name = "napcat_adapter"
|
||||
adapter_version = "2.0.0"
|
||||
|
||||
@@ -5,10 +5,10 @@ from __future__ import annotations
|
||||
import time
|
||||
from typing import TYPE_CHECKING, Any, Dict, List, Optional
|
||||
|
||||
from mofox_bus import MessageBuilder
|
||||
from mofox_wire import MessageBuilder
|
||||
from src.common.logger import get_logger
|
||||
from src.plugin_system.apis import config_api
|
||||
from mofox_bus import (
|
||||
from mofox_wire import (
|
||||
MessageEnvelope,
|
||||
SegPayload,
|
||||
MessageInfoPayload,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
from mofox_bus import RouteConfig, Router, TargetConfig
|
||||
from mofox_wire import RouteConfig, Router, TargetConfig
|
||||
|
||||
from src.common.logger import get_logger
|
||||
from src.common.server import get_global_server
|
||||
|
||||
Reference in New Issue
Block a user