CooLib-Native - 快速入门

写在最前

这个插件仍然在更新中,breakchange 估计会有很多,文章也会不断更新,遇到不能用的情况看看最新的文档吧。

主版本号为零(0.y.z)的软件处于开发初始阶段,一切都可能随时被改变。这样的公共 API 不应该被视为稳定版。

- semver

文档适配版本:0.0.1-alpha+4

简介

CooLib 是为解决酷Q插件间依赖问题而开发的插件,使用 require 依赖其它插件并使用 using 转义接口,使得依赖其它插件变得像依赖一个库一样简单。

CooLib 的工作原理使得它不会干扰其它正常插件的运作,所以可以放心的使用它。

安装

帖子里下载对应的 cpk ,丢到 app 目录启用即可,或者在 github 自行构建。

使用

在你的插件中声明以下几个导出函数:(C++)

const char* __stdcall LibInfo();
int32_t __stdcall LibCallback(bool success, const char* callbackJson);
int32_t __stdcall AppCallback();
int32_t __stdcall DisableCallback();
int32_t __stdcall ExitCallback(const char* callbackJson);

(这贴 Code 的体验,这辈子都不想用了)

解释下每个函数都是干什么用的

LibInfo

返回 Lib 的配置信息、依赖项等等。返回值即为配置 json。(示例 json&参数说明

LibCallback

所有插件排序后依次调用的函数,可当做 _eventStartup 使用。

success:Lib是否全部载入成功,若 require 表中的 Lib 都必须,可以直接判断(保存)此结果而无需先处理 json。

callbackJson:返回的全部信息(示例 json&参数说明

AppCallback

所有插件调用完 LibCallback 后调用的函数,可当作 _eventEnable 使用。

请将应用相关处理置于此处而不是放在 LibCallback,后续可能更新的 仅当作Lib载入 会需要应用与 Lib 分离。

DisableCallback

插件停用函数,可当作 _eventDisable 使用。

同样推荐将应用相关处理置于此处而不是放在 ExitCallback。

ExitCallback

所有插件调用完 DisableCallback 后调用的函数,可当作 _eventExit 使用。

callbackJson:返回的全部信息(目前仅有一个 loadLib (Json Array) 用于遍历已经载入的插件,若 LibCallback 中的 success 为 true 则此处不应出现丢失的 Lib)

Command

注册一个command

给 CooLib 传一个类似于这样的初始化参数:

"cn.coorg.coolib": { // 给 CooLib 的传参
    "commands": {
        "add": "CMD_add" // 注册一个指令
    }
}

command 的 key 填写命令名称,value 填写对应的的 CallbackFunc。

CallbackFunc 的参数格式:int32_t __stdcall CallbackFunc(const char* callbackJson)

此处的 callbackJson 为 json array,包含以空格分隔的参数表,类似于一般程序的传参。

示例

消息:!add 1 2

callbackJson:["1","2"]

ForceReply

有的时候需要用户通过后续消息回复内容但发现酷Q没有相应方法?我们包装好了。

通过 CooLib 的 ForceReply 函数注册一个ForceReply,此函数将在用户(相同QQ号)发送下一条消息后直接拦截消息并返回消息内容。

毋庸置疑,函数参数是这样的:const char* ForceReply(const char* msg, bool hold)

其中 msg 为发送的消息内容, hold 指是否拦截对应消息,禁止其它插件处理。由于优先级原因有可能此方法不起效,建议在应用介绍中提醒用户设置优先级。

点赞

发表评论