Skip to content

MoFox-Core插件开发文档

欢迎来到MoFox-Core插件系统开发文档!这里是你开始插件开发旅程的最佳起点。

新手入门

组件功能详解

Command vs Action 选择指南

  1. 使用Command的场景
  • ✅ 用户需要明确调用特定功能
  • ✅ 需要精确的参数控制
  • ✅ 管理和配置操作
  • ✅ 查询和信息显示
  • ✅ 系统维护命令
  1. 使用Action的场景
  • ✅ 增强MoFox的智能行为
  • ✅ 根据上下文自动触发
  • ✅ 情绪和表情表达
  • ✅ 智能建议和帮助
  • ✅ 随机化的互动

API浏览

消息发送与处理API

AI与生成API

  • LLM API - 大语言模型交互接口,可以使用内置LLM生成内容
  • ✨ 回复生成器API - 智能回复生成接口,可以使用内置风格化生成器

表情包API

关系系统API

  • 人物信息API - 用户信息,处理麦麦认识的人和关系的接口

数据与配置API

插件和组件管理API

日志API

工具API

本地储存API

支持

如果你在文档中发现错误或需要补充,请:

  1. 检查最新的文档版本
  2. 查看相关示例代码
  3. 参考其他类似插件
  4. 提交文档仓库issue

一个方便的小设计

我们在__init__.py中定义了一个__all__变量,包含了所有需要导出的类和函数。 这样在其他地方导入时,可以直接使用 from src.plugin_system import * 来导入所有插件相关的类和函数。 或者你可以直接使用 from src.plugin_system import BasePlugin, register_plugin, ComponentInfo 之类的方式来导入你需要的部分。

另一个“隐藏”的设计:on_plugin_loaded 钩子

除了常规的事件,插件主类 (BasePlugin) 还可以实现一个特殊的钩子方法:on_plugin_loaded

python
from src.plugin_system import BasePlugin, register_plugin

@register_plugin
class MyAwesomePlugin(BasePlugin):
    plugin_name = "my_awesome_plugin"
    
    async def on_plugin_loaded(self):
        # 在这里编写你的代码
        print(f"插件 {self.plugin_name} 的所有组件都已加载完毕!")
        # 例如,可以在这里执行一些依赖其他插件组件的初始化操作
  • 执行时机: 这个方法会在所有插件的所有组件(Action, Command, Tool, Handler)都加载并注册完毕后被调用。
  • 使用场景: 它为你提供了一个“总览全局”的机会。当你需要执行一些依赖其他插件、或者需要确保所有功能都已就绪的初始化操作时,这个钩子非常有用。

⚠️ 警告: 请谨慎使用 on_plugin_loaded。滥用它很容易导致插件之间产生不必要的强耦合,使得代码难以维护和理解。只有在你确实没有其他更好的办法时,才应该考虑使用它。,如果可能的话,尽量通过事件系统等更优雅的方式来实现你的需求。

贡献者

The avatar of contributor named as minecraft1024a minecraft1024a
The avatar of contributor named as ikun-11451 ikun-11451

页面历史

Released under the GPL-3.0 License.