diff --git a/src/common/framework/event-legacy.ts b/src/common/framework/event-legacy.ts index 136ead80..d4a7cd49 100644 --- a/src/common/framework/event-legacy.ts +++ b/src/common/framework/event-legacy.ts @@ -16,16 +16,13 @@ export interface ListenerIBase { } export class LegacyNTEventWrapper { - private listenerMapping: Record; //ListenerName-Unique -> Listener构造函数 private WrapperSession: NodeIQQNTWrapperSession | undefined; //WrapperSession private listenerManager: Map = new Map(); //ListenerName-Unique -> Listener实例 private EventTask = new Map>>(); //tasks ListenerMainName -> ListenerSubName-> uuid -> {timeout,createtime,func} constructor( - listenerMapping: Record, - wrapperSession: NodeIQQNTWrapperSession, + wrapperSession: NodeIQQNTWrapperSession ) { - this.listenerMapping = listenerMapping; this.WrapperSession = wrapperSession; } @@ -72,18 +69,17 @@ export class LegacyNTEventWrapper { } createListenerFunction(listenerMainName: string, uniqueCode: string = ''): T { - const ListenerType = this.listenerMapping![listenerMainName]; - let Listener = this.listenerManager.get(listenerMainName + uniqueCode); - if (!Listener && ListenerType) { - Listener = new ListenerType(this.createProxyDispatch(listenerMainName)); + let existListener = this.listenerManager.get(listenerMainName + uniqueCode); + if (!existListener) { + let Listener = this.createProxyDispatch(listenerMainName); const ServiceSubName = listenerMainName.match(/^NodeIKernel(.*?)Listener$/)![1]; const Service = 'NodeIKernel' + ServiceSubName + 'Service/addKernel' + ServiceSubName + 'Listener'; const addfunc = this.createEventFunction<(listener: T) => number>(Service); addfunc!(Listener as T); - //console.log(addfunc!(Listener as T)); this.listenerManager.set(listenerMainName + uniqueCode, Listener); + return Listener as T; } - return Listener as T; + return existListener as T; } //统一回调清理事件 diff --git a/src/common/utils/QQBasicInfo.ts b/src/common/utils/QQBasicInfo.ts index 86cc6239..b576c575 100644 --- a/src/common/utils/QQBasicInfo.ts +++ b/src/common/utils/QQBasicInfo.ts @@ -74,7 +74,7 @@ export class QQBasicInfoWrapper { this.context.logger.log( `[QQ版本兼容性检测] ${this.getFullQQVesion()} 版本兼容性不佳,可能会导致一些功能无法正常使用`, ); - return { appid: systemPlatform === 'linux' ? '537237950' : '537237765', qua: this.getQUAInternal() }; + return { appid: systemPlatform === 'linux' ? '537240645' : '537240610', qua: this.getQUAInternal() }; } } diff --git a/src/common/utils/helper.ts b/src/common/utils/helper.ts index a4be075e..c3fda369 100644 --- a/src/common/utils/helper.ts +++ b/src/common/utils/helper.ts @@ -97,19 +97,19 @@ export function isEqual(obj1: any, obj2: any) { export function getDefaultQQVersionConfigInfo(): QQVersionConfigType { if (os.platform() === 'linux') { return { - baseVersion: '3.2.12-26702', - curVersion: '3.2.12-26702', + baseVersion: '3.2.12-27206', + curVersion: '3.2.12-27206', prevVersion: '', onErrorVersions: [], - buildId: '26702', + buildId: '27206', }; } return { - baseVersion: '9.9.15-26702', - curVersion: '9.9.15-26702', + baseVersion: '9.9.15-27206', + curVersion: '9.9.15-27206', prevVersion: '', onErrorVersions: [], - buildId: '26702', + buildId: '27206', }; } diff --git a/src/core/core.ts b/src/core/core.ts index 8599bf87..942cce96 100644 --- a/src/core/core.ts +++ b/src/core/core.ts @@ -44,8 +44,8 @@ export class NapCatCore { constructor(context: InstanceContext, selfInfo: SelfInfo) { this.selfInfo = selfInfo; this.context = context; - this.util = new this.context.wrapper.NodeQQNTWrapperUtil(); - this.eventWrapper = new LegacyNTEventWrapper(context.wrapper, context.session); + this.util = this.context.wrapper.NodeQQNTWrapperUtil; + this.eventWrapper = new LegacyNTEventWrapper(context.session); this.apis = { FileApi: new NTQQFileApi(this.context, this), SystemApi: new NTQQSystemApi(this.context, this), @@ -79,7 +79,7 @@ export class NapCatCore { } get dataPath(): string { - let result = this.util.getNTUserDataInfoConfig(); + let result = this.context.wrapper.NodeQQNTWrapperUtil.getNTUserDataInfoConfig(); if (!result) { result = path.resolve(os.homedir(), './.config/QQ'); fs.mkdirSync(result, { recursive: true }); @@ -98,7 +98,7 @@ export class NapCatCore { }; //await sleep(2500); this.context.session.getMsgService().addKernelMsgListener( - new this.context.wrapper.NodeIKernelMsgListener(proxiedListenerOf(msgListener, this.context.logger)), + proxiedListenerOf(msgListener, this.context.logger) as any ); const profileListener = new ProfileListener(); @@ -113,7 +113,7 @@ export class NapCatCore { // } }; this.context.session.getProfileService().addKernelProfileListener( - new this.context.wrapper.NodeIKernelProfileListener(proxiedListenerOf(profileListener, this.context.logger)), + proxiedListenerOf(profileListener, this.context.logger), ); // 群相关 @@ -197,7 +197,7 @@ export class NapCatCore { } }; this.context.session.getGroupService().addKernelGroupListener( - new this.context.wrapper.NodeIKernelGroupListener(proxiedListenerOf(groupListener, this.context.logger)), + proxiedListenerOf(profileListener, this.context.logger) as any ); } checkAdminEvent(groupCode: string, memberNew: GroupMember, memberOld: GroupMember | undefined): boolean { diff --git a/src/core/external/appid.json b/src/core/external/appid.json index 034b311a..0cce792c 100644 --- a/src/core/external/appid.json +++ b/src/core/external/appid.json @@ -1,58 +1,26 @@ { - "3.1.2-13107": { - "appid": 537146866, - "qua": "V1_LNX_NQ_3.1.2-13107_RDM_B" + "3.2.12-27187": { + "appid": 537240645, + "qua": "V1_LNX_NQ_3.2.12_27187_GW_B" }, - "3.2.10-25765": { - "appid": 537234773, - "qua": "V1_LNX_NQ_3.2.10_25765_GW_B" + "3.2.12-27206": { + "appid": 537240645, + "qua": "V1_LNX_NQ_3.2.12_27206_GW_B" }, - "3.2.12-26702": { - "appid": 537237950, - "qua": "V1_LNX_NQ_3.2.12_26702_GW_B" + "3.2.12-27254":{ + "appid": 537240795, + "qua": "V1_LNX_NQ_3.2.12_27254_GW_B" }, - "3.2.12-26740": { - "appid": 537237950, - "qua": "V1_WIN_NQ_9.9.15_26740_GW_B" + "9.9.15-27187":{ + "appid": 537240610, + "qua": "V1_WIN_NQ_9.9.15_27187_GW_B" }, - "3.2.12-26909": { - "appid": 537237923, - "qua": "V1_LNX_NQ_3.2.12_26909_GW_B" + "9.9.15-27206":{ + "appid": 537240610, + "qua": "V1_WIN_NQ_9.9.15_27206_GW_B" }, - "9.9.11-24815": { - "appid": 537226656, - "qua": "V1_WIN_NQ_9.9.11_24815_GW_B" - }, - "9.9.12-25493": { - "appid": 537231759, - "qua": "V1_WIN_NQ_9.9.12_25493_GW_B" - }, - "9.9.12-25765": { - "appid": 537234702, - "qua": "V1_WIN_NQ_9.9.12_25765_GW_B" - }, - "9.9.12-26299": { - "appid": 537234826, - "qua": "V1_WIN_NQ_9.9.12_26299_GW_B" - }, - "9.9.12-26339": { - "appid": 537234826, - "qua": "V1_WIN_NQ_9.9.12_26339_GW_B" - }, - "9.9.12-26466": { - "appid": 537234826, - "qua": "V1_WIN_NQ_9.9.12_26466_GW_B" - }, - "9.9.15-26702": { - "appid": 537237765, - "qua": "V1_WIN_NQ_9.9.15_26702_GW_B" - }, - "9.9.15-26740": { - "appid": 537237765, - "qua": "V1_WIN_NQ_9.9.15_26702_GW_B" - }, - "9.9.15-26909": { - "appid": 537237802, - "qua": "V1_WIN_NQ_9.9.15_26909_GW_B" + "9.9.15-27254":{ + "appid": 537240709, + "qua": "V1_WIN_NQ_9.9.15_27254_GW_B" } } \ No newline at end of file diff --git a/src/core/listeners/NodeIKernelGroupListener.ts b/src/core/listeners/NodeIKernelGroupListener.ts index 2faa0764..c518d7d7 100644 --- a/src/core/listeners/NodeIKernelGroupListener.ts +++ b/src/core/listeners/NodeIKernelGroupListener.ts @@ -1,6 +1,6 @@ import { Group, GroupListUpdateType, GroupMember, GroupNotify } from '@/core/entities'; -interface IGroupListener { +export interface IGroupListener { onGroupListUpdate(updateType: GroupListUpdateType, groupList: Group[]): void; onGroupExtListUpdate(...args: unknown[]): void; diff --git a/src/core/services/NodeIKernelGroupService.ts b/src/core/services/NodeIKernelGroupService.ts index 2ddbd4c0..a9b1eec9 100644 --- a/src/core/services/NodeIKernelGroupService.ts +++ b/src/core/services/NodeIKernelGroupService.ts @@ -1,4 +1,4 @@ -import { NodeIKernelGroupListener } from '@/core/listeners/NodeIKernelGroupListener'; +import { IGroupListener, NodeIKernelGroupListener } from '@/core/listeners/NodeIKernelGroupListener'; import { GroupExtParam, GroupMember, @@ -104,7 +104,7 @@ export interface NodeIKernelGroupService { setHeader(uid: string, path: string): unknown; - addKernelGroupListener(listener: NodeIKernelGroupListener): number; + addKernelGroupListener(listener: IGroupListener): number; removeKernelGroupListener(listenerId: unknown): void; diff --git a/src/core/services/NodeIKernelProfileService.ts b/src/core/services/NodeIKernelProfileService.ts index 2e0885e7..431c7fa8 100644 --- a/src/core/services/NodeIKernelProfileService.ts +++ b/src/core/services/NodeIKernelProfileService.ts @@ -1,6 +1,6 @@ import { AnyCnameRecord } from 'node:dns'; import { BizKey, ModifyProfileParams, SimpleInfo, UserDetailInfoByUin } from '../entities'; -import { NodeIKernelProfileListener } from '../listeners'; +import { NodeIKernelProfileListener, ProfileListener } from '../listeners'; import { GeneralCallResult } from '@/core/services/common'; export enum UserDetailSource { @@ -35,7 +35,7 @@ export interface NodeIKernelProfileService { fetchUserDetailInfo(trace: string, uids: string[], arg2: number, arg3: number[]): Promise; - addKernelProfileListener(listener: NodeIKernelProfileListener): number; + addKernelProfileListener(listener: ProfileListener): number; removeKernelProfileListener(listenerId: number): void; diff --git a/src/core/wrapper/wrapper.ts b/src/core/wrapper/wrapper.ts index e2fcad1f..743d8941 100644 --- a/src/core/wrapper/wrapper.ts +++ b/src/core/wrapper/wrapper.ts @@ -35,6 +35,7 @@ import { NodeIkernelTestPerformanceService } from '../services/NodeIkernelTestPe import { NodeIKernelECDHService } from '../services/NodeIKernelECDHService'; export interface NodeQQNTWrapperUtil { + get(): unknown; // eslint-disable-next-line @typescript-eslint/no-misused-new new(): NodeQQNTWrapperUtil; diff --git a/src/framework/napcat.ts b/src/framework/napcat.ts index a7ad890c..465b7a74 100644 --- a/src/framework/napcat.ts +++ b/src/framework/napcat.ts @@ -41,8 +41,7 @@ export async function NCoreInitFramework( online: true, }); }; - loginService.addKernelLoginListener(new wrapper.NodeIKernelLoginListener( - proxiedListenerOf(loginListener, logger))); + loginService.addKernelLoginListener(proxiedListenerOf(loginListener, logger) as any); }); // 过早进入会导致addKernelMsgListener等Listener添加失败 // await sleep(2500); diff --git a/src/onebot/index.ts b/src/onebot/index.ts index b12ba056..c4c1ac3e 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -275,7 +275,7 @@ export class NapCatOneBot11Adapter { }; this.context.session.getMsgService().addKernelMsgListener( - new this.context.wrapper.NodeIKernelMsgListener(proxiedListenerOf(msgListener, this.context.logger)), + proxiedListenerOf(msgListener, this.context.logger) as any ); } @@ -302,7 +302,7 @@ export class NapCatOneBot11Adapter { }; this.context.session.getBuddyService().addKernelBuddyListener( - new this.context.wrapper.NodeIKernelBuddyListener(proxiedListenerOf(buddyListener, this.context.logger)), + proxiedListenerOf(buddyListener, this.context.logger) as any ); } @@ -438,7 +438,7 @@ export class NapCatOneBot11Adapter { }; this.context.session.getGroupService().addKernelGroupListener( - new this.context.wrapper.NodeIKernelGroupListener(proxiedListenerOf(groupListener, this.context.logger)), + proxiedListenerOf(groupListener, this.context.logger) ); } diff --git a/src/onebot/network/passive-websocket.ts b/src/onebot/network/passive-websocket.ts index f007fe4e..d1d0307b 100644 --- a/src/onebot/network/passive-websocket.ts +++ b/src/onebot/network/passive-websocket.ts @@ -36,7 +36,11 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { this.logger = coreContext.context.logger; this.heartbeatInterval = heartbeatInterval; - this.wsServer = new WebSocketServer({ port: port, host: ip, maxPayload: 1024 * 1024 * 1024, }); + this.wsServer = new WebSocketServer({ + port: port, + host: ip, + maxPayload: 1024 * 1024 * 1024, + }); const core = coreContext; this.wsServer.on('connection', async (wsClient, wsReq) => { if (!this.isOpen) { diff --git a/src/shell/napcat.ts b/src/shell/napcat.ts index 350b99d0..886d5f88 100644 --- a/src/shell/napcat.ts +++ b/src/shell/napcat.ts @@ -43,12 +43,12 @@ export async function NCoreInitShell() { // from constructor const engine = new wrapper.NodeIQQNTWrapperEngine(); - const util = new wrapper.NodeQQNTWrapperUtil(); + //const util = wrapper.NodeQQNTWrapperUtil.get(); const loginService = new wrapper.NodeIKernelLoginService(); const session = new wrapper.NodeIQQNTWrapperSession(); // from get dataPath - let dataPath = util.getNTUserDataInfoConfig(); + let dataPath = wrapper.NodeQQNTWrapperUtil.getNTUserDataInfoConfig(); if (!dataPath) { dataPath = path.resolve(os.homedir(), './.config/QQ'); fs.mkdirSync(dataPath, { recursive: true }); @@ -70,7 +70,7 @@ export async function NCoreInitShell() { }, thumb_config: { maxSide: 324, minSide: 48, longLimit: 6, density: 2 }, }, - new wrapper.NodeIGlobalAdapter(new GlobalAdapter()), + new GlobalAdapter() as any, ); loginService.initConfig({ machineId: '', @@ -140,8 +140,7 @@ export async function NCoreInitShell() { logger.logError('[Core] [Login] Login Error , ErrInfo: ', args); }; - loginService.addKernelLoginListener(new wrapper.NodeIKernelLoginListener( - proxiedListenerOf(loginListener, logger))); + loginService.addKernelLoginListener(proxiedListenerOf(loginListener, logger) as any); // 实现WebUi快速登录 loginService.getLoginList().then((res) => { @@ -188,11 +187,10 @@ export async function NCoreInitShell() { } else { logger.log('没有 -q 指令指定快速登录,将使用二维码登录方式'); if (historyLoginList.length > 0) { - logger.log(`可用于快速登录的 QQ:\n${ - historyLoginList - .map((u, index) => `${index + 1}. ${u.uin} ${u.nickName}`) - .join('\n') - }`); + logger.log(`可用于快速登录的 QQ:\n${historyLoginList + .map((u, index) => `${index + 1}. ${u.uin} ${u.nickName}`) + .join('\n') + }`); } loginService.getQRCodePicture(); } @@ -220,9 +218,9 @@ export async function NCoreInitShell() { }; session.init( sessionConfig, - new wrapper.NodeIDependsAdapter(new DependsAdapter()), - new wrapper.NodeIDispatcherAdapter(new DispatcherAdapter()), - new wrapper.NodeIKernelSessionListener(sessionListener), + new DependsAdapter() as any, + new DispatcherAdapter() as any, + sessionListener as any, ); try { session.startNT(0);