diff --git a/manifest.json b/manifest.json index b7a7cc9f..d1ffbaf3 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "3.3.27", + "version": "3.4.3", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 31c72f3f..561456b9 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "3.3.27", + "version": "3.4.3", "scripts": { "build:framework": "vite build --mode framework", "build:shell": "vite build --mode shell", diff --git a/src/common/qq-basic-info.ts b/src/common/qq-basic-info.ts index f1d4e0a6..126ec37d 100644 --- a/src/common/qq-basic-info.ts +++ b/src/common/qq-basic-info.ts @@ -85,7 +85,10 @@ export class QQBasicInfoWrapper { // 通过Major拉取 性能差 try { let majorAppid = this.getAppidV2ByMajor(fullVersion); - if (majorAppid) { return { appid: majorAppid, qua: this.getQUAFallback() }; } + if (majorAppid) { + this.context.logger.log(`[QQ版本兼容性检测] 当前版本Appid未内置 通过Major获取 为了更好的性能请尝试更新NapCat`); + return { appid: majorAppid, qua: this.getQUAFallback() }; + } } catch (error) { this.context.logger.log(`[QQ版本兼容性检测] 通过Major 获取Appid异常 请检测NapCat/QQNT是否正常`); } diff --git a/src/common/version.ts b/src/common/version.ts index 6d5c48ca..29949b41 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '3.3.27'; +export const napCatVersion = '3.4.3'; diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index c22660b8..6b238d5b 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -54,7 +54,9 @@ export class NTQQGroupApi { }, pskey); } async getGroupShutUpMemberList(groupCode: string) { - return this.context.session.getGroupService().getGroupShutUpMemberList(groupCode); + let data = this.core.eventWrapper.registerListen('NodeIKernelGroupListener/onShutUpMemberListChanged', 1, 1000, (group_id) => group_id === groupCode); + this.context.session.getGroupService().getGroupShutUpMemberList(groupCode); + return (await data)[1]; } async clearGroupNotifiesUnreadCount(uk: boolean) { return this.context.session.getGroupService().clearGroupNotifiesUnreadCount(uk); diff --git a/src/core/entities/notify.ts b/src/core/entities/notify.ts index c8aa4d15..dbf3f63b 100644 --- a/src/core/entities/notify.ts +++ b/src/core/entities/notify.ts @@ -43,6 +43,50 @@ export enum GroupInviteType { BYGROUPMEMBER, BYDISCUSSMEMBER } +export interface ShutUpGroupHonor { + [key: string]: number; +} + +export interface ShutUpGroupMember { + uid: string; + qid: string; + uin: string; + nick: string; + remark: string; + cardType: number; + cardName: string; + role: number; + avatarPath: string; + shutUpTime: number; + isDelete: boolean; + isSpecialConcerned: boolean; + isSpecialShield: boolean; + isRobot: boolean; + groupHonor: ShutUpGroupHonor; + memberRealLevel: number; + memberLevel: number; + globalGroupLevel: number; + globalGroupPoint: number; + memberTitleId: number; + memberSpecialTitle: string; + specialTitleExpireTime: string; + userShowFlag: number; + userShowFlagNew: number; + richFlag: number; + mssVipType: number; + bigClubLevel: number; + bigClubFlag: number; + autoRemark: string; + creditLevel: number; + joinTime: number; + lastSpeakTime: number; + memberFlag: number; + memberFlagExt: number; + memberMobileFlag: number; + memberFlagExt2: number; + isSpecialShielded: boolean; + cardNameId: number; +} export interface GroupNotify { seq: string; // 通知序列号 diff --git a/src/core/listeners/NodeIKernelGroupListener.ts b/src/core/listeners/NodeIKernelGroupListener.ts index e3899b9b..88a9a14c 100644 --- a/src/core/listeners/NodeIKernelGroupListener.ts +++ b/src/core/listeners/NodeIKernelGroupListener.ts @@ -1,4 +1,4 @@ -import { DataSource, Group, GroupListUpdateType, GroupMember, GroupNotify } from '@/core/entities'; +import { DataSource, Group, GroupListUpdateType, GroupMember, GroupNotify, ShutUpGroupMember } from '@/core/entities'; export class NodeIKernelGroupListener { onGroupListInited(listEmpty: boolean): void { } @@ -80,6 +80,6 @@ export class NodeIKernelGroupListener { onSearchMemberChange(...args: unknown[]) { } - onShutUpMemberListChanged(...args: unknown[]) { + onShutUpMemberListChanged(groupCode: string, members: Array) { } } \ No newline at end of file diff --git a/src/onebot/action/go-cqhttp/GetStrangerInfo.ts b/src/onebot/action/go-cqhttp/GetStrangerInfo.ts index e64c48d4..d3b19d3c 100644 --- a/src/onebot/action/go-cqhttp/GetStrangerInfo.ts +++ b/src/onebot/action/go-cqhttp/GetStrangerInfo.ts @@ -25,6 +25,11 @@ export default class GoCQHTTPGetStrangerInfo extends BaseAction; -export class GetGroupShutList extends BaseAction { +export class GetGroupShutList extends BaseAction { actionName = ActionName.GetGroupShutList; payloadSchema = SchemaData; diff --git a/src/onebot/network/passive-websocket.ts b/src/onebot/network/passive-websocket.ts index 8e28f4a2..ea18ebd8 100644 --- a/src/onebot/network/passive-websocket.ts +++ b/src/onebot/network/passive-websocket.ts @@ -143,7 +143,7 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { private registerHeartBeat() { this.heartbeatIntervalId = setInterval(() => { this.wsClientsMutex.runExclusive(async () => { - this.wsClients.forEach((wsClient) => { + this.wsClientWithEvent.forEach((wsClient) => { if (wsClient.readyState === WebSocket.OPEN) { wsClient.send(JSON.stringify(new OB11HeartbeatEvent(this.core, this.heartbeatInterval, this.core.selfInfo.online, true))); } diff --git a/static/assets/renderer.js b/static/assets/renderer.js index 95acf638..e8d5cd83 100644 --- a/static/assets/renderer.js +++ b/static/assets/renderer.js @@ -164,7 +164,7 @@ async function onSettingWindowCreated(view) { SettingItem( 'Napcat', void 0, - SettingButton("V3.3.27", "napcat-update-button", "secondary") + SettingButton("V3.4.3", "napcat-update-button", "secondary") ) ]), SettingList([