diff --git a/src/core/wrapper.ts b/src/core/wrapper.ts index cf345666..0bc5b15e 100644 --- a/src/core/wrapper.ts +++ b/src/core/wrapper.ts @@ -139,10 +139,20 @@ export interface NodeQQNTWrapperUtil { isNull(): unknown; } - +export interface NodeIQQNTStartupSessionWrapper { + create(): NodeIQQNTStartupSessionWrapper; + stop(): void; + start(): void; + createWithModuleList(uk: unknown): unknown; + getSessionIdList(): unknown; +} export interface NodeIQQNTWrapperSession { + getNTWrapperSession(str: string): NodeIQQNTWrapperSession; + + get(): NodeIQQNTWrapperSession; new(): NodeIQQNTWrapperSession; + create(): NodeIQQNTWrapperSession; init( @@ -271,6 +281,7 @@ export interface WrapperNodeApi { NodeIO3MiscService: NodeIO3MiscService; NodeQQNTWrapperUtil: NodeQQNTWrapperUtil; NodeIQQNTWrapperSession: NodeIQQNTWrapperSession; + NodeIQQNTStartupSessionWrapper: NodeIQQNTStartupSessionWrapper NodeIQQNTWrapperEngine: NodeIQQNTWrapperEngine; NodeIKernelLoginService: NodeIKernelLoginService; diff --git a/src/onebot/api/group.ts b/src/onebot/api/group.ts index 2f8a7efd..e0a294be 100644 --- a/src/onebot/api/group.ts +++ b/src/onebot/api/group.ts @@ -126,7 +126,11 @@ export class OneBotGroupApi { } return undefined; } - + async registerParseGroupReactEvent() { + this.obContext.core.context.packetHandler.onCmd('trpc.msg.olpush.OlPushService.MsgPush', async (packet) => { + console.log(packet.seq, packet.hex_data); + }); + } async parsePaiYiPai(msg: RawMessage, jsonStr: string) { const json = JSON.parse(jsonStr); //判断业务类型 diff --git a/src/shell/base.ts b/src/shell/base.ts index f59cfd06..937aa374 100644 --- a/src/shell/base.ts +++ b/src/shell/base.ts @@ -10,6 +10,7 @@ import { loadQQWrapper, NapCatCore, NapCatCoreWorkingEnv, + NodeIQQNTStartupSessionWrapper, NodeIQQNTWrapperEngine, NodeIQQNTWrapperSession, PlatformType, @@ -242,7 +243,8 @@ async function handleLoginInner(context: { isLogined: boolean }, logger: LogWrap async function initializeSession( session: NodeIQQNTWrapperSession, - sessionConfig: WrapperSessionInitConfig + sessionConfig: WrapperSessionInitConfig, + startupSession: NodeIQQNTStartupSessionWrapper | null ) { return new Promise((resolve, reject) => { const sessionListener = new NodeIKernelSessionListener(); @@ -259,13 +261,17 @@ async function initializeSession( new NodeIDispatcherAdapter(), sessionListener, ); - try { - session.startNT(0); - } catch { + if (startupSession) { + startupSession.start(); + } else { try { - session.startNT(); - } catch (e: unknown) { - reject(new Error('init failed ' + (e as Error).message)); + session.startNT(0); + } catch { + try { + session.startNT(); + } catch (e: unknown) { + reject(new Error('init failed ' + (e as Error).message)); + } } } }); @@ -335,8 +341,17 @@ export async function NCoreInitShell() { const engine = wrapper.NodeIQQNTWrapperEngine.get(); const loginService = wrapper.NodeIKernelLoginService.get(); - const session = new wrapper.NodeIQQNTWrapperSession(); - + let session: NodeIQQNTWrapperSession; + let startupSession: NodeIQQNTStartupSessionWrapper | null = null; + try { + //session = new wrapper.NodeIQQNTWrapperSession(); + startupSession = wrapper.NodeIQQNTStartupSessionWrapper.create(); + // data.start(); + session = wrapper.NodeIQQNTWrapperSession.getNTWrapperSession('nt_1'); + } catch (e: unknown) { + session = wrapper.NodeIQQNTWrapperSession.create(); + console.log('Error creating session:', e); + } const [dataPath, dataPathGlobal] = getDataPaths(wrapper); const systemPlatform = getPlatformType(); @@ -370,7 +385,7 @@ export async function NCoreInitShell() { dataPath, ); - await initializeSession(session, sessionConfig); + await initializeSession(session, sessionConfig, startupSession); const accountDataPath = path.resolve(dataPath, './NapCat/data'); //判断dataPath是否为根目录 或者 D:/ 之类的盘目录