编写第一个插件
到目前为止,我们虽然让 zhin 运行起来了,但除了内置插件外,还没有任何功能,接下来,让我们通过实现一个复读机的小功能,来初步了解下 zhin 插件开发的大体流程。
1. 创建插件 (二选一)
- 使用内置指令创建
shell
plugin.new repeater # 此处 repeater 为插件名
# 或者
plugin.new repeater -t # 如果你想使用 TS 进行开发,可增加 `-t` 选项,声明需要插件开发语言为ts
- 手动创建
shell
# 进入插件保存目录
cd plugins
#创建一个存放插件的目录
mkdir repeater
#进入刚刚创建的插件目录
cd repeater
#初始化插件仓库 (可选)
npm init
#创建入口文件
touch index.ts
完成创建后,插件目录大体如下:
txt
plugins/
└─ repeater/ test 插件
└─ src/ 资源目录 插件
├─ index.ts 程序主入口
└─ package.json 包管理文件 (可选)
txt
plugins/
└─ repeater/ test 插件
├─ index.js 程序主入口
└─ package.json 包管理文件 (可选)
WARNING
除非你创建了 package.json ,否则 index 文件名不能随意更改,不然会导致插件无法被检索。
打开入口文件,并输入如下内容
ts
import {Plugin} from 'zhin';
const repeater = new Plugin();
// write your code here
export default repeater
js
import {Plugin} from 'zhin';
const repeater = new Plugin();
// write your code here
export default repeater
这个时候你就已经写好了一个插件,不需要任何额外操作,不过目前这个插件还什么都不能干,我们没有为其编写相应的交互逻辑。
2. 实现插件交互逻辑
相信你这个时候一定有很多疑问,因为这其中涉及到相当多的概念,Plugin
到底是什么?
INFO
当前章节仅提供示例,目的在于让你能自己编写出可以进行简单交互的插件。目前你无需关心这段代码是什么意思,后面会逐一介绍,所以不用着急,让我们继续。
你可以参考下列代码段,在上下文上添加一个中间件,拦截消息会话,并将消息元素原封不动回复给用户。
ts
import {Plugin} from 'zhin';
const repeater = new Plugin();
repeater.middleware((adapter,bot,message,next)=>{
message.reply(message.raw_message)
next()
})
export default repeater
js
import {Plugin} from 'zhin';
const repeater = new Plugin();
repeater.middleware((adapter,bot,message,next)=>{
message.reply(message.raw_message)
next()
})
export default repeater
3.载入插件
- 你可使用内部指令
plugin.add
载入已安装的插件
shell
plugin.add repeater
4.测试一下
聊天记录
5.更多
- 更多插件相关内容,请前往插件了解