mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-12-29 21:09:03 +08:00
48 lines
1.7 KiB
TypeScript
48 lines
1.7 KiB
TypeScript
import { WrapperNodeApi } from "./wrapper/wrapper";
|
|
import path from "node:path";
|
|
import fs from "node:fs";
|
|
import { InstanceContext } from "./wrapper";
|
|
import { NTEventChannel } from "@/common/framework/event";
|
|
import { proxiedListenerOf } from "@/common/utils/proxy-handler";
|
|
import { MsgListener } from "./listeners";
|
|
import { sleep } from "@/common/utils/helper";
|
|
|
|
export enum NapCatCoreWorkingEnv {
|
|
Unknown = 0,
|
|
Shell = 1,
|
|
LiteLoader = 2,
|
|
}
|
|
|
|
export function loadQQWrapper(QQVersion: string): WrapperNodeApi {
|
|
let wrapperNodePath = path.resolve(path.dirname(process.execPath), './resources/app/wrapper.node');
|
|
if (!fs.existsSync(wrapperNodePath)) {
|
|
wrapperNodePath = path.join(path.dirname(process.execPath), `resources/app/versions/${QQVersion}/wrapper.node`);
|
|
}
|
|
const nativemodule: any = { exports: {} };
|
|
process.dlopen(nativemodule, wrapperNodePath);
|
|
return nativemodule.exports;
|
|
}
|
|
|
|
export class NapCatCore {
|
|
readonly context: InstanceContext;
|
|
readonly eventChannel: NTEventChannel;
|
|
|
|
constructor(context: InstanceContext) {
|
|
this.context = context;
|
|
this.eventChannel = new NTEventChannel(context.wrapper, context.session);
|
|
this.initNapCatCoreListeners().then().catch(console.error);
|
|
}
|
|
|
|
// Renamed from 'InitDataListener'
|
|
async initNapCatCoreListeners() {
|
|
let msg = new MsgListener();
|
|
msg.onRecvMsg = (msg) => {
|
|
console.log("RecvMsg", msg);
|
|
}
|
|
await sleep(2500);
|
|
this.context.session.getMsgService().addKernelMsgListener(
|
|
new this.context.wrapper.NodeIKernelMsgListener(proxiedListenerOf(msg, this.context.logger))
|
|
);
|
|
}
|
|
}
|