mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-07-19 12:03:37 +00:00
40 lines
1.4 KiB
TypeScript
40 lines
1.4 KiB
TypeScript
import { constants } from "node:os";
|
|
import path from "path";
|
|
import { dlopen } from "process";
|
|
import fs from "fs";
|
|
export class Native {
|
|
platform: string;
|
|
supportedPlatforms = [''];
|
|
MoeHooExport: any = { exports: {} };
|
|
recallHookEnabled: boolean = false;
|
|
inited = true;
|
|
constructor(nodePath: string, platform: string = process.platform) {
|
|
this.platform = platform;
|
|
try {
|
|
if (!this.supportedPlatforms.includes(this.platform)) {
|
|
throw new Error(`Platform ${this.platform} is not supported`);
|
|
}
|
|
const nativeNode = path.join(nodePath, './native/MoeHoo.win32.node');
|
|
if (fs.existsSync(nativeNode)) {
|
|
dlopen(this.MoeHooExport, nativeNode, constants.dlopen.RTLD_LAZY);
|
|
}
|
|
} catch (error) {
|
|
this.inited = false;
|
|
}
|
|
|
|
}
|
|
isSetReCallEnabled(): boolean {
|
|
return this.recallHookEnabled && this.inited;
|
|
}
|
|
registerRecallCallback(callback: (hex: string) => any): void {
|
|
try {
|
|
if (!this.inited) throw new Error('Native Not Init');
|
|
if (this.MoeHooExport.exports?.registMsgPush) {
|
|
this.MoeHooExport.exports.registMsgPush(callback);
|
|
this.recallHookEnabled = true;
|
|
}
|
|
} catch (error) {
|
|
this.recallHookEnabled = false;
|
|
}
|
|
}
|
|
} |