Skip to content

Commit

Permalink
Merge pull request #289 from NapNeko/extend
Browse files Browse the repository at this point in the history
Support: 9.9.15-27254
  • Loading branch information
MliKiowa authored Aug 21, 2024
2 parents 12105d9 + 5c6c1bb commit 13d8d10
Show file tree
Hide file tree
Showing 13 changed files with 63 additions and 97 deletions.
16 changes: 6 additions & 10 deletions src/common/framework/event-legacy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,13 @@ export interface ListenerIBase {
}

export class LegacyNTEventWrapper {
private listenerMapping: Record<string, ListenerIBase>; //ListenerName-Unique -> Listener构造函数
private WrapperSession: NodeIQQNTWrapperSession | undefined; //WrapperSession
private listenerManager: Map<string, ListenerClassBase> = new Map<string, ListenerClassBase>(); //ListenerName-Unique -> Listener实例
private EventTask = new Map<string, Map<string, Map<string, Internal_MapKey>>>(); //tasks ListenerMainName -> ListenerSubName-> uuid -> {timeout,createtime,func}

constructor(
listenerMapping: Record<string, ListenerIBase>,
wrapperSession: NodeIQQNTWrapperSession,
wrapperSession: NodeIQQNTWrapperSession
) {
this.listenerMapping = listenerMapping;
this.WrapperSession = wrapperSession;
}

Expand Down Expand Up @@ -72,18 +69,17 @@ export class LegacyNTEventWrapper {
}

createListenerFunction<T>(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;
}

//统一回调清理事件
Expand Down
2 changes: 1 addition & 1 deletion src/common/utils/QQBasicInfo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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() };
}
}

Expand Down
12 changes: 6 additions & 6 deletions src/common/utils/helper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
};
}

Expand Down
12 changes: 6 additions & 6 deletions src/core/core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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),
Expand Down Expand Up @@ -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 });
Expand All @@ -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();
Expand All @@ -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),
);

// 群相关
Expand Down Expand Up @@ -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 {
Expand Down
68 changes: 18 additions & 50 deletions src/core/external/appid.json
Original file line number Diff line number Diff line change
@@ -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"
}
}
2 changes: 1 addition & 1 deletion src/core/listeners/NodeIKernelGroupListener.ts
Original file line number Diff line number Diff line change
@@ -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;
Expand Down
4 changes: 2 additions & 2 deletions src/core/services/NodeIKernelGroupService.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { NodeIKernelGroupListener } from '@/core/listeners/NodeIKernelGroupListener';
import { IGroupListener, NodeIKernelGroupListener } from '@/core/listeners/NodeIKernelGroupListener';
import {
GroupExtParam,
GroupMember,
Expand Down Expand Up @@ -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;

Expand Down
4 changes: 2 additions & 2 deletions src/core/services/NodeIKernelProfileService.ts
Original file line number Diff line number Diff line change
@@ -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 {
Expand Down Expand Up @@ -35,7 +35,7 @@ export interface NodeIKernelProfileService {

fetchUserDetailInfo(trace: string, uids: string[], arg2: number, arg3: number[]): Promise<unknown>;

addKernelProfileListener(listener: NodeIKernelProfileListener): number;
addKernelProfileListener(listener: ProfileListener): number;

removeKernelProfileListener(listenerId: number): void;

Expand Down
1 change: 1 addition & 0 deletions src/core/wrapper/wrapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
3 changes: 1 addition & 2 deletions src/framework/napcat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
6 changes: 3 additions & 3 deletions src/onebot/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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
);
}

Expand All @@ -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
);
}

Expand Down Expand Up @@ -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)
);
}

Expand Down
6 changes: 5 additions & 1 deletion src/onebot/network/passive-websocket.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
24 changes: 11 additions & 13 deletions src/shell/napcat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 });
Expand All @@ -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: '',
Expand Down Expand Up @@ -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) => {
Expand Down Expand Up @@ -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();
}
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit 13d8d10

Please sign in to comment.