Koishi基本用法
Koishi是一个跨平台、可扩展、高性能的聊天机器人框架
跨平台:支持各种聊天平台
可扩展:koishi的功能都是以插件形式存在,且koishi支持热重载,修改插件后无需重启机器人,只会刷新插件
高性能:基于事件循环和异步
沙盒
沙盒是koishi为我们提供的模拟聊天环节,可以在不连接任何真实聊天平台的情况下,快速测试和调试我们的插件代码
指令系统
- 参数
尖括号< >:必选参数
方括号[ ]: 可选参数
- 选项
选项可以控制指令的行为,通常以-或- -开头
选项:
- 触发前缀
在群聊的情况下,如果仅仅只通过过一个词就触发指令,很容易误触,为了避免这种情况,koishi引入了前缀触发的概念
前缀触发:消息以配置的prefix值开头,后面紧跟指令
昵称触发:以配置的nickname开头,后面运行有逗号这些分隔符,再接指令
@提及触发
- 子指令
有了子指令以后可以把相关的功能放到同一个文件夹(user)里面,这样看起来更清晰明了
层级式:空格分隔 user authorize
派生式:小数点.连接 user.locale en
Koishi进阶
可逆的插件系统
Koishi的一切都是从Cordis这个元框架开始,什么是元框架呢,它有两个特征,第一不关心业务,也就是不绑定任何具体的应用场景,像机器人、命令行工具这些,第二它只提供最底层的基础设施,包含上下文、服务容器、插件生命周期的管理。总而言之,Koishi的内核就是Cordis。
插件的可逆性
什么是可逆的系统呢,通俗一点讲,就是当这个插件被卸载或被停用时,能够将其在运行的时候产生的所有副作用,彻底干净地撤销,使系统状态恢复到插件加载之前的样子
副作用:一个函数、方法、代码块,在完成其主要任务之外,对外部产生的任何状态改变
不可逆的系统(大部分传统框架)
可逆的系统(Cordis):开发者无需手写清理代码,框架通过依赖注入和作用域机制,保证了可逆性。
这种设计有如下的有点:热重载/异步加载/可追踪