Skip to content

API 文档

Neo-MoFox 为插件开发者提供了一套完整的 API 接口,涵盖消息收发、LLM 调用、数据库操作、事件系统、日志记录等核心功能。

设计理念

所有 API 都采用扁平化设计,函数命名清晰直观,支持关键字参数调用,提供开箱即用的类型提示。

API 模块总览

模块说明主要功能
Action APIAction 组件查询与使用获取 Action、过滤、注册为 LLM 工具
Adapter API适配器管理启动/停止适配器、调用适配器命令
Chat APIChatter 组件查询与管理获取 Chatter、创建聊天实例
Command API命令查询与执行命令匹配、权限检查、执行命令
Config API配置加载与管理加载配置、重载配置、查询配置
消息发送 API主动向会话发送各类消息文本、图片、语音、视频、文件、批量发送
消息查询 API历史消息检索与统计时间范围查询、用户过滤、可读格式化
LLM APILLM 请求构建与调用模型选择、请求创建、Embedding、Rerank
数据库 API数据持久化操作CRUD、查询构建、聚合统计、分页迭代
事件 API事件发布与订阅发布事件、注册处理器、订阅管理
日志 API结构化日志记录Logger 获取、颜色配置、事件广播
Media API媒体识别与管理图片识别、表情识别、批量识别
Permission API权限管理用户权限、命令权限、封禁管理
Plugin API插件加载与管理加载/卸载插件、查询插件状态
Prompt APIPrompt 模板管理注册模板、渲染模板、System Reminder
Router API路由管理挂载路由、查询路由、FastAPI 集成
Service APIService 组件查询获取 Service 实例、跨插件调用
Storage API数据存储JSON 存储、插件数据库、持久化
Stream API聊天流管理创建流、查询流、消息历史管理

通用约定

参数传递风格

推荐使用关键字参数方式调用所有 API 函数,以提高代码可读性和可维护性:

python
# ✅ 推荐
await send_text(
    stream_id=self.stream_id,
    platform=self.platform,
    content="Hello"
)

# ❌ 不推荐(虽然支持)
await send_text(self.stream_id, self.platform, "Hello")

异步调用

所有涉及 I/O 操作的 API 都是异步函数,必须使用 await 调用:

python
# ✅ 正确
messages = await get_recent_messages(stream_id=self.stream_id, hours=1.0)

# ❌ 错误
messages = get_recent_messages(stream_id=self.stream_id, hours=1.0)  # 返回的是 coroutine 对象

类型提示

所有 API 函数都提供完整的类型注解,建议在开发时启用类型检查工具(如 Pylance、mypy)以获得更好的开发体验。

详细文档

点击下方链接查看各模块的详细 API 文档:

组件管理 API

  • Action API — Action 组件的查询、过滤与 LLM 工具注册
  • Adapter API — 适配器的启动、停止与命令调用
  • Chat API — Chatter 组件的查询与聊天会话管理
  • Command API — 命令的匹配、权限检查与执行
  • Plugin API — 插件的加载、卸载与状态查询
  • Router API — FastAPI 路由的挂载与管理
  • Service API — Service 组件的获取与跨插件调用

配置与存储 API

消息与会话 API

  • 消息发送 API — 向会话发送文本、图片、语音、视频等消息
  • 消息查询 API — 检索历史消息、统计消息数量、格式化展示
  • Stream API — 聊天流的创建、查询与消息历史管理
  • Media API — 图片与表情的识别、批量识别与缓存管理

AI 与权限 API

  • LLM API — 创建 LLM 请求、配置模型、调用 AI 能力
  • Prompt API — Prompt 模板的注册、渲染与 System Reminder
  • Permission API — 用户权限管理、命令权限与封禁

系统与工具 API

  • 事件 API — 发布事件、注册处理器、管理订阅
  • 日志 API — 获取 Logger、配置颜色、广播日志事件

最佳实践

错误处理

在调用 API 时应当妥善处理可能的异常:

python
try:
    await send_text(
        stream_id=self.stream_id,
        platform=self.platform,
        content="Hello"
    )
except Exception as e:
    logger.error(f"发送消息失败: {e}", exc_info=True)

资源管理

对于需要清理的资源(如数据库连接),建议使用上下文管理器:

python
async with database_session() as session:
    # 执行数据库操作
    pass

相关章节

贡献者

The avatar of contributor named as minecraft1024a minecraft1024a

页面历史

Released under the GPL-3.0 License.

新对话
MoFox 助手

下午好。

今天想做点什么?

聊天内容可能会被记录以用于改进服务及其质量,并会遵循我们的隐私政策进行处理。