huan_kong
535字约2分钟
2023-06-30
一个拥有完整文件的插件都规定存在这么几个
文件名 | 用处 | 必选 |
---|---|---|
.gitignore | 用于部分不能直接公开的 config.jsonc | × |
commands.jsonc | 用于定义插件拥有哪些命令 | × |
config.default.jsonc | 用于部分不能直接公开的 config.jsonc | × |
config.json | 会被用于自动加载当做插件的配置文件 | × |
index.js | 整个插件的入口文件 | ✓ |
manifest.json | 用于配置插件的信息详细看我 | ✓ |
一共有三种种加载插件的方式, 支持使用 await
来控制异步操作
比如一些插件依赖于某些插件, 就可以让那部分先加载
index.js
文件示例需要一个默认暴露一个匿名函数, 在加载插件时会执行这个函数
注意
新版本全部改为了静态导入, 需要手动 import
import { loadConfig } from '../../libs/loadConfig.js'
export default () => {
// 加载配置文件
loadConfig('admin.jsonc', true)
// 注册事件
event()
}
import { eventReg } from '../../libs/eventReg.js'
function event() {
// 一共有三种消息类型, 会返回的类型如下
RegEvent('notice', async context => {
await notice(context)
})
RegEvent('request', async context => {
await request(context)
})
RegEvent('message', async (event, context, tags) => {
// 事件触发内部会自动检查是否是命令
if (context.command) {
if (context.command.name === '入群') {
await invite(context, context.command.params, 'invite')
} else if (context.command.name === '加群') {
await invite(context, context.command.params, 'add')
} else if (context.command.name === '好友') {
await friend(context, context.command.params)
}
}
})
}
// 其余处理程序
完整的 manifest.json
存在以下几个字段
{
// 插件对应框架支持插件的版本号
"kkbot_plugin_version": "2",
// 插件名
"name": "bot",
// 插件简介
"description": "初始化机器人",
// 插件版本
"version": "0.0.1",
// 插件作者
"author": [{ "name": "huan_kong", "link": "https://github.com/huankong233" }],
// 自动加载的配置文件名(默认就是config,可不指定)
"configName": "config",
// 取消自动加载配置文件
"disableAutoLoadConfig": true,
// 不在 loadPluginDir 方法中被加载
"disableLoadInDir": true,
// 插件需要用到哪些npm包
"dependPackages": { "knex": "^2.4.2", "mysql2": "^3.4.1" },
// 这个插件依赖了哪些插件
"dependPlugins": { "knex": "0.0.1" },
// 用于判断是否已经安装了需要用到的npm包
"installed": true
}