在常规条件下调用NT内部接口,需要通过IPC或者是渲染处进行大规模逻辑,NT IPC本质是再封装的Node接口。
而本库建立在Native提供给Node的接口,直接越过一层封装,效率更高,效果稳定,扩展性更丰富。
- Module/CommonJS 支持。
- TypeScript 编写,可读性极高。
- 接口更稳定,耗时更短。
- 轻量化依赖。
- 安装
npm i napcat.core
- 使用
TypeScript 用法
import { NTCoreWrapper } from "napcat.core";
let NCore = new NTCoreWrapper(QQWrapper,Session);
CommonJS 用法
let NTCoreWrapper = require('napcat.core').NTCoreWrapper;
let NCore = new NTCoreWrapper(QQWrapper,Session);
ES 用法
import { NTCoreWrapper } from "napcat.core";
let NCore = new NTCoreWrapper(QQWrapper,Session);
如何获取初始化需要的两个参数
let Process = require('process');
let os = require('os');
Process.dlopenOrig = Process.dlopen
let WrapperSession = {};//NativeNpdeSession 对应 new NTCoreWrapper(QQWrapper,Session);的Session
let WrapperNodeApi = {};//NativeNpdeApi对应 new NTCoreWrapper(QQWrapper,Session);的QQWrapper
Process.dlopen = function (module, filename, flags = os.constants.dlopen.RTLD_LAZY) {
let dlopenRet = this.dlopenOrig(module, filename, flags)
for (let export_name in module.exports) {
module.exports[export_name] = new Proxy(module.exports[export_name], {
construct: (target, args, _newTarget) => {
let ret = new target(...args)
if (export_name === 'NodeIQQNTWrapperSession') WrapperSession = ret
return ret
},
})
}
if (filename.toLowerCase().indexOf('wrapper.node') != -1) {
WrapperNodeApi = module.exports;
}
return dlopenRet;
}
如何调用Api
//获取ClientKey
let ClientKey = NCore.getApiUser().forceFetchClientKey();
//获取Uin
let ClientUin = NCore.getApiUser().getUinByUid(123456);
//其余接口参考 ./src/apis/内封装
- 覆盖大部分功能
- Core内部一般不进行异常捕捉,请在确保外部调用带有异常处理。
- Core内部不进行任何日志输出,请确保外部调用带有日志输出。
其实Readme的 这是什么? 里面提到的IPC类的插件常见的就有
还有LLAPI一类的 他们代码大量处于渲染器进程内,执行proxy之类的操作,容易造成渲染器的逻辑卡死,且容易与QQ自身逻辑干扰。(逃
这部分代码 完成了大部分初始化逻辑 Copy去 然后调用 NTCore.getApiUser().getUinByUid(123456);
预封装接口不就行了
你是想被我用脚踩在脸上吗? 我很善良,所以会满足你 插件模板
如果LL平台你不想用,当然可以完全基于本库独立进行运行,并且可以完成轻占用,脱离框架独立启动,各种操作,具有面向NT本体 而非框架的特性,所以说解耦即为方便。 如果你连本项目都不想整个依赖进去,那么基于本库开发,需要遵守NapCatQQ主库开源协议规范,进行合理CV。(不遵守规范任意CV者 别让我逮住)