From 0b8bf739e922b9fc3b5dd593e1026a3f1289dfcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Mon, 18 Nov 2024 19:51:08 +0800 Subject: [PATCH 001/418] fix: event --- src/common/event.ts | 44 +++++++++++-------- .../action/go-cqhttp/GetGroupRootFiles.ts | 2 +- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/src/common/event.ts b/src/common/event.ts index 821b0eb2..42c8cea0 100644 --- a/src/common/event.ts +++ b/src/common/event.ts @@ -234,25 +234,33 @@ export class NTEventWrapper { this.EventTask.get(ListenerMainName)?.get(ListenerSubName)?.set(id, eventCallback); this.createListenerFunction(ListenerMainName); - this.createEventFunction(serviceAndMethod)!(...(args)) - .then((eventResult: any) => { - retEvent = eventResult; - if (!checkerEvent(retEvent) && timeoutRef.hasRef()) { - clearTimeout(timeoutRef); - reject( - new Error( - 'EventChecker Failed: NTEvent serviceAndMethod:' + - serviceAndMethod + - ' ListenerName:' + - listenerAndMethod + - ' EventRet:\n' + - JSON.stringify(retEvent, null, 4) + - '\n', - ), - ); - } + let eventResult = this.createEventFunction(serviceAndMethod)!(...(args)); + + const eventRetHandle = (eventData: any) => { + retEvent = eventData; + if (!checkerEvent(retEvent) && timeoutRef.hasRef()) { + clearTimeout(timeoutRef); + reject( + new Error( + 'EventChecker Failed: NTEvent serviceAndMethod:' + + serviceAndMethod + + ' ListenerName:' + + listenerAndMethod + + ' EventRet:\n' + + JSON.stringify(retEvent, null, 4) + + '\n', + ), + ); + } + } + if (eventResult instanceof Promise) { + eventResult.then((eventResult: any) => { + eventRetHandle(eventResult); }) - .catch(reject); + .catch(reject); + } else { + eventRetHandle(eventResult); + } }, ); } diff --git a/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts b/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts index dc713687..4ed57ae2 100644 --- a/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts +++ b/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts @@ -28,7 +28,7 @@ export class GetGroupRootFiles extends BaseAction []); + }); return { files: ret.filter(item => item.fileInfo) From e9fe6f28ccf377ce4d16d38065d2dc22587138fb Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Mon, 18 Nov 2024 11:51:39 +0000 Subject: [PATCH 002/418] release: v4.1.6 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 32671e74..d00fb10e 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.1.5", + "version": "4.1.6", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 82b743ed..6c8e4308 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.1.5", + "version": "4.1.6", "scripts": { "build:framework": "npm run build:webui && vite build --mode framework", "build:shell": "npm run build:webui && vite build --mode shell", diff --git a/src/common/version.ts b/src/common/version.ts index 9eddc4d7..f8e25710 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.1.5'; +export const napCatVersion = '4.1.6'; From be9e80c87b63f3ee8d895ec5c2ab1e15f9354519 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Mon, 18 Nov 2024 20:40:43 +0800 Subject: [PATCH 003/418] =?UTF-8?q?fix:=20=E6=B8=85=E9=99=A4=E6=97=A0?= =?UTF-8?q?=E6=95=88=E9=93=BE=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 7e254631..bd53ff53 100644 --- a/README.md +++ b/README.md @@ -30,8 +30,6 @@ NapCatQQ 是现代化的基于 NTQQ 的 Bot 协议端实现 [Cloudflare.Pages](https://napneko.pages.dev/) -[Server.China](https://napneko.com/) - [Server.Other](https://napcat.cyou/) From ded53cd348bab2c5752d3c088a2f173cd1b9c578 Mon Sep 17 00:00:00 2001 From: pk5ls20 Date: Mon, 18 Nov 2024 23:22:25 +0800 Subject: [PATCH 004/418] fix: link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bd53ff53..dc1ba4c0 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ NapCatQQ 是现代化的基于 NTQQ 的 Bot 协议端实现 ## 回家旅途 -[QQ Group](https://qm.qq.com/q/VfjAq5HIMS) +[QQ Group](https://qm.qq.com/q/haLGHixZ74) ## 感谢他们 感谢 [Lagrange](https://github.com/LagrangeDev/Lagrange.Core) 对本项目的大力支持 参考部分代码 已获授权 From d4fbbd671197211f09207f1d73e401a817935811 Mon Sep 17 00:00:00 2001 From: pk5ls20 Date: Tue, 19 Nov 2024 01:12:49 +0800 Subject: [PATCH 005/418] fix: #539 --- src/core/apis/msg.ts | 42 +++++---- src/core/listeners/NodeIKernelMsgListener.ts | 91 ++++++++++---------- 2 files changed, 74 insertions(+), 59 deletions(-) diff --git a/src/core/apis/msg.ts b/src/core/apis/msg.ts index 120d3351..4335fc73 100644 --- a/src/core/apis/msg.ts +++ b/src/core/apis/msg.ts @@ -1,5 +1,5 @@ import { ChatType, GetFileListParam, Peer, RawMessage, SendMessageElement, SendStatusType } from '@/core/entities'; -import { InstanceContext, NapCatCore } from '@/core'; +import { GroupFileInfoUpdateItem, InstanceContext, NapCatCore } from '@/core'; import { GeneralCallResult } from '@/core/services/common'; export class NTQQMsgApi { @@ -25,9 +25,11 @@ export class NTQQMsgApi { async sendShowInputStatusReq(peer: Peer, eventType: number) { return this.context.session.getMsgService().sendShowInputStatusReq(peer.chatType, eventType, peer.peerUid); } + async getSourceOfReplyMsgV2(peer: Peer, clientSeq: string, time: string) { return this.context.session.getMsgService().getSourceOfReplyMsgV2(peer, clientSeq, time); } + async getMsgEmojiLikesList(peer: Peer, msgSeq: string, emojiId: string, emojiType: string, count: number = 20) { //注意此处emojiType 可选值一般为1-2 2好像是unicode表情dec值 大部分情况 Taged Mlikiowa return this.context.session.getMsgService().getMsgEmojiLikesList(peer, msgSeq, emojiId, emojiType, '', false, count); @@ -111,7 +113,7 @@ export class NTQQMsgApi { pageLimit: 1, }); } - // 客户端还在用别慌 + // 客户端还在用别慌 async getMsgsBySeqAndCount(peer: Peer, seq: string, count: number, desc: boolean, isReverseOrder: boolean) { return await this.context.session.getMsgService().getMsgsBySeqAndCount(peer, seq, count, desc, isReverseOrder); } @@ -136,19 +138,29 @@ export class NTQQMsgApi { } async getGroupFileList(GroupCode: string, params: GetFileListParam) { - const [, groupFileListResult] = await this.core.eventWrapper.callNormalEventV2( - 'NodeIKernelRichMediaService/getGroupFileList', - 'NodeIKernelMsgListener/onGroupFileInfoUpdate', - [ - GroupCode, - params, - ], - () => true, - () => true, // 应当通过 groupFileListResult 判断 - 1, - 5000, - ); - return groupFileListResult.item; + const item: GroupFileInfoUpdateItem[] = []; + let index = params.startIndex; + while (true) { + params.startIndex = index; + const [, groupFileListResult] = await this.core.eventWrapper.callNormalEventV2( + 'NodeIKernelRichMediaService/getGroupFileList', + 'NodeIKernelMsgListener/onGroupFileInfoUpdate', + [ + GroupCode, + params, + ], + () => true, + () => true, // 应当通过 groupFileListResult 判断 + 1, + 5000, + ); + if (!groupFileListResult?.item?.length) break; + item.push(...groupFileListResult.item); + if (groupFileListResult.isEnd) break; + if (item.length === params.fileCount) break; + index = groupFileListResult.nextIndex; + } + return item; } async getMsgHistory(peer: Peer, msgId: string, count: number, isReverseOrder: boolean = false) { diff --git a/src/core/listeners/NodeIKernelMsgListener.ts b/src/core/listeners/NodeIKernelMsgListener.ts index 43ce4466..f0ebdb37 100644 --- a/src/core/listeners/NodeIKernelMsgListener.ts +++ b/src/core/listeners/NodeIKernelMsgListener.ts @@ -29,50 +29,10 @@ export interface GroupFileInfoUpdateParamType { retMsg: string; clientWording: string; isEnd: boolean; - item: Array<{ - peerId: string; - type: number; - folderInfo?: { - folderId: string; - parentFolderId: string; - folderName: string; - createTime: number; - modifyTime: number; - createUin: string; - creatorName: string; - totalFileCount: number; - modifyUin: string; - modifyName: string; - usedSpace: string; - }, - fileInfo?: { - fileModelId: string; - fileId: string; - fileName: string; - fileSize: string; - busId: number; - uploadedSize: string; - uploadTime: number; - deadTime: number; - modifyTime: number; - downloadTimes: number; - sha: string; - sha3: string; - md5: string; - uploaderLocalPath: string; - uploaderName: string; - uploaderUin: string; - parentFolderId: string; - localPath: string; - transStatus: number; - transType: number; - elementId: string; - isFolder: boolean; - }, - }>; - allFileCount: string; - nextIndex: string; - reqId: string; + item: Array; + allFileCount: number; + nextIndex: number; + reqId: number; } // { @@ -83,6 +43,49 @@ export interface GroupFileInfoUpdateParamType { // fromNick: '拾xxxx, // sig: '0x' // } + +export interface GroupFileInfoUpdateItem { + peerId: string; + type: number; + folderInfo?: { + folderId: string; + parentFolderId: string; + folderName: string; + createTime: number; + modifyTime: number; + createUin: string; + creatorName: string; + totalFileCount: number; + modifyUin: string; + modifyName: string; + usedSpace: string; + }, + fileInfo?: { + fileModelId: string; + fileId: string; + fileName: string; + fileSize: string; + busId: number; + uploadedSize: string; + uploadTime: number; + deadTime: number; + modifyTime: number; + downloadTimes: number; + sha: string; + sha3: string; + md5: string; + uploaderLocalPath: string; + uploaderName: string; + uploaderUin: string; + parentFolderId: string; + localPath: string; + transStatus: number; + transType: number; + elementId: string; + isFolder: boolean; + }, +} + export interface TempOnRecvParams { sessionType: number,//1 chatType: ChatType,//100 From 9ffaab178aefc9e0f251e160f68f7b545f8092a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Tue, 19 Nov 2024 12:49:51 +0800 Subject: [PATCH 006/418] refactor: Action --- src/onebot/action/OB11Response.ts | 32 ----------- .../action/{BaseAction.ts => OneBotAction.ts} | 53 ++++++++++++------- src/onebot/action/extends/CreateCollection.ts | 4 +- src/onebot/action/extends/FetchCustomFace.ts | 4 +- src/onebot/action/extends/FetchEmojiLike.ts | 4 +- .../action/extends/FetchUserProfileLike.ts | 4 +- .../action/extends/GetCollectionList.ts | 4 +- .../action/extends/GetFriendWithCategory.ts | 4 +- .../action/extends/GetGroupAddRequest.ts | 4 +- src/onebot/action/extends/GetGroupInfoEx.ts | 4 +- src/onebot/action/extends/GetProfileLike.ts | 4 +- src/onebot/action/extends/GetRobotUinRange.ts | 4 +- src/onebot/action/extends/OCRImage.ts | 4 +- src/onebot/action/extends/SetInputStatus.ts | 4 +- src/onebot/action/extends/SetLongNick.ts | 4 +- src/onebot/action/extends/SetOnlineStatus.ts | 4 +- src/onebot/action/extends/SetQQAvatar.ts | 4 +- src/onebot/action/extends/ShareContact.ts | 6 +-- .../action/extends/TranslateEnWordToZn.ts | 4 +- src/onebot/action/file/GetFile.ts | 4 +- .../action/go-cqhttp/CreateGroupFileFolder.ts | 4 +- .../action/go-cqhttp/DeleteGroupFile.ts | 4 +- .../action/go-cqhttp/DeleteGroupFileFolder.ts | 4 +- src/onebot/action/go-cqhttp/DownloadFile.ts | 4 +- src/onebot/action/go-cqhttp/GetForwardMsg.ts | 4 +- .../action/go-cqhttp/GetFriendMsgHistory.ts | 4 +- .../action/go-cqhttp/GetGroupAtAllRemain.ts | 4 +- .../go-cqhttp/GetGroupFileSystemInfo.ts | 4 +- .../action/go-cqhttp/GetGroupFilesByFolder.ts | 4 +- .../action/go-cqhttp/GetGroupHonorInfo.ts | 4 +- .../action/go-cqhttp/GetGroupMsgHistory.ts | 4 +- .../action/go-cqhttp/GetGroupRootFiles.ts | 4 +- .../action/go-cqhttp/GetOnlineClient.ts | 4 +- .../action/go-cqhttp/GetStrangerInfo.ts | 4 +- .../go-cqhttp/GoCQHTTPCheckUrlSafely.ts | 4 +- .../action/go-cqhttp/GoCQHTTPDeleteFriend.ts | 4 +- .../action/go-cqhttp/GoCQHTTPGetModelShow.ts | 4 +- .../action/go-cqhttp/GoCQHTTPSetModelShow.ts | 4 +- src/onebot/action/go-cqhttp/QuickAction.ts | 4 +- .../action/go-cqhttp/SendGroupNotice.ts | 4 +- .../action/go-cqhttp/SetGroupPortrait.ts | 4 +- src/onebot/action/go-cqhttp/SetQQProfile.ts | 4 +- .../action/go-cqhttp/UploadGroupFile.ts | 4 +- .../action/go-cqhttp/UploadPrivateFile.ts | 4 +- src/onebot/action/group/DelEssenceMsg.ts | 4 +- src/onebot/action/group/DelGroupNotice.ts | 4 +- src/onebot/action/group/GetGroupEssence.ts | 4 +- .../action/group/GetGroupIgnoredNotifies.ts | 4 +- src/onebot/action/group/GetGroupInfo.ts | 4 +- src/onebot/action/group/GetGroupList.ts | 4 +- src/onebot/action/group/GetGroupMemberInfo.ts | 4 +- src/onebot/action/group/GetGroupMemberList.ts | 4 +- src/onebot/action/group/GetGroupNotice.ts | 4 +- src/onebot/action/group/GetGroupShutList.ts | 4 +- src/onebot/action/group/SetEssenceMsg.ts | 4 +- src/onebot/action/group/SetGroupAddRequest.ts | 4 +- src/onebot/action/group/SetGroupAdmin.ts | 4 +- src/onebot/action/group/SetGroupBan.ts | 4 +- src/onebot/action/group/SetGroupCard.ts | 4 +- src/onebot/action/group/SetGroupKick.ts | 4 +- src/onebot/action/group/SetGroupLeave.ts | 4 +- src/onebot/action/group/SetGroupName.ts | 4 +- src/onebot/action/group/SetGroupWholeBan.ts | 4 +- src/onebot/action/guild/GetGuildList.ts | 4 +- src/onebot/action/guild/GetGuildProfile.ts | 4 +- src/onebot/action/index.ts | 4 +- src/onebot/action/msg/DeleteMsg.ts | 4 +- src/onebot/action/msg/ForwardSingleMsg.ts | 4 +- src/onebot/action/msg/GetMsg.ts | 4 +- src/onebot/action/msg/MarkMsgAsRead.ts | 6 +-- src/onebot/action/msg/SendMsg.ts | 4 +- src/onebot/action/msg/SetMsgEmojiLike.ts | 4 +- src/onebot/action/packet/GetPacketStatus.ts | 4 +- src/onebot/action/system/CanSendRecord.ts | 4 +- src/onebot/action/system/GetCSRF.ts | 4 +- src/onebot/action/system/GetCredentials.ts | 4 +- src/onebot/action/system/GetLoginInfo.ts | 4 +- src/onebot/action/system/GetStatus.ts | 4 +- src/onebot/action/system/GetSystemMsg.ts | 4 +- src/onebot/action/system/GetVersionInfo.ts | 4 +- src/onebot/action/user/GetCookies.ts | 4 +- src/onebot/action/user/GetFriendList.ts | 4 +- src/onebot/action/user/GetRecentContact.ts | 4 +- src/onebot/action/user/SendLike.ts | 4 +- src/onebot/action/user/SetFriendAddRequest.ts | 4 +- src/onebot/network/active-websocket.ts | 2 +- src/onebot/network/passive-http.ts | 2 +- src/onebot/network/passive-websocket.ts | 2 +- 88 files changed, 206 insertions(+), 221 deletions(-) delete mode 100644 src/onebot/action/OB11Response.ts rename src/onebot/action/{BaseAction.ts => OneBotAction.ts} (58%) diff --git a/src/onebot/action/OB11Response.ts b/src/onebot/action/OB11Response.ts deleted file mode 100644 index 3fecfbb4..00000000 --- a/src/onebot/action/OB11Response.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { OB11Return } from '../types'; - -import { isNull } from '@/common/helper'; - -export class OB11Response { - static res(data: T, status: string, retcode: number, message: string = ''): OB11Return { - return { - status: status, - retcode: retcode, - data: data, - message: message, - wording: message, - echo: null, - }; - } - - static ok(data: T, echo: any = null) { - const res = OB11Response.res(data, 'ok', 0); - if (!isNull(echo)) { - res.echo = echo; - } - return res; - } - - static error(err: string, retcode: number, echo: any = null) { - const res = OB11Response.res(null, 'failed', retcode, err); - if (!isNull(echo)) { - res.echo = echo; - } - return res; - } -} diff --git a/src/onebot/action/BaseAction.ts b/src/onebot/action/OneBotAction.ts similarity index 58% rename from src/onebot/action/BaseAction.ts rename to src/onebot/action/OneBotAction.ts index cace2723..8651fb34 100644 --- a/src/onebot/action/BaseAction.ts +++ b/src/onebot/action/OneBotAction.ts @@ -1,15 +1,38 @@ import { ActionName, BaseCheckResult } from './types'; -import { OB11Response } from './OB11Response'; -import { OB11Return } from '@/onebot/types'; import Ajv, { ErrorObject, ValidateFunction } from 'ajv'; import { NapCatCore } from '@/core'; +import { isNull } from '@/common/helper'; +import { NapCatOneBot11Adapter, OB11Return } from '@/onebot'; -import { NapCatOneBot11Adapter } from '@/onebot'; +export class OB11Response { + private static createResponse(data: T, status: string, retcode: number, message: string = '', echo: any = null): OB11Return { + return { + status, + retcode, + data, + message, + wording: message, + echo, + }; + } -abstract class BaseAction { + static res(data: T, status: string, retcode: number, message: string = ''): OB11Return { + return this.createResponse(data, status, retcode, message); + } + + static ok(data: T, echo: any = null): OB11Return { + return this.createResponse(data, 'ok', 0, '', echo); + } + + static error(err: string, retcode: number, echo: any = null): OB11Return { + return this.createResponse(null, 'failed', retcode, err, echo); + } +} + +export abstract class OneBotAction { actionName: ActionName = ActionName.Unknown; core: NapCatCore; - private validate: undefined | ValidateFunction = undefined; + private validate: ValidateFunction | undefined = undefined; payloadSchema: any = undefined; obContext: NapCatOneBot11Adapter; @@ -24,17 +47,13 @@ abstract class BaseAction { } if (this.validate && !this.validate(payload)) { const errors = this.validate.errors as ErrorObject[]; - const errorMessages: string[] = errors.map((e) => { - return `Key: ${e.instancePath.split('/').slice(1).join('.')}, Message: ${e.message}`; - }); + const errorMessages = errors.map(e => `Key: ${e.instancePath.split('/').slice(1).join('.')}, Message: ${e.message}`); return { valid: false, message: errorMessages.join('\n') ?? '未知错误', }; } - return { - valid: true, - }; + return { valid: true }; } public async handle(payload: PayloadType, adaptername: string): Promise> { @@ -46,8 +65,8 @@ abstract class BaseAction { const resData = await this._handle(payload, adaptername); return OB11Response.ok(resData); } catch (e: any) { - this.core.context.logger.logError.bind(this.core.context.logger)('发生错误', e); - return OB11Response.error(e?.stack?.toString() || e?.toString() || '未知错误,可能操作超时', 200); + this.core.context.logger.logError('发生错误', e); + return OB11Response.error(e?.toString() || e?.stack?.toString() || '未知错误,可能操作超时', 200); } } @@ -60,12 +79,10 @@ abstract class BaseAction { const resData = await this._handle(payload, adaptername); return OB11Response.ok(resData, echo); } catch (e: any) { - this.core.context.logger.logError.bind(this.core.context.logger)('发生错误', e); - return OB11Response.error(e.stack?.toString() || e.toString(), 1200, echo); + this.core.context.logger.logError('发生错误', e); + return OB11Response.error(e.toString() || e.stack?.toString(), 1200, echo); } } abstract _handle(payload: PayloadType, adaptername: string): PromiseLike; -} - -export default BaseAction; +} \ No newline at end of file diff --git a/src/onebot/action/extends/CreateCollection.ts b/src/onebot/action/extends/CreateCollection.ts index d7a5e58c..1f62a15d 100644 --- a/src/onebot/action/extends/CreateCollection.ts +++ b/src/onebot/action/extends/CreateCollection.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -13,7 +13,7 @@ const SchemaData = { type Payload = FromSchema; -export class CreateCollection extends BaseAction { +export class CreateCollection extends OneBotAction { actionName = ActionName.CreateCollection; payloadSchema = SchemaData; diff --git a/src/onebot/action/extends/FetchCustomFace.ts b/src/onebot/action/extends/FetchCustomFace.ts index 041e38f6..ea4dd11c 100644 --- a/src/onebot/action/extends/FetchCustomFace.ts +++ b/src/onebot/action/extends/FetchCustomFace.ts @@ -1,5 +1,5 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; const SchemaData = { @@ -11,7 +11,7 @@ const SchemaData = { type Payload = FromSchema; -export class FetchCustomFace extends BaseAction { +export class FetchCustomFace extends OneBotAction { actionName = ActionName.FetchCustomFace; payloadSchema = SchemaData; diff --git a/src/onebot/action/extends/FetchEmojiLike.ts b/src/onebot/action/extends/FetchEmojiLike.ts index f53a78b8..68ddcb5a 100644 --- a/src/onebot/action/extends/FetchEmojiLike.ts +++ b/src/onebot/action/extends/FetchEmojiLike.ts @@ -1,6 +1,6 @@ //getMsgEmojiLikesList import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { MessageUnique } from '@/common/message-unique'; @@ -19,7 +19,7 @@ const SchemaData = { type Payload = FromSchema; -export class FetchEmojiLike extends BaseAction { +export class FetchEmojiLike extends OneBotAction { actionName = ActionName.FetchEmojiLike; payloadSchema = SchemaData; diff --git a/src/onebot/action/extends/FetchUserProfileLike.ts b/src/onebot/action/extends/FetchUserProfileLike.ts index c420014b..07a7bb02 100644 --- a/src/onebot/action/extends/FetchUserProfileLike.ts +++ b/src/onebot/action/extends/FetchUserProfileLike.ts @@ -1,7 +1,7 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; -export class FetchUserProfileLike extends BaseAction<{ qq: number }, any> { +export class FetchUserProfileLike extends OneBotAction<{ qq: number }, any> { actionName = ActionName.FetchUserProfileLike; async _handle(payload: { qq: number }) { diff --git a/src/onebot/action/extends/GetCollectionList.ts b/src/onebot/action/extends/GetCollectionList.ts index f84ad214..0e4263b0 100644 --- a/src/onebot/action/extends/GetCollectionList.ts +++ b/src/onebot/action/extends/GetCollectionList.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -13,7 +13,7 @@ const SchemaData = { type Payload = FromSchema; -export class GetCollectionList extends BaseAction { +export class GetCollectionList extends OneBotAction { actionName = ActionName.GetCollectionList; payloadSchema = SchemaData; diff --git a/src/onebot/action/extends/GetFriendWithCategory.ts b/src/onebot/action/extends/GetFriendWithCategory.ts index 0a5a67f5..e4f0f077 100644 --- a/src/onebot/action/extends/GetFriendWithCategory.ts +++ b/src/onebot/action/extends/GetFriendWithCategory.ts @@ -1,8 +1,8 @@ import { OB11Entities } from '@/onebot/entities'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; -export class GetFriendWithCategory extends BaseAction { +export class GetFriendWithCategory extends OneBotAction { actionName = ActionName.GetFriendsWithCategory; async _handle(payload: void) { diff --git a/src/onebot/action/extends/GetGroupAddRequest.ts b/src/onebot/action/extends/GetGroupAddRequest.ts index 5e1f3edb..7eb62a8f 100644 --- a/src/onebot/action/extends/GetGroupAddRequest.ts +++ b/src/onebot/action/extends/GetGroupAddRequest.ts @@ -1,5 +1,5 @@ import { GroupNotifyMsgStatus } from '@/core'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; interface OB11GroupRequestNotify { @@ -8,7 +8,7 @@ interface OB11GroupRequestNotify { flag: string } -export default class GetGroupAddRequest extends BaseAction { +export default class GetGroupAddRequest extends OneBotAction { actionName = ActionName.GetGroupIgnoreAddRequest; async _handle(payload: null): Promise { diff --git a/src/onebot/action/extends/GetGroupInfoEx.ts b/src/onebot/action/extends/GetGroupInfoEx.ts index bfd15eb1..3551997b 100644 --- a/src/onebot/action/extends/GetGroupInfoEx.ts +++ b/src/onebot/action/extends/GetGroupInfoEx.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -12,7 +12,7 @@ const SchemaData = { type Payload = FromSchema; -export class GetGroupInfoEx extends BaseAction { +export class GetGroupInfoEx extends OneBotAction { actionName = ActionName.GetGroupInfoEx; payloadSchema = SchemaData; diff --git a/src/onebot/action/extends/GetProfileLike.ts b/src/onebot/action/extends/GetProfileLike.ts index 38e12e49..ce9c8beb 100644 --- a/src/onebot/action/extends/GetProfileLike.ts +++ b/src/onebot/action/extends/GetProfileLike.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; interface Payload { @@ -6,7 +6,7 @@ interface Payload { count: number } -export class GetProfileLike extends BaseAction { +export class GetProfileLike extends OneBotAction { actionName = ActionName.GetProfileLike; async _handle(payload: Payload) { diff --git a/src/onebot/action/extends/GetRobotUinRange.ts b/src/onebot/action/extends/GetRobotUinRange.ts index 011e5ce2..8e6af867 100644 --- a/src/onebot/action/extends/GetRobotUinRange.ts +++ b/src/onebot/action/extends/GetRobotUinRange.ts @@ -1,7 +1,7 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; -export class GetRobotUinRange extends BaseAction> { +export class GetRobotUinRange extends OneBotAction> { actionName = ActionName.GetRobotUinRange; async _handle(payload: void) { diff --git a/src/onebot/action/extends/OCRImage.ts b/src/onebot/action/extends/OCRImage.ts index b6bb568b..876b3e6b 100644 --- a/src/onebot/action/extends/OCRImage.ts +++ b/src/onebot/action/extends/OCRImage.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { checkFileReceived, uri2local } from '@/common/file'; @@ -14,7 +14,7 @@ const SchemaData = { type Payload = FromSchema; -export class OCRImage extends BaseAction { +export class OCRImage extends OneBotAction { actionName = ActionName.OCRImage; payloadSchema = SchemaData; diff --git a/src/onebot/action/extends/SetInputStatus.ts b/src/onebot/action/extends/SetInputStatus.ts index db694b07..7e0d3eca 100644 --- a/src/onebot/action/extends/SetInputStatus.ts +++ b/src/onebot/action/extends/SetInputStatus.ts @@ -1,5 +1,5 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { ChatType } from '@/core'; @@ -14,7 +14,7 @@ const SchemaData = { type Payload = FromSchema; -export class SetInputStatus extends BaseAction { +export class SetInputStatus extends OneBotAction { actionName = ActionName.SetInputStatus; async _handle(payload: Payload) { diff --git a/src/onebot/action/extends/SetLongNick.ts b/src/onebot/action/extends/SetLongNick.ts index 75968001..35bf2f0a 100644 --- a/src/onebot/action/extends/SetLongNick.ts +++ b/src/onebot/action/extends/SetLongNick.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -12,7 +12,7 @@ const SchemaData = { type Payload = FromSchema; -export class SetLongNick extends BaseAction { +export class SetLongNick extends OneBotAction { actionName = ActionName.SetLongNick; payloadSchema = SchemaData; diff --git a/src/onebot/action/extends/SetOnlineStatus.ts b/src/onebot/action/extends/SetOnlineStatus.ts index e7dcbcbc..4d80ac6d 100644 --- a/src/onebot/action/extends/SetOnlineStatus.ts +++ b/src/onebot/action/extends/SetOnlineStatus.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; // 设置在线状态 @@ -15,7 +15,7 @@ const SchemaData = { type Payload = FromSchema; -export class SetOnlineStatus extends BaseAction { +export class SetOnlineStatus extends OneBotAction { actionName = ActionName.SetOnlineStatus; payloadSchema = SchemaData; diff --git a/src/onebot/action/extends/SetQQAvatar.ts b/src/onebot/action/extends/SetQQAvatar.ts index 0f149b92..73e26f6d 100644 --- a/src/onebot/action/extends/SetQQAvatar.ts +++ b/src/onebot/action/extends/SetQQAvatar.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName, BaseCheckResult } from '../types'; import * as fs from 'node:fs'; import { checkFileReceived, uri2local } from '@/common/file'; @@ -7,7 +7,7 @@ interface Payload { file: string; } -export default class SetAvatar extends BaseAction { +export default class SetAvatar extends OneBotAction { actionName = ActionName.SetQQAvatar; // 用不着复杂检测 diff --git a/src/onebot/action/extends/ShareContact.ts b/src/onebot/action/extends/ShareContact.ts index 6f72756d..9c9b2c74 100644 --- a/src/onebot/action/extends/ShareContact.ts +++ b/src/onebot/action/extends/ShareContact.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -14,7 +14,7 @@ const SchemaData = { type Payload = FromSchema; -export class SharePeer extends BaseAction { +export class SharePeer extends OneBotAction { actionName = ActionName.SharePeer; payloadSchema = SchemaData; @@ -37,7 +37,7 @@ const SchemaDataGroupEx = { type PayloadGroupEx = FromSchema; -export class ShareGroupEx extends BaseAction { +export class ShareGroupEx extends OneBotAction { actionName = ActionName.ShareGroupEx; payloadSchema = SchemaDataGroupEx; diff --git a/src/onebot/action/extends/TranslateEnWordToZn.ts b/src/onebot/action/extends/TranslateEnWordToZn.ts index 488ccb33..d3353e32 100644 --- a/src/onebot/action/extends/TranslateEnWordToZn.ts +++ b/src/onebot/action/extends/TranslateEnWordToZn.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -15,7 +15,7 @@ const SchemaData = { type Payload = FromSchema; -export class TranslateEnWordToZn extends BaseAction | null> { +export class TranslateEnWordToZn extends OneBotAction | null> { actionName = ActionName.TranslateEnWordToZn; payloadSchema = SchemaData; diff --git a/src/onebot/action/file/GetFile.ts b/src/onebot/action/file/GetFile.ts index 521d82a4..099ea535 100644 --- a/src/onebot/action/file/GetFile.ts +++ b/src/onebot/action/file/GetFile.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import fs from 'fs/promises'; import { FileNapCatOneBotUUID } from '@/common/helper'; import { ActionName } from '../types'; @@ -30,7 +30,7 @@ const GetFileBase_PayloadSchema = { export type GetFilePayload = FromSchema; -export class GetFileBase extends BaseAction { +export class GetFileBase extends OneBotAction { payloadSchema = GetFileBase_PayloadSchema; async _handle(payload: GetFilePayload): Promise { diff --git a/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts b/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts index b2025589..f290bcef 100644 --- a/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts +++ b/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts @@ -1,5 +1,5 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; const SchemaData = { @@ -13,7 +13,7 @@ const SchemaData = { type Payload = FromSchema; -export class CreateGroupFileFolder extends BaseAction { +export class CreateGroupFileFolder extends OneBotAction { actionName = ActionName.GoCQHTTP_CreateGroupFileFolder; payloadSchema = SchemaData; async _handle(payload: Payload) { diff --git a/src/onebot/action/go-cqhttp/DeleteGroupFile.ts b/src/onebot/action/go-cqhttp/DeleteGroupFile.ts index ee287a92..aaeee8c7 100644 --- a/src/onebot/action/go-cqhttp/DeleteGroupFile.ts +++ b/src/onebot/action/go-cqhttp/DeleteGroupFile.ts @@ -1,5 +1,5 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FileNapCatOneBotUUID } from '@/common/helper'; @@ -14,7 +14,7 @@ const SchemaData = { type Payload = FromSchema; -export class DeleteGroupFile extends BaseAction { +export class DeleteGroupFile extends OneBotAction { actionName = ActionName.GOCQHTTP_DeleteGroupFile; payloadSchema = SchemaData; async _handle(payload: Payload) { diff --git a/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts b/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts index be8dbda5..4650815f 100644 --- a/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts +++ b/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts @@ -1,6 +1,6 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { ActionName } from '../types'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; const SchemaData = { type: 'object', @@ -14,7 +14,7 @@ const SchemaData = { type Payload = FromSchema; -export class DeleteGroupFileFolder extends BaseAction { +export class DeleteGroupFileFolder extends OneBotAction { actionName = ActionName.GoCQHTTP_DeleteGroupFileFolder; payloadSchema = SchemaData; async _handle(payload: Payload) { diff --git a/src/onebot/action/go-cqhttp/DownloadFile.ts b/src/onebot/action/go-cqhttp/DownloadFile.ts index c95150d2..6f5732fe 100644 --- a/src/onebot/action/go-cqhttp/DownloadFile.ts +++ b/src/onebot/action/go-cqhttp/DownloadFile.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import fs from 'fs'; import { join as joinPath } from 'node:path'; @@ -28,7 +28,7 @@ const SchemaData = { type Payload = FromSchema; -export default class GoCQHTTPDownloadFile extends BaseAction { +export default class GoCQHTTPDownloadFile extends OneBotAction { actionName = ActionName.GoCQHTTP_DownloadFile; payloadSchema = SchemaData; diff --git a/src/onebot/action/go-cqhttp/GetForwardMsg.ts b/src/onebot/action/go-cqhttp/GetForwardMsg.ts index 7db98ba1..fa201b6f 100644 --- a/src/onebot/action/go-cqhttp/GetForwardMsg.ts +++ b/src/onebot/action/go-cqhttp/GetForwardMsg.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { OB11Message, OB11MessageData, OB11MessageDataType, OB11MessageForward, OB11MessageNodePlain as OB11MessageNode } from '@/onebot'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -16,7 +16,7 @@ const SchemaData = { type Payload = FromSchema; -export class GoCQHTTPGetForwardMsgAction extends BaseAction { +export class GoCQHTTPGetForwardMsgAction extends OneBotAction { actionName = ActionName.GoCQHTTP_GetForwardMsg; payloadSchema = SchemaData; diff --git a/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts b/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts index dd72e1bd..204e9830 100644 --- a/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts +++ b/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { OB11Message } from '@/onebot'; import { ActionName } from '../types'; import { ChatType } from '@/core/entities'; @@ -23,7 +23,7 @@ const SchemaData = { type Payload = FromSchema; -export default class GetFriendMsgHistory extends BaseAction { +export default class GetFriendMsgHistory extends OneBotAction { actionName = ActionName.GetFriendMsgHistory; payloadSchema = SchemaData; diff --git a/src/onebot/action/go-cqhttp/GetGroupAtAllRemain.ts b/src/onebot/action/go-cqhttp/GetGroupAtAllRemain.ts index c95bd2fa..49a2342e 100644 --- a/src/onebot/action/go-cqhttp/GetGroupAtAllRemain.ts +++ b/src/onebot/action/go-cqhttp/GetGroupAtAllRemain.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -11,7 +11,7 @@ const SchemaData = { } as const satisfies JSONSchema; type Payload = FromSchema; -export class GoCQHTTPGetGroupAtAllRemain extends BaseAction { +export class GoCQHTTPGetGroupAtAllRemain extends OneBotAction { actionName = ActionName.GoCQHTTP_GetGroupAtAllRemain; payloadSchema = SchemaData; diff --git a/src/onebot/action/go-cqhttp/GetGroupFileSystemInfo.ts b/src/onebot/action/go-cqhttp/GetGroupFileSystemInfo.ts index 9f819e20..7e8be16a 100644 --- a/src/onebot/action/go-cqhttp/GetGroupFileSystemInfo.ts +++ b/src/onebot/action/go-cqhttp/GetGroupFileSystemInfo.ts @@ -1,5 +1,5 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; const SchemaData = { @@ -12,7 +12,7 @@ const SchemaData = { type Payload = FromSchema; -export class GetGroupFileSystemInfo extends BaseAction; -export class GetGroupFilesByFolder extends BaseAction { +export class GetGroupFilesByFolder extends OneBotAction { actionName = ActionName.GoCQHTTP_GetGroupFilesByFolder; payloadSchema = SchemaData; async _handle(payload: Payload) { diff --git a/src/onebot/action/go-cqhttp/GetGroupHonorInfo.ts b/src/onebot/action/go-cqhttp/GetGroupHonorInfo.ts index bb0bd077..83dcf282 100644 --- a/src/onebot/action/go-cqhttp/GetGroupHonorInfo.ts +++ b/src/onebot/action/go-cqhttp/GetGroupHonorInfo.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { WebHonorType } from '@/core/entities'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -14,7 +14,7 @@ const SchemaData = { // enum是不是有点抽象 type Payload = FromSchema; -export class GetGroupHonorInfo extends BaseAction> { +export class GetGroupHonorInfo extends OneBotAction> { actionName = ActionName.GetGroupHonorInfo; payloadSchema = SchemaData; diff --git a/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts b/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts index 3020a15e..49fe601e 100644 --- a/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts +++ b/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { OB11Message } from '@/onebot'; import { ActionName } from '../types'; import { ChatType, Peer } from '@/core/entities'; @@ -23,7 +23,7 @@ const SchemaData = { type Payload = FromSchema; -export default class GoCQHTTPGetGroupMsgHistory extends BaseAction { +export default class GoCQHTTPGetGroupMsgHistory extends OneBotAction { actionName = ActionName.GoCQHTTP_GetGroupMsgHistory; payloadSchema = SchemaData; diff --git a/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts b/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts index 4ed57ae2..38f4def3 100644 --- a/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts +++ b/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts @@ -1,5 +1,5 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { OB11GroupFile, OB11GroupFileFolder } from '@/onebot'; import { OB11Entities } from '@/onebot/entities'; @@ -15,7 +15,7 @@ const SchemaData = { type Payload = FromSchema; -export class GetGroupRootFiles extends BaseAction { diff --git a/src/onebot/action/go-cqhttp/GetOnlineClient.ts b/src/onebot/action/go-cqhttp/GetOnlineClient.ts index 9a40d33e..473796c3 100644 --- a/src/onebot/action/go-cqhttp/GetOnlineClient.ts +++ b/src/onebot/action/go-cqhttp/GetOnlineClient.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { JSONSchema } from 'json-schema-to-ts'; import { sleep } from '@/common/helper'; @@ -10,7 +10,7 @@ const SchemaData = { }, } as const satisfies JSONSchema; -export class GetOnlineClient extends BaseAction> { +export class GetOnlineClient extends OneBotAction> { actionName = ActionName.GetOnlineClient; async _handle(payload: void) { diff --git a/src/onebot/action/go-cqhttp/GetStrangerInfo.ts b/src/onebot/action/go-cqhttp/GetStrangerInfo.ts index d3b19d3c..9955dd7f 100644 --- a/src/onebot/action/go-cqhttp/GetStrangerInfo.ts +++ b/src/onebot/action/go-cqhttp/GetStrangerInfo.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { OB11User, OB11UserSex } from '@/onebot'; import { OB11Entities } from '@/onebot/entities'; import { ActionName } from '../types'; @@ -15,7 +15,7 @@ const SchemaData = { type Payload = FromSchema; -export default class GoCQHTTPGetStrangerInfo extends BaseAction { +export default class GoCQHTTPGetStrangerInfo extends OneBotAction { actionName = ActionName.GoCQHTTP_GetStrangerInfo; async _handle(payload: Payload): Promise { diff --git a/src/onebot/action/go-cqhttp/GoCQHTTPCheckUrlSafely.ts b/src/onebot/action/go-cqhttp/GoCQHTTPCheckUrlSafely.ts index 7d026d10..2c325f60 100644 --- a/src/onebot/action/go-cqhttp/GoCQHTTPCheckUrlSafely.ts +++ b/src/onebot/action/go-cqhttp/GoCQHTTPCheckUrlSafely.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -11,7 +11,7 @@ const SchemaData = { } as const satisfies JSONSchema; type Payload = FromSchema; -export class GoCQHTTPCheckUrlSafely extends BaseAction { +export class GoCQHTTPCheckUrlSafely extends OneBotAction { actionName = ActionName.GoCQHTTP_CheckUrlSafely; payloadSchema = SchemaData; diff --git a/src/onebot/action/go-cqhttp/GoCQHTTPDeleteFriend.ts b/src/onebot/action/go-cqhttp/GoCQHTTPDeleteFriend.ts index ea1b4c53..615587a1 100644 --- a/src/onebot/action/go-cqhttp/GoCQHTTPDeleteFriend.ts +++ b/src/onebot/action/go-cqhttp/GoCQHTTPDeleteFriend.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -18,7 +18,7 @@ const SchemaData = { } as const satisfies JSONSchema; type Payload = FromSchema; -export class GoCQHTTPDeleteFriend extends BaseAction { +export class GoCQHTTPDeleteFriend extends OneBotAction { actionName = ActionName.GoCQHTTP_DeleteFriend; payloadSchema = SchemaData; diff --git a/src/onebot/action/go-cqhttp/GoCQHTTPGetModelShow.ts b/src/onebot/action/go-cqhttp/GoCQHTTPGetModelShow.ts index 9b442b63..e7c62b7e 100644 --- a/src/onebot/action/go-cqhttp/GoCQHTTPGetModelShow.ts +++ b/src/onebot/action/go-cqhttp/GoCQHTTPGetModelShow.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -10,7 +10,7 @@ const SchemaData = { } as const satisfies JSONSchema; type Payload = FromSchema; -export class GoCQHTTPGetModelShow extends BaseAction { +export class GoCQHTTPGetModelShow extends OneBotAction { actionName = ActionName.GoCQHTTP_GetModelShow; payloadSchema = SchemaData; diff --git a/src/onebot/action/go-cqhttp/GoCQHTTPSetModelShow.ts b/src/onebot/action/go-cqhttp/GoCQHTTPSetModelShow.ts index f50eb5f2..22d63127 100644 --- a/src/onebot/action/go-cqhttp/GoCQHTTPSetModelShow.ts +++ b/src/onebot/action/go-cqhttp/GoCQHTTPSetModelShow.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -9,7 +9,7 @@ const SchemaData = { type Payload = FromSchema; //兼容性代码 -export class GoCQHTTPSetModelShow extends BaseAction { +export class GoCQHTTPSetModelShow extends OneBotAction { actionName = ActionName.GoCQHTTP_SetModelShow; payloadSchema = SchemaData; diff --git a/src/onebot/action/go-cqhttp/QuickAction.ts b/src/onebot/action/go-cqhttp/QuickAction.ts index 191130ed..b423dafa 100644 --- a/src/onebot/action/go-cqhttp/QuickAction.ts +++ b/src/onebot/action/go-cqhttp/QuickAction.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { QuickAction, QuickActionEvent } from '@/onebot/types'; @@ -7,7 +7,7 @@ interface Payload { operation: QuickAction } -export class GoCQHTTPHandleQuickAction extends BaseAction { +export class GoCQHTTPHandleQuickAction extends OneBotAction { actionName = ActionName.GoCQHTTP_HandleQuickAction; async _handle(payload: Payload): Promise { diff --git a/src/onebot/action/go-cqhttp/SendGroupNotice.ts b/src/onebot/action/go-cqhttp/SendGroupNotice.ts index 81dbf9af..790e8899 100644 --- a/src/onebot/action/go-cqhttp/SendGroupNotice.ts +++ b/src/onebot/action/go-cqhttp/SendGroupNotice.ts @@ -1,5 +1,5 @@ import { checkFileReceived, uri2local } from '@/common/file'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { unlink } from 'node:fs'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -21,7 +21,7 @@ const SchemaData = { type Payload = FromSchema; -export class SendGroupNotice extends BaseAction { +export class SendGroupNotice extends OneBotAction { actionName = ActionName.GoCQHTTP_SendGroupNotice; async _handle(payload: Payload) { diff --git a/src/onebot/action/go-cqhttp/SetGroupPortrait.ts b/src/onebot/action/go-cqhttp/SetGroupPortrait.ts index 2fc9e818..80ebcc9e 100644 --- a/src/onebot/action/go-cqhttp/SetGroupPortrait.ts +++ b/src/onebot/action/go-cqhttp/SetGroupPortrait.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName, BaseCheckResult } from '../types'; import * as fs from 'node:fs'; import { checkFileReceived, uri2local } from '@/common/file'; @@ -8,7 +8,7 @@ interface Payload { group_id: number } -export default class SetGroupPortrait extends BaseAction { +export default class SetGroupPortrait extends OneBotAction { actionName = ActionName.SetGroupPortrait; // 用不着复杂检测 diff --git a/src/onebot/action/go-cqhttp/SetQQProfile.ts b/src/onebot/action/go-cqhttp/SetQQProfile.ts index e010d6cc..ba76d82d 100644 --- a/src/onebot/action/go-cqhttp/SetQQProfile.ts +++ b/src/onebot/action/go-cqhttp/SetQQProfile.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -14,7 +14,7 @@ const SchemaData = { type Payload = FromSchema; -export class SetQQProfile extends BaseAction { +export class SetQQProfile extends OneBotAction { actionName = ActionName.SetQQProfile; payloadSchema = SchemaData; diff --git a/src/onebot/action/go-cqhttp/UploadGroupFile.ts b/src/onebot/action/go-cqhttp/UploadGroupFile.ts index 6645ed5e..00486a4c 100644 --- a/src/onebot/action/go-cqhttp/UploadGroupFile.ts +++ b/src/onebot/action/go-cqhttp/UploadGroupFile.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { ChatType, Peer } from '@/core/entities'; import fs from 'fs'; @@ -20,7 +20,7 @@ const SchemaData = { type Payload = FromSchema; -export default class GoCQHTTPUploadGroupFile extends BaseAction { +export default class GoCQHTTPUploadGroupFile extends OneBotAction { actionName = ActionName.GoCQHTTP_UploadGroupFile; payloadSchema = SchemaData; diff --git a/src/onebot/action/go-cqhttp/UploadPrivateFile.ts b/src/onebot/action/go-cqhttp/UploadPrivateFile.ts index dfbaf0cc..9cf3ba0c 100644 --- a/src/onebot/action/go-cqhttp/UploadPrivateFile.ts +++ b/src/onebot/action/go-cqhttp/UploadPrivateFile.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { ChatType, Peer, SendFileElement } from '@/core/entities'; import fs from 'fs'; @@ -19,7 +19,7 @@ const SchemaData = { type Payload = FromSchema; -export default class GoCQHTTPUploadPrivateFile extends BaseAction { +export default class GoCQHTTPUploadPrivateFile extends OneBotAction { actionName = ActionName.GOCQHTTP_UploadPrivateFile; payloadSchema = SchemaData; diff --git a/src/onebot/action/group/DelEssenceMsg.ts b/src/onebot/action/group/DelEssenceMsg.ts index b7f6a0e5..f7dca3af 100644 --- a/src/onebot/action/group/DelEssenceMsg.ts +++ b/src/onebot/action/group/DelEssenceMsg.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; @@ -13,7 +13,7 @@ const SchemaData = { type Payload = FromSchema; -export default class DelEssenceMsg extends BaseAction { +export default class DelEssenceMsg extends OneBotAction { actionName = ActionName.DelEssenceMsg; payloadSchema = SchemaData; diff --git a/src/onebot/action/group/DelGroupNotice.ts b/src/onebot/action/group/DelGroupNotice.ts index de6a262f..2c19eb6f 100644 --- a/src/onebot/action/group/DelGroupNotice.ts +++ b/src/onebot/action/group/DelGroupNotice.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -14,7 +14,7 @@ const SchemaData = { type Payload = FromSchema; -export class DelGroupNotice extends BaseAction { +export class DelGroupNotice extends OneBotAction { actionName = ActionName.DelGroupNotice; payloadSchema = SchemaData; diff --git a/src/onebot/action/group/GetGroupEssence.ts b/src/onebot/action/group/GetGroupEssence.ts index 1895bda1..66d50467 100644 --- a/src/onebot/action/group/GetGroupEssence.ts +++ b/src/onebot/action/group/GetGroupEssence.ts @@ -1,5 +1,5 @@ import { ChatType, Peer } from '@/core'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; @@ -16,7 +16,7 @@ const SchemaData = { type Payload = FromSchema; -export class GetGroupEssence extends BaseAction { +export class GetGroupEssence extends OneBotAction { actionName = ActionName.GoCQHTTP_GetEssenceMsg; payloadSchema = SchemaData; diff --git a/src/onebot/action/group/GetGroupIgnoredNotifies.ts b/src/onebot/action/group/GetGroupIgnoredNotifies.ts index b70895eb..ab077073 100644 --- a/src/onebot/action/group/GetGroupIgnoredNotifies.ts +++ b/src/onebot/action/group/GetGroupIgnoredNotifies.ts @@ -1,5 +1,5 @@ import { GroupNotifyMsgStatus } from '@/core'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -12,7 +12,7 @@ const SchemaData = { type Payload = FromSchema; -export class GetGroupIgnoredNotifies extends BaseAction { +export class GetGroupIgnoredNotifies extends OneBotAction { actionName = ActionName.GetGroupIgnoredNotifies; async _handle(payload: void) { diff --git a/src/onebot/action/group/GetGroupInfo.ts b/src/onebot/action/group/GetGroupInfo.ts index ba00a893..ed958392 100644 --- a/src/onebot/action/group/GetGroupInfo.ts +++ b/src/onebot/action/group/GetGroupInfo.ts @@ -1,6 +1,6 @@ import { OB11Group } from '@/onebot'; import { OB11Entities } from '@/onebot/entities'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -14,7 +14,7 @@ const SchemaData = { type Payload = FromSchema; -class GetGroupInfo extends BaseAction { +class GetGroupInfo extends OneBotAction { actionName = ActionName.GetGroupInfo; payloadSchema = SchemaData; diff --git a/src/onebot/action/group/GetGroupList.ts b/src/onebot/action/group/GetGroupList.ts index 5aee518c..08ce7449 100644 --- a/src/onebot/action/group/GetGroupList.ts +++ b/src/onebot/action/group/GetGroupList.ts @@ -1,6 +1,6 @@ import { OB11Group } from '@/onebot'; import { OB11Entities } from '@/onebot/entities'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; // no_cache get时传字符串 @@ -13,7 +13,7 @@ const SchemaData = { type Payload = FromSchema; -class GetGroupList extends BaseAction { +class GetGroupList extends OneBotAction { actionName = ActionName.GetGroupList; payloadSchema = SchemaData; diff --git a/src/onebot/action/group/GetGroupMemberInfo.ts b/src/onebot/action/group/GetGroupMemberInfo.ts index 3dbf606d..58fc0475 100644 --- a/src/onebot/action/group/GetGroupMemberInfo.ts +++ b/src/onebot/action/group/GetGroupMemberInfo.ts @@ -1,6 +1,6 @@ import { OB11GroupMember } from '@/onebot'; import { OB11Entities } from '@/onebot/entities'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -16,7 +16,7 @@ const SchemaData = { type Payload = FromSchema; -class GetGroupMemberInfo extends BaseAction { +class GetGroupMemberInfo extends OneBotAction { actionName = ActionName.GetGroupMemberInfo; payloadSchema = SchemaData; diff --git a/src/onebot/action/group/GetGroupMemberList.ts b/src/onebot/action/group/GetGroupMemberList.ts index eb4a62a1..751086c2 100644 --- a/src/onebot/action/group/GetGroupMemberList.ts +++ b/src/onebot/action/group/GetGroupMemberList.ts @@ -1,6 +1,6 @@ import { OB11GroupMember } from '@/onebot'; import { OB11Entities } from '@/onebot/entities'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -15,7 +15,7 @@ const SchemaData = { type Payload = FromSchema; -export class GetGroupMemberList extends BaseAction { +export class GetGroupMemberList extends OneBotAction { actionName = ActionName.GetGroupMemberList; payloadSchema = SchemaData; diff --git a/src/onebot/action/group/GetGroupNotice.ts b/src/onebot/action/group/GetGroupNotice.ts index dcadc145..80d04738 100644 --- a/src/onebot/action/group/GetGroupNotice.ts +++ b/src/onebot/action/group/GetGroupNotice.ts @@ -1,5 +1,5 @@ import { WebApiGroupNoticeFeed } from '@/core'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -29,7 +29,7 @@ type Payload = FromSchema; type ApiGroupNotice = GroupNotice & WebApiGroupNoticeFeed; -export class GetGroupNotice extends BaseAction { +export class GetGroupNotice extends OneBotAction { actionName = ActionName.GoCQHTTP_GetGroupNotice; payloadSchema = SchemaData; diff --git a/src/onebot/action/group/GetGroupShutList.ts b/src/onebot/action/group/GetGroupShutList.ts index f7aa70ec..4193428c 100644 --- a/src/onebot/action/group/GetGroupShutList.ts +++ b/src/onebot/action/group/GetGroupShutList.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -12,7 +12,7 @@ const SchemaData = { type Payload = FromSchema; -export class GetGroupShutList extends BaseAction { +export class GetGroupShutList extends OneBotAction { actionName = ActionName.GetGroupShutList; payloadSchema = SchemaData; diff --git a/src/onebot/action/group/SetEssenceMsg.ts b/src/onebot/action/group/SetEssenceMsg.ts index 3fbfe58c..1d9a2149 100644 --- a/src/onebot/action/group/SetEssenceMsg.ts +++ b/src/onebot/action/group/SetEssenceMsg.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; @@ -13,7 +13,7 @@ const SchemaData = { type Payload = FromSchema; -export default class SetEssenceMsg extends BaseAction { +export default class SetEssenceMsg extends OneBotAction { actionName = ActionName.SetEssenceMsg; payloadSchema = SchemaData; diff --git a/src/onebot/action/group/SetGroupAddRequest.ts b/src/onebot/action/group/SetGroupAddRequest.ts index 9efa7280..3a6a65a4 100644 --- a/src/onebot/action/group/SetGroupAddRequest.ts +++ b/src/onebot/action/group/SetGroupAddRequest.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { GroupRequestOperateTypes } from '@/core/entities'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -15,7 +15,7 @@ const SchemaData = { type Payload = FromSchema; -export default class SetGroupAddRequest extends BaseAction { +export default class SetGroupAddRequest extends OneBotAction { actionName = ActionName.SetGroupAddRequest; payloadSchema = SchemaData; diff --git a/src/onebot/action/group/SetGroupAdmin.ts b/src/onebot/action/group/SetGroupAdmin.ts index 3f214036..efa0309f 100644 --- a/src/onebot/action/group/SetGroupAdmin.ts +++ b/src/onebot/action/group/SetGroupAdmin.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { GroupMemberRole } from '@/core/entities'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -15,7 +15,7 @@ const SchemaData = { type Payload = FromSchema; -export default class SetGroupAdmin extends BaseAction { +export default class SetGroupAdmin extends OneBotAction { actionName = ActionName.SetGroupAdmin; payloadSchema = SchemaData; diff --git a/src/onebot/action/group/SetGroupBan.ts b/src/onebot/action/group/SetGroupBan.ts index 57e60dc7..6c9210ec 100644 --- a/src/onebot/action/group/SetGroupBan.ts +++ b/src/onebot/action/group/SetGroupBan.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -14,7 +14,7 @@ const SchemaData = { type Payload = FromSchema; -export default class SetGroupBan extends BaseAction { +export default class SetGroupBan extends OneBotAction { actionName = ActionName.SetGroupBan; payloadSchema = SchemaData; diff --git a/src/onebot/action/group/SetGroupCard.ts b/src/onebot/action/group/SetGroupCard.ts index 248bb9a2..f3e90b00 100644 --- a/src/onebot/action/group/SetGroupCard.ts +++ b/src/onebot/action/group/SetGroupCard.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -14,7 +14,7 @@ const SchemaData = { type Payload = FromSchema; -export default class SetGroupCard extends BaseAction { +export default class SetGroupCard extends OneBotAction { actionName = ActionName.SetGroupCard; payloadSchema = SchemaData; diff --git a/src/onebot/action/group/SetGroupKick.ts b/src/onebot/action/group/SetGroupKick.ts index 8c972a3a..3c8a92d8 100644 --- a/src/onebot/action/group/SetGroupKick.ts +++ b/src/onebot/action/group/SetGroupKick.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -15,7 +15,7 @@ const SchemaData = { type Payload = FromSchema; -export default class SetGroupKick extends BaseAction { +export default class SetGroupKick extends OneBotAction { actionName = ActionName.SetGroupKick; payloadSchema = SchemaData; diff --git a/src/onebot/action/group/SetGroupLeave.ts b/src/onebot/action/group/SetGroupLeave.ts index cade6c1d..13077d22 100644 --- a/src/onebot/action/group/SetGroupLeave.ts +++ b/src/onebot/action/group/SetGroupLeave.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -12,7 +12,7 @@ const SchemaData = { } as const satisfies JSONSchema; type Payload = FromSchema; -export default class SetGroupLeave extends BaseAction { +export default class SetGroupLeave extends OneBotAction { actionName = ActionName.SetGroupLeave; payloadSchema = SchemaData; diff --git a/src/onebot/action/group/SetGroupName.ts b/src/onebot/action/group/SetGroupName.ts index 8da05b07..58eca7a7 100644 --- a/src/onebot/action/group/SetGroupName.ts +++ b/src/onebot/action/group/SetGroupName.ts @@ -1,5 +1,5 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; const SchemaData = { @@ -12,7 +12,7 @@ const SchemaData = { } as const satisfies JSONSchema; type Payload = FromSchema; -export default class SetGroupName extends BaseAction { +export default class SetGroupName extends OneBotAction { actionName = ActionName.SetGroupName; payloadSchema = SchemaData; diff --git a/src/onebot/action/group/SetGroupWholeBan.ts b/src/onebot/action/group/SetGroupWholeBan.ts index 87d00332..7df00a0c 100644 --- a/src/onebot/action/group/SetGroupWholeBan.ts +++ b/src/onebot/action/group/SetGroupWholeBan.ts @@ -1,5 +1,5 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; const SchemaData = { @@ -13,7 +13,7 @@ const SchemaData = { type Payload = FromSchema; -export default class SetGroupWholeBan extends BaseAction { +export default class SetGroupWholeBan extends OneBotAction { actionName = ActionName.SetGroupWholeBan; payloadSchema = SchemaData; diff --git a/src/onebot/action/guild/GetGuildList.ts b/src/onebot/action/guild/GetGuildList.ts index cfba4ad3..1195ea3e 100644 --- a/src/onebot/action/guild/GetGuildList.ts +++ b/src/onebot/action/guild/GetGuildList.ts @@ -1,7 +1,7 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; -export default class GetGuildList extends BaseAction { +export default class GetGuildList extends OneBotAction { actionName = ActionName.GetGuildList; async _handle(payload: null): Promise { diff --git a/src/onebot/action/guild/GetGuildProfile.ts b/src/onebot/action/guild/GetGuildProfile.ts index 431fb561..5a623388 100644 --- a/src/onebot/action/guild/GetGuildProfile.ts +++ b/src/onebot/action/guild/GetGuildProfile.ts @@ -1,7 +1,7 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; -export default class GetGuildProfile extends BaseAction { +export default class GetGuildProfile extends OneBotAction { actionName = ActionName.GetGuildProfile; async _handle(payload: null): Promise { diff --git a/src/onebot/action/index.ts b/src/onebot/action/index.ts index ecdd2418..edbf8321 100644 --- a/src/onebot/action/index.ts +++ b/src/onebot/action/index.ts @@ -8,7 +8,7 @@ import SendGroupMsg from './group/SendGroupMsg'; import SendPrivateMsg from './msg/SendPrivateMsg'; import SendMsg from './msg/SendMsg'; import DeleteMsg from './msg/DeleteMsg'; -import BaseAction from './BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import GetVersionInfo from './system/GetVersionInfo'; import CanSendRecord from './system/CanSendRecord'; import CanSendImage from './system/CanSendImage'; @@ -104,7 +104,7 @@ import { SendGroupAiRecord } from "@/onebot/action/group/SendGroupAiRecord"; import { GetAiCharacters } from "@/onebot/action/extends/GetAiCharacters"; -export type ActionMap = Map>; +export type ActionMap = Map>; export function createActionMap(obContext: NapCatOneBot11Adapter, core: NapCatCore): ActionMap { diff --git a/src/onebot/action/msg/DeleteMsg.ts b/src/onebot/action/msg/DeleteMsg.ts index d4c314d9..c3df9a76 100644 --- a/src/onebot/action/msg/DeleteMsg.ts +++ b/src/onebot/action/msg/DeleteMsg.ts @@ -1,5 +1,5 @@ import { ActionName } from '../types'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; @@ -18,7 +18,7 @@ const SchemaData = { type Payload = FromSchema; -class DeleteMsg extends BaseAction { +class DeleteMsg extends OneBotAction { actionName = ActionName.DeleteMsg; payloadSchema = SchemaData; diff --git a/src/onebot/action/msg/ForwardSingleMsg.ts b/src/onebot/action/msg/ForwardSingleMsg.ts index 2a2beef9..4a2ba50d 100644 --- a/src/onebot/action/msg/ForwardSingleMsg.ts +++ b/src/onebot/action/msg/ForwardSingleMsg.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ChatType, Peer } from '@/core/entities'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -16,7 +16,7 @@ const SchemaData = { type Payload = FromSchema; -class ForwardSingleMsg extends BaseAction { +class ForwardSingleMsg extends OneBotAction { protected async getTargetPeer(payload: Payload): Promise { if (payload.user_id) { const peerUid = await this.core.apis.UserApi.getUidByUinV2(payload.user_id.toString()); diff --git a/src/onebot/action/msg/GetMsg.ts b/src/onebot/action/msg/GetMsg.ts index f5a85814..c0fed811 100644 --- a/src/onebot/action/msg/GetMsg.ts +++ b/src/onebot/action/msg/GetMsg.ts @@ -1,5 +1,5 @@ import { OB11Message } from '@/onebot'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; @@ -19,7 +19,7 @@ const SchemaData = { type Payload = FromSchema; -class GetMsg extends BaseAction { +class GetMsg extends OneBotAction { actionName = ActionName.GetMsg; payloadSchema = SchemaData; diff --git a/src/onebot/action/msg/MarkMsgAsRead.ts b/src/onebot/action/msg/MarkMsgAsRead.ts index 188d80e0..d63f1e00 100644 --- a/src/onebot/action/msg/MarkMsgAsRead.ts +++ b/src/onebot/action/msg/MarkMsgAsRead.ts @@ -1,6 +1,6 @@ import { ChatType, Peer } from '@/core/entities'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { MessageUnique } from '@/common/message-unique'; @@ -15,7 +15,7 @@ const SchemaData = { type PlayloadType = FromSchema; -class MarkMsgAsRead extends BaseAction { +class MarkMsgAsRead extends OneBotAction { async getPeer(payload: PlayloadType): Promise { if (payload.message_id) { const s_peer = MessageUnique.getMsgIdAndPeerByShortId(+payload.message_id)?.Peer; @@ -65,7 +65,7 @@ export class GoCQHTTPMarkMsgAsRead extends MarkMsgAsRead { actionName = ActionName.GoCQHTTP_MarkMsgAsRead; } -export class MarkAllMsgAsRead extends BaseAction { +export class MarkAllMsgAsRead extends OneBotAction { actionName = ActionName._MarkAllMsgAsRead; async _handle(): Promise { diff --git a/src/onebot/action/msg/SendMsg.ts b/src/onebot/action/msg/SendMsg.ts index 58fbc807..9b1dccf3 100644 --- a/src/onebot/action/msg/SendMsg.ts +++ b/src/onebot/action/msg/SendMsg.ts @@ -10,7 +10,7 @@ import { ActionName, BaseCheckResult } from '@/onebot/action/types'; import { decodeCQCode } from '@/onebot/cqcode'; import { MessageUnique } from '@/common/message-unique'; import { ChatType, ElementType, NapCatCore, Peer, RawMessage, SendArkElement, SendMessageElement } from '@/core'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ForwardMsgBuilder } from "@/common/forward-msg-builder"; import { stringifyWithBigInt } from "@/common/helper"; import { PacketMsg } from "@/core/packet/message/message"; @@ -88,7 +88,7 @@ function getSpecialMsgNum(payload: OB11PostSendMsg, msgType: OB11MessageDataType return 0; } -export class SendMsg extends BaseAction { +export class SendMsg extends OneBotAction { actionName = ActionName.SendMsg; contextMode = ContextMode.Normal; diff --git a/src/onebot/action/msg/SetMsgEmojiLike.ts b/src/onebot/action/msg/SetMsgEmojiLike.ts index 065538f0..e0e9305b 100644 --- a/src/onebot/action/msg/SetMsgEmojiLike.ts +++ b/src/onebot/action/msg/SetMsgEmojiLike.ts @@ -1,5 +1,5 @@ import { ActionName } from '../types'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; @@ -15,7 +15,7 @@ const SchemaData = { type Payload = FromSchema; -export class SetMsgEmojiLike extends BaseAction { +export class SetMsgEmojiLike extends OneBotAction { actionName = ActionName.SetMsgEmojiLike; payloadSchema = SchemaData; diff --git a/src/onebot/action/packet/GetPacketStatus.ts b/src/onebot/action/packet/GetPacketStatus.ts index 63c3020e..13359864 100644 --- a/src/onebot/action/packet/GetPacketStatus.ts +++ b/src/onebot/action/packet/GetPacketStatus.ts @@ -1,8 +1,8 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName, BaseCheckResult } from '../types'; -export abstract class GetPacketStatusDepends extends BaseAction { +export abstract class GetPacketStatusDepends extends OneBotAction { actionName = ActionName.GetPacketStatus; protected async check(payload: PT): Promise{ diff --git a/src/onebot/action/system/CanSendRecord.ts b/src/onebot/action/system/CanSendRecord.ts index 6e17abe7..ab19c99d 100644 --- a/src/onebot/action/system/CanSendRecord.ts +++ b/src/onebot/action/system/CanSendRecord.ts @@ -1,11 +1,11 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; interface ReturnType { yes: boolean; } -export default class CanSendRecord extends BaseAction { +export default class CanSendRecord extends OneBotAction { actionName = ActionName.CanSendRecord; async _handle(_payload: void): Promise { diff --git a/src/onebot/action/system/GetCSRF.ts b/src/onebot/action/system/GetCSRF.ts index 68945adf..8f44b327 100644 --- a/src/onebot/action/system/GetCSRF.ts +++ b/src/onebot/action/system/GetCSRF.ts @@ -1,7 +1,7 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; -export class GetCSRF extends BaseAction { +export class GetCSRF extends OneBotAction { actionName = ActionName.GetCSRF; async _handle(payload: any) { diff --git a/src/onebot/action/system/GetCredentials.ts b/src/onebot/action/system/GetCredentials.ts index 96293905..4a04a468 100644 --- a/src/onebot/action/system/GetCredentials.ts +++ b/src/onebot/action/system/GetCredentials.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -17,7 +17,7 @@ const SchemaData = { type Payload = FromSchema; -export class GetCredentials extends BaseAction { +export class GetCredentials extends OneBotAction { actionName = ActionName.GetCredentials; payloadSchema = SchemaData; diff --git a/src/onebot/action/system/GetLoginInfo.ts b/src/onebot/action/system/GetLoginInfo.ts index b9ca26f9..d617824d 100644 --- a/src/onebot/action/system/GetLoginInfo.ts +++ b/src/onebot/action/system/GetLoginInfo.ts @@ -1,9 +1,9 @@ import { OB11User } from '@/onebot'; import { OB11Entities } from '@/onebot/entities'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; -class GetLoginInfo extends BaseAction { +class GetLoginInfo extends OneBotAction { actionName = ActionName.GetLoginInfo; async _handle(payload: null) { diff --git a/src/onebot/action/system/GetStatus.ts b/src/onebot/action/system/GetStatus.ts index e543b8f6..3de17181 100644 --- a/src/onebot/action/system/GetStatus.ts +++ b/src/onebot/action/system/GetStatus.ts @@ -1,7 +1,7 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; -export default class GetStatus extends BaseAction { +export default class GetStatus extends OneBotAction { actionName = ActionName.GetStatus; async _handle(payload: any): Promise { diff --git a/src/onebot/action/system/GetSystemMsg.ts b/src/onebot/action/system/GetSystemMsg.ts index cceb2477..2fef4a38 100644 --- a/src/onebot/action/system/GetSystemMsg.ts +++ b/src/onebot/action/system/GetSystemMsg.ts @@ -1,5 +1,5 @@ import { GroupNotifyMsgStatus } from '@/core'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -12,7 +12,7 @@ const SchemaData = { type Payload = FromSchema; -export class GetGroupSystemMsg extends BaseAction { +export class GetGroupSystemMsg extends OneBotAction { actionName = ActionName.GetGroupSystemMsg; async _handle(payload: void) { diff --git a/src/onebot/action/system/GetVersionInfo.ts b/src/onebot/action/system/GetVersionInfo.ts index db559554..51541b07 100644 --- a/src/onebot/action/system/GetVersionInfo.ts +++ b/src/onebot/action/system/GetVersionInfo.ts @@ -1,9 +1,9 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { napCatVersion } from '@/common/version'; -export default class GetVersionInfo extends BaseAction { +export default class GetVersionInfo extends OneBotAction { actionName = ActionName.GetVersionInfo; async _handle(payload: any): Promise { diff --git a/src/onebot/action/user/GetCookies.ts b/src/onebot/action/user/GetCookies.ts index 3d8c244a..32c9edc8 100644 --- a/src/onebot/action/user/GetCookies.ts +++ b/src/onebot/action/user/GetCookies.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -17,7 +17,7 @@ const SchemaData = { type Payload = FromSchema; -export class GetCookies extends BaseAction { +export class GetCookies extends OneBotAction { actionName = ActionName.GetCookies; payloadSchema = SchemaData; diff --git a/src/onebot/action/user/GetFriendList.ts b/src/onebot/action/user/GetFriendList.ts index f305a11d..ac1e6d3e 100644 --- a/src/onebot/action/user/GetFriendList.ts +++ b/src/onebot/action/user/GetFriendList.ts @@ -1,6 +1,6 @@ import { OB11User } from '@/onebot'; import { OB11Entities } from '@/onebot/entities'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -13,7 +13,7 @@ const SchemaData = { } as const satisfies JSONSchema; type Payload = FromSchema; -export default class GetFriendList extends BaseAction { +export default class GetFriendList extends OneBotAction { actionName = ActionName.GetFriendList; payloadSchema = SchemaData; diff --git a/src/onebot/action/user/GetRecentContact.ts b/src/onebot/action/user/GetRecentContact.ts index 05df160a..1cf5e6a1 100644 --- a/src/onebot/action/user/GetRecentContact.ts +++ b/src/onebot/action/user/GetRecentContact.ts @@ -1,5 +1,5 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { AdapterConfigWrap } from '@/onebot/config/config'; @@ -12,7 +12,7 @@ const SchemaData = { type Payload = FromSchema; -export default class GetRecentContact extends BaseAction { +export default class GetRecentContact extends OneBotAction { actionName = ActionName.GetRecentContact; payloadSchema = SchemaData; diff --git a/src/onebot/action/user/SendLike.ts b/src/onebot/action/user/SendLike.ts index e63409b4..1d8459d0 100644 --- a/src/onebot/action/user/SendLike.ts +++ b/src/onebot/action/user/SendLike.ts @@ -1,4 +1,4 @@ -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -13,7 +13,7 @@ const SchemaData = { type Payload = FromSchema; -export default class SendLike extends BaseAction { +export default class SendLike extends OneBotAction { actionName = ActionName.SendLike; payloadSchema = SchemaData; diff --git a/src/onebot/action/user/SetFriendAddRequest.ts b/src/onebot/action/user/SetFriendAddRequest.ts index a06f0fb2..4e39ed84 100644 --- a/src/onebot/action/user/SetFriendAddRequest.ts +++ b/src/onebot/action/user/SetFriendAddRequest.ts @@ -1,5 +1,5 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -import BaseAction from '../BaseAction'; +import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; const SchemaData = { @@ -14,7 +14,7 @@ const SchemaData = { type Payload = FromSchema; -export default class SetFriendAddRequest extends BaseAction { +export default class SetFriendAddRequest extends OneBotAction { actionName = ActionName.SetFriendAddRequest; payloadSchema = SchemaData; diff --git a/src/onebot/network/active-websocket.ts b/src/onebot/network/active-websocket.ts index ce2a1130..9b477545 100644 --- a/src/onebot/network/active-websocket.ts +++ b/src/onebot/network/active-websocket.ts @@ -3,7 +3,7 @@ import { WebSocket } from 'ws'; import { OB11HeartbeatEvent } from '../event/meta/OB11HeartbeatEvent'; import { NapCatCore } from '@/core'; import { ActionName } from '@/onebot/action/types'; -import { OB11Response } from '@/onebot/action/OB11Response'; +import { OB11Response } from '@/onebot/action/OneBotAction'; import { LogWrapper } from '@/common/log'; import { ActionMap } from '@/onebot/action'; import { LifeCycleSubType, OB11LifeCycleEvent } from '../event/meta/OB11LifeCycleEvent'; diff --git a/src/onebot/network/passive-http.ts b/src/onebot/network/passive-http.ts index c1ca6afc..08f47cd7 100644 --- a/src/onebot/network/passive-http.ts +++ b/src/onebot/network/passive-http.ts @@ -2,7 +2,7 @@ import { IOB11NetworkAdapter, OB11NetworkReloadType } from './index'; import express, { Express, Request, Response } from 'express'; import http from 'http'; import { NapCatCore } from '@/core'; -import { OB11Response } from '../action/OB11Response'; +import { OB11Response } from '@/onebot/action/OneBotAction'; import { ActionMap } from '@/onebot/action'; import cors from 'cors'; import { HttpServerConfig } from '../config/config'; diff --git a/src/onebot/network/passive-websocket.ts b/src/onebot/network/passive-websocket.ts index 1e47cc02..4d60cf24 100644 --- a/src/onebot/network/passive-websocket.ts +++ b/src/onebot/network/passive-websocket.ts @@ -2,7 +2,7 @@ import { IOB11NetworkAdapter, OB11EmitEventContent, OB11NetworkReloadType } from import urlParse from 'url'; import { WebSocket, WebSocketServer } from 'ws'; import { Mutex } from 'async-mutex'; -import { OB11Response } from '../action/OB11Response'; +import { OB11Response } from '@/onebot/action/OneBotAction'; import { ActionName } from '../action/types'; import { NapCatCore } from '@/core'; import { LogWrapper } from '@/common/log'; From 12cb500818ceb2e5928c21f76a6330ede33fc8a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Tue, 19 Nov 2024 12:55:42 +0800 Subject: [PATCH 007/418] refactor: rename OB11BaseEvent --- src/onebot/api/msg.ts | 2 +- src/onebot/event/{OB11BaseEvent.ts => OneBotEvent.ts} | 2 +- src/onebot/event/message/OB11BaseMessageEvent.ts | 4 ++-- src/onebot/event/meta/OB11BaseMetaEvent.ts | 4 ++-- src/onebot/event/notice/OB11BaseNoticeEvent.ts | 4 ++-- src/onebot/event/request/OB11FriendRequest.ts | 2 +- src/onebot/event/request/OB11GroupRequest.ts | 2 +- src/onebot/network/index.ts | 6 +++--- src/onebot/types/message.ts | 2 +- 9 files changed, 14 insertions(+), 14 deletions(-) rename src/onebot/event/{OB11BaseEvent.ts => OneBotEvent.ts} (91%) diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 85299bb5..558d4e7c 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -20,7 +20,7 @@ import { import faceConfig from '@/core/external/face_config.json'; import { NapCatOneBot11Adapter, OB11Message, OB11MessageData, OB11MessageDataType, OB11MessageFileBase, } from '@/onebot'; import { OB11Entities } from '@/onebot/entities'; -import { EventType } from '@/onebot/event/OB11BaseEvent'; +import { EventType } from '@/onebot/event/OneBotEvent'; import { encodeCQCode } from '@/onebot/cqcode'; import { uri2local } from '@/common/file'; import { RequestUtil } from '@/common/request'; diff --git a/src/onebot/event/OB11BaseEvent.ts b/src/onebot/event/OneBotEvent.ts similarity index 91% rename from src/onebot/event/OB11BaseEvent.ts rename to src/onebot/event/OneBotEvent.ts index 1ae7d7b1..713d38c9 100644 --- a/src/onebot/event/OB11BaseEvent.ts +++ b/src/onebot/event/OneBotEvent.ts @@ -8,7 +8,7 @@ export enum EventType { MESSAGE_SENT = 'message_sent', } -export abstract class OB11BaseEvent { +export abstract class OneBotEvent { time = Math.floor(Date.now() / 1000); self_id: number; abstract post_type: EventType; diff --git a/src/onebot/event/message/OB11BaseMessageEvent.ts b/src/onebot/event/message/OB11BaseMessageEvent.ts index 63960ef3..89bfed05 100644 --- a/src/onebot/event/message/OB11BaseMessageEvent.ts +++ b/src/onebot/event/message/OB11BaseMessageEvent.ts @@ -1,5 +1,5 @@ -import { EventType, OB11BaseEvent } from '../OB11BaseEvent'; +import { EventType, OneBotEvent } from '../OneBotEvent'; -export abstract class OB11BaseMessageEvent extends OB11BaseEvent { +export abstract class OB11BaseMessageEvent extends OneBotEvent { post_type = EventType.MESSAGE; } \ No newline at end of file diff --git a/src/onebot/event/meta/OB11BaseMetaEvent.ts b/src/onebot/event/meta/OB11BaseMetaEvent.ts index 26386a20..015a5958 100644 --- a/src/onebot/event/meta/OB11BaseMetaEvent.ts +++ b/src/onebot/event/meta/OB11BaseMetaEvent.ts @@ -1,6 +1,6 @@ -import { EventType, OB11BaseEvent } from '../OB11BaseEvent'; +import { EventType, OneBotEvent } from '@/onebot/event/OneBotEvent'; -export abstract class OB11BaseMetaEvent extends OB11BaseEvent { +export abstract class OB11BaseMetaEvent extends OneBotEvent { post_type = EventType.META; abstract meta_event_type: string; } diff --git a/src/onebot/event/notice/OB11BaseNoticeEvent.ts b/src/onebot/event/notice/OB11BaseNoticeEvent.ts index 982d7448..d8e34f78 100644 --- a/src/onebot/event/notice/OB11BaseNoticeEvent.ts +++ b/src/onebot/event/notice/OB11BaseNoticeEvent.ts @@ -1,5 +1,5 @@ -import { EventType, OB11BaseEvent } from '../OB11BaseEvent'; +import { EventType, OneBotEvent } from '@/onebot/event/OneBotEvent'; -export abstract class OB11BaseNoticeEvent extends OB11BaseEvent { +export abstract class OB11BaseNoticeEvent extends OneBotEvent { post_type = EventType.NOTICE; } \ No newline at end of file diff --git a/src/onebot/event/request/OB11FriendRequest.ts b/src/onebot/event/request/OB11FriendRequest.ts index 0f40ecdf..41f3505a 100644 --- a/src/onebot/event/request/OB11FriendRequest.ts +++ b/src/onebot/event/request/OB11FriendRequest.ts @@ -1,5 +1,5 @@ import { OB11BaseNoticeEvent } from '../notice/OB11BaseNoticeEvent'; -import { EventType } from '../OB11BaseEvent'; +import { EventType } from '../OneBotEvent'; import { NapCatCore } from '@/core'; export class OB11FriendRequestEvent extends OB11BaseNoticeEvent { diff --git a/src/onebot/event/request/OB11GroupRequest.ts b/src/onebot/event/request/OB11GroupRequest.ts index d5ee9465..1576be0e 100644 --- a/src/onebot/event/request/OB11GroupRequest.ts +++ b/src/onebot/event/request/OB11GroupRequest.ts @@ -1,5 +1,5 @@ import { OB11GroupNoticeEvent } from '../notice/OB11GroupNoticeEvent'; -import { EventType } from '../OB11BaseEvent'; +import { EventType } from '../OneBotEvent'; import { NapCatCore } from '@/core'; export class OB11GroupRequestEvent extends OB11GroupNoticeEvent { diff --git a/src/onebot/network/index.ts b/src/onebot/network/index.ts index dc8b8b67..be019fd7 100644 --- a/src/onebot/network/index.ts +++ b/src/onebot/network/index.ts @@ -1,9 +1,9 @@ -import { OB11BaseEvent } from '@/onebot/event/OB11BaseEvent'; +import { OneBotEvent } from '@/onebot/event/OneBotEvent'; import { OB11Message } from '@/onebot'; import { ActionMap } from '@/onebot/action'; import { NetworkConfigAdapter } from '../config/config'; -export type OB11EmitEventContent = OB11BaseEvent | OB11Message; +export type OB11EmitEventContent = OneBotEvent | OB11Message; export enum OB11NetworkReloadType { Normal = 0, ConfigChange = 1, @@ -16,7 +16,7 @@ export interface IOB11NetworkAdapter { name: string; isEnable: boolean; config: NetworkConfigAdapter; - + onEvent(event: T): void; open(): void | Promise; diff --git a/src/onebot/types/message.ts b/src/onebot/types/message.ts index c97357fe..fe4e26e4 100644 --- a/src/onebot/types/message.ts +++ b/src/onebot/types/message.ts @@ -1,5 +1,5 @@ import { OB11Sender } from './entity'; -import { EventType } from '@/onebot/event/OB11BaseEvent'; +import { EventType } from '@/onebot/event/OneBotEvent'; import { CustomMusicSignPostData, IdMusicSignPostData, PicSubType, RawMessage } from '@/core'; export enum OB11MessageType { From 68e86b07c78e721b460df53773eceddd34c5bdbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Tue, 19 Nov 2024 16:29:33 +0800 Subject: [PATCH 008/418] fix: #543 --- src/onebot/index.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/onebot/index.ts b/src/onebot/index.ts index ca86f059..5b99d993 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -577,15 +577,16 @@ export class NapCatOneBot11Adapter { private createMsgMap(network: Array, ob11Msg: any, isSelfMsg: boolean, message: RawMessage): Map { const msgMap: Map = new Map(); network.filter(e => e.enable).forEach(e => { + if (isSelfMsg) { + ob11Msg.stringMsg.target_id = parseInt(message.peerUin); + ob11Msg.arrayMsg.target_id = parseInt(message.peerUin); + } if (e.messagePostFormat == 'string') { msgMap.set(e.name, structuredClone(ob11Msg.stringMsg)); } else { msgMap.set(e.name, structuredClone(ob11Msg.arrayMsg)); } - if (isSelfMsg) { - ob11Msg.stringMsg.target_id = parseInt(message.peerUin); - ob11Msg.arrayMsg.target_id = parseInt(message.peerUin); - } + }); return msgMap; } From 48b648b0fb0ce07e0b213ccb3dbd2f6a04144a2a Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Tue, 19 Nov 2024 08:30:06 +0000 Subject: [PATCH 009/418] release: v4.17 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index d00fb10e..da4ae0fb 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.1.6", + "version": "4.17", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 6c8e4308..c5ba55da 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.1.6", + "version": "4.17", "scripts": { "build:framework": "npm run build:webui && vite build --mode framework", "build:shell": "npm run build:webui && vite build --mode shell", diff --git a/src/common/version.ts b/src/common/version.ts index f8e25710..4ef7656e 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.1.6'; +export const napCatVersion = '4.17'; From e42fbea918b7e5e0efd5bbcda8cfd732a31dccad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Tue, 19 Nov 2024 17:58:43 +0800 Subject: [PATCH 010/418] =?UTF-8?q?feat:=20=E6=89=A9=E5=B1=95rkey=E6=94=AF?= =?UTF-8?q?=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/apis/file.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index 5954b657..fda52bd4 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -36,7 +36,7 @@ export class NTQQFileApi { constructor(context: InstanceContext, core: NapCatCore) { this.context = context; this.core = core; - this.rkeyManager = new RkeyManager(['https://llob.linyuchen.net/rkey', 'http://napcat-sign.wumiao.wang:2082/rkey'], this.context.logger); + this.rkeyManager = new RkeyManager(['https://rkey.napneko.icu/rkeys', 'https://llob.linyuchen.net/rkey', 'http://napcat-sign.wumiao.wang:2082/rkey'], this.context.logger); } async copyFile(filePath: string, destPath: string) { @@ -300,18 +300,18 @@ export class NTQQFileApi { element.elementType === ElementType.FILE ) { switch (element.elementType) { - case ElementType.PIC: + case ElementType.PIC: element.picElement!.sourcePath = elementResults[elementIndex]; - break; - case ElementType.VIDEO: + break; + case ElementType.VIDEO: element.videoElement!.filePath = elementResults[elementIndex]; - break; - case ElementType.PTT: + break; + case ElementType.PTT: element.pttElement!.filePath = elementResults[elementIndex]; - break; - case ElementType.FILE: + break; + case ElementType.FILE: element.fileElement!.filePath = elementResults[elementIndex]; - break; + break; } elementIndex++; } From 4d4b1ad26c4b1e6403df2568c6567dd280e54157 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Tue, 19 Nov 2024 18:44:56 +0800 Subject: [PATCH 011/418] fix: #543 --- src/onebot/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/onebot/index.ts b/src/onebot/index.ts index 5b99d993..1fb7264b 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -565,7 +565,7 @@ export class NapCatOneBot11Adapter { this.context.logger.logError('constructMessage error: ', e); } } - + private isSelfMessage(ob11Msg: { stringMsg: OB11Message; arrayMsg: OB11Message; @@ -577,7 +577,7 @@ export class NapCatOneBot11Adapter { private createMsgMap(network: Array, ob11Msg: any, isSelfMsg: boolean, message: RawMessage): Map { const msgMap: Map = new Map(); network.filter(e => e.enable).forEach(e => { - if (isSelfMsg) { + if (isSelfMsg || message.chatType !== ChatType.KCHATTYPEGROUP) { ob11Msg.stringMsg.target_id = parseInt(message.peerUin); ob11Msg.arrayMsg.target_id = parseInt(message.peerUin); } From 3a6748ae377f2e2766a5078c42d2e030e06758fa Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Tue, 19 Nov 2024 10:45:26 +0000 Subject: [PATCH 012/418] release: v4.1.8 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index da4ae0fb..5ba10cf4 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.17", + "version": "4.1.8", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index c5ba55da..aa199b37 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.17", + "version": "4.1.8", "scripts": { "build:framework": "npm run build:webui && vite build --mode framework", "build:shell": "npm run build:webui && vite build --mode shell", diff --git a/src/common/version.ts b/src/common/version.ts index 4ef7656e..eb557214 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.17'; +export const napCatVersion = '4.1.8'; From 648faedca6401fe2841d8bcd78d3ea76ce0debdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 20 Nov 2024 10:16:41 +0800 Subject: [PATCH 013/418] fix: #544 --- src/core/apis/file.ts | 2 +- src/onebot/config/config.ts | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index fda52bd4..97f8c304 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -107,7 +107,7 @@ export class NTQQFileApi { }; } - async createValidSendPicElement(context: MessageContext, picPath: string, summary: string = '', subType: 0 | 1 = 0,): Promise { + async createValidSendPicElement(context: MessageContext, picPath: string, summary: string = '', subType: 0 | 1 = 0): Promise { const { md5, fileName, path, fileSize } = await this.core.apis.FileApi.uploadFile(picPath, ElementType.PIC, subType); if (fileSize === 0) { throw new Error('文件异常,大小为0'); diff --git a/src/onebot/config/config.ts b/src/onebot/config/config.ts index 00e6d55c..2a70dea0 100644 --- a/src/onebot/config/config.ts +++ b/src/onebot/config/config.ts @@ -149,6 +149,9 @@ export function mergeOneBotConfigs( if (userConfig.musicSignUrl !== undefined) { mergedConfig.musicSignUrl = userConfig.musicSignUrl; } + if(userConfig.enableLocalFile2Url !== undefined) { + mergedConfig.enableLocalFile2Url = userConfig.enableLocalFile2Url; + } return mergedConfig; } From 21ca13789e6e616797b1b11b4d1c13d18caaa15b Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Wed, 20 Nov 2024 02:18:14 +0000 Subject: [PATCH 014/418] release: v4.1.9 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 5ba10cf4..f441c193 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.1.8", + "version": "4.1.9", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index aa199b37..7385fe64 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.1.8", + "version": "4.1.9", "scripts": { "build:framework": "npm run build:webui && vite build --mode framework", "build:shell": "npm run build:webui && vite build --mode shell", diff --git a/src/common/version.ts b/src/common/version.ts index eb557214..5c433a57 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.1.8'; +export const napCatVersion = '4.1.9'; From f44f6fd1e9f1fce7af98afbf126c6b8c47dede21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 20 Nov 2024 10:19:43 +0800 Subject: [PATCH 015/418] =?UTF-8?q?fix:=20=E6=96=87=E4=BB=B6=E5=90=8E?= =?UTF-8?q?=E6=B8=85=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/onebot/api/msg.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 558d4e7c..90e8141d 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -867,9 +867,11 @@ export class OneBotMsgApi { guildId: '', peerUid: peer.peerUid, }, returnMsg.msgId); - deleteAfterSentFiles.forEach(file => { - fsPromise.unlink(file).then().catch(e => this.core.context.logger.logError.bind(this.core.context.logger)('发送消息删除文件失败', e)); - }); + setTimeout(() => { + deleteAfterSentFiles.forEach(file => { + fsPromise.unlink(file).then().catch(e => this.core.context.logger.logError.bind(this.core.context.logger)('发送消息删除文件失败', e)); + }); + }, 60000); return returnMsg; } From d5f492775ef101ecd8c0e294341a6fc75698d1b2 Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Wed, 20 Nov 2024 02:20:35 +0000 Subject: [PATCH 016/418] release: v4.1.11 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index f441c193..e870b7a8 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.1.9", + "version": "4.1.11", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 7385fe64..eb768689 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.1.9", + "version": "4.1.11", "scripts": { "build:framework": "npm run build:webui && vite build --mode framework", "build:shell": "npm run build:webui && vite build --mode shell", diff --git a/src/common/version.ts b/src/common/version.ts index 5c433a57..637582a0 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.1.9'; +export const napCatVersion = '4.1.11'; From 16195ca52bda4546766c68d540c185b3d4f469fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 20 Nov 2024 12:21:45 +0800 Subject: [PATCH 017/418] fix: old version handle --- src/core/apis/file.ts | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index 97f8c304..6a3ee550 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -412,15 +412,17 @@ export class NTQQFileApi { } const url: string = element.originImageUrl ?? ''; + const md5HexStr = element.md5HexStr; const fileMd5 = element.md5HexStr; - - if (url) { - const parsedUrl = new URL(IMAGE_HTTP_HOST + url); + const parsedUrl = new URL(IMAGE_HTTP_HOST + url); + const imageAppid = parsedUrl.searchParams.get('appid'); + const isNTV2 = imageAppid && ['1406', '1407'].includes(imageAppid); + const imageFileId = parsedUrl.searchParams.get('fileid'); + if (url && isNTV2 && imageFileId) { const rkeyData = await this.getRkeyData(); - return this.getImageUrlFromParsedUrl(parsedUrl, rkeyData); + return this.getImageUrlFromParsedUrl(imageFileId, imageAppid, rkeyData); } - return this.getImageUrlFromMd5(fileMd5, md5HexStr); } @@ -462,19 +464,12 @@ export class NTQQFileApi { return rkeyData; } - private getImageUrlFromParsedUrl(parsedUrl: URL, rkeyData: any): string { - const imageAppid = parsedUrl.searchParams.get('appid'); - const isNTV2 = imageAppid && ['1406', '1407'].includes(imageAppid); - const imageFileId = parsedUrl.searchParams.get('fileid'); - if (isNTV2 && rkeyData.online_rkey) { - const rkey = imageAppid === '1406' ? rkeyData.private_rkey : rkeyData.group_rkey; - return IMAGE_HTTP_HOST_NT + `/download?appid=${imageAppid}&fileid=${imageFileId}&rkey=${rkey}`; - } else if (isNTV2 && imageFileId) { - const rkey = imageAppid === '1406' ? rkeyData.private_rkey : rkeyData.group_rkey; - return IMAGE_HTTP_HOST + `/download?appid=${imageAppid}&fileid=${imageFileId}&rkey=${rkey}`; + private getImageUrlFromParsedUrl(imageFileId: string, appid: string, rkeyData: any): string { + const rkey = appid === '1406' ? rkeyData.private_rkey : rkeyData.group_rkey; + if (rkeyData.online_rkey) { + return IMAGE_HTTP_HOST_NT + `/download?appid=${appid}&fileid=${imageFileId}&rkey=${rkey}`; } - - return ''; + return IMAGE_HTTP_HOST + `/download?appid=${appid}&fileid=${imageFileId}&rkey=${rkey}`; } private getImageUrlFromMd5(fileMd5: string | undefined, md5HexStr: string | undefined): string { From 83f3df76cdcd6179bb64a4c07f89ef7ecbc2cb4a Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Wed, 20 Nov 2024 04:22:12 +0000 Subject: [PATCH 018/418] release: v4.1.12 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index e870b7a8..547608eb 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.1.11", + "version": "4.1.12", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index eb768689..feb37eba 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.1.11", + "version": "4.1.12", "scripts": { "build:framework": "npm run build:webui && vite build --mode framework", "build:shell": "npm run build:webui && vite build --mode shell", diff --git a/src/common/version.ts b/src/common/version.ts index 637582a0..2283a05e 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.1.11'; +export const napCatVersion = '4.1.12'; From ee8f381341e0b8445626acde867384d7ecf45c47 Mon Sep 17 00:00:00 2001 From: huankong233 Date: Wed, 20 Nov 2024 14:02:34 +0800 Subject: [PATCH 019/418] =?UTF-8?q?feat:=20=E5=A2=9E=E5=BC=BAwebui?= =?UTF-8?q?=E5=AF=B9=E8=80=81=E8=AE=BE=E5=A4=87=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- napcat.webui/package.json | 3 +++ napcat.webui/vite.config.ts | 27 +++++++++++++++++++-------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/napcat.webui/package.json b/napcat.webui/package.json index 3651cf16..34033270 100644 --- a/napcat.webui/package.json +++ b/napcat.webui/package.json @@ -12,6 +12,7 @@ "dependencies": { "eslint-plugin-prettier": "^5.2.1", "qrcode": "^1.5.4", + "tdesign-icons-vue-next": "^0.3.3", "tdesign-vue-next": "^1.10.3", "vue": "^3.5.12", "vue-router": "^4.4.5" @@ -20,10 +21,12 @@ "@eslint/eslintrc": "^3.1.0", "@eslint/js": "^9.14.0", "@types/qrcode": "^1.5.5", + "@vitejs/plugin-legacy": "^5.4.3", "@vitejs/plugin-vue": "^5.1.4", "eslint-config-prettier": "^9.1.0", "eslint-plugin-vue": "^9.31.0", "globals": "^15.12.0", + "terser": "^5.36.0", "typescript": "~5.6.2", "vite": "^5.4.10", "vue-tsc": "^2.1.8" diff --git a/napcat.webui/vite.config.ts b/napcat.webui/vite.config.ts index 5517677e..1e465bf9 100644 --- a/napcat.webui/vite.config.ts +++ b/napcat.webui/vite.config.ts @@ -1,10 +1,17 @@ import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; +import legacy from '@vitejs/plugin-legacy'; import path from 'path'; // https://vite.dev/config/ export default defineConfig({ - plugins: [vue()], + plugins: [ + vue(), + legacy({ + targets: ['defaults', 'not IE 11'], + modernPolyfills: ['web.structured-clone'], + }), + ], base: './', resolve: { alias: { @@ -17,14 +24,18 @@ export default defineConfig({ }, }, build: { + chunkSizeWarningLimit: 4000, rollupOptions: { output: { - manualChunks(id) { + chunkFileNames: 'static/js/[name]-[hash].js', + entryFileNames: 'static/js/[name]-[hash].js', + assetFileNames: 'static/[ext]/[name]-[hash].[ext]', + manualChunks(id: string) { if (id.includes('node_modules')) { - return id.toString().split('node_modules/')[1].split('/')[0].toString(); + return id.toString().split('node_modules/.pnpm/')[1].split('/')[0].toString(); } - } - } - } - } -}); \ No newline at end of file + }, + }, + }, + }, +}); From 249afdce81166f2ea2d1d15408f548709e6a0d4b Mon Sep 17 00:00:00 2001 From: huankong233 Date: Wed, 20 Nov 2024 14:15:03 +0800 Subject: [PATCH 020/418] =?UTF-8?q?revent:=20=E5=AF=B9=E6=89=8B=E5=8A=A8?= =?UTF-8?q?=E6=8B=86=E5=88=86chunk=E8=BF=9B=E8=A1=8C=E5=9B=9E=E6=BB=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- napcat.webui/vite.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/napcat.webui/vite.config.ts b/napcat.webui/vite.config.ts index 1e465bf9..7a715aa4 100644 --- a/napcat.webui/vite.config.ts +++ b/napcat.webui/vite.config.ts @@ -32,7 +32,7 @@ export default defineConfig({ assetFileNames: 'static/[ext]/[name]-[hash].[ext]', manualChunks(id: string) { if (id.includes('node_modules')) { - return id.toString().split('node_modules/.pnpm/')[1].split('/')[0].toString(); + return id.toString().split('node_modules/')[1].split('/')[0].toString(); } }, }, From 23702f412c23c3243de8b4846ec0df97094910eb Mon Sep 17 00:00:00 2001 From: pk5ls20 Date: Wed, 20 Nov 2024 16:23:04 +0800 Subject: [PATCH 021/418] chore: link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dc1ba4c0..048bd9e1 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ NapCatQQ 是现代化的基于 NTQQ 的 Bot 协议端实现 ## 回家旅途 -[QQ Group](https://qm.qq.com/q/haLGHixZ74) +[QQ Group](https://qm.qq.com/q/NWP25OeV0c) ## 感谢他们 感谢 [Lagrange](https://github.com/LagrangeDev/Lagrange.Core) 对本项目的大力支持 参考部分代码 已获授权 From 5d2d8c7123b7591e200474523d7b819e8cb211d6 Mon Sep 17 00:00:00 2001 From: pk5ls20 Date: Wed, 20 Nov 2024 17:00:01 +0800 Subject: [PATCH 022/418] fix: #551 --- src/webui/index.ts | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/src/webui/index.ts b/src/webui/index.ts index 68ac18b1..ab89ed7c 100644 --- a/src/webui/index.ts +++ b/src/webui/index.ts @@ -4,6 +4,7 @@ import { LogWrapper } from '@/common/log'; import { NapCatPathWrapper } from '@/common/path'; import { WebUiConfigWrapper } from './src/helper/config'; import { RequestUtil } from '@/common/request'; +import { isIP } from "node:net"; const app = express(); @@ -46,24 +47,29 @@ export async function InitWebUi(logger: LogWrapper, pathWrapper: NapCatPathWrapp }); app.use(config.prefix + '/api', ALLRouter); app.listen(config.port, config.host, async () => { + const normalizeHost = (host: string) => { + if (host === '0.0.0.0') return '127.0.0.1'; + if (isIP(host) === 6) return `[${host}]`; + return host; + }; + const createUrl = (host: string, path: string, token: string) => { + const url = new URL(`http://${normalizeHost(host)}`); + url.port = config.port.toString(); + url.pathname = `${config.prefix}${path}`; + url.searchParams.set('token', token); + return url.toString(); + }; log(`[NapCat] [WebUi] Current WebUi is running at http://${config.host}:${config.port}${config.prefix}`); log(`[NapCat] [WebUi] Login Token is ${config.token}`); - log( - `[NapCat] [WebUi] WebUi User Panel Url: http://${config.host}:${config.port}${config.prefix}/webui?token=${config.token}` - ); - log( - `[NapCat] [WebUi] WebUi Local Panel Url: http://127.0.0.1:${config.port}${config.prefix}/webui?token=${config.token}` - ); - //获取上网Ip - //https://www.ip.cn/api/index?ip&type=0 - RequestUtil.HttpGetJson<{ IP: { IP: string } }>('https://ip.011102.xyz/', 'GET', {}, {}, true, true) - .then((data) => { - log( - `[NapCat] [WebUi] WebUi Publish Panel Url: http://${data.IP.IP}:${config.port}${config.prefix}/webui/?token=${config.token}` - ); - }) - .catch((err) => { - logger.logError.bind(logger)(`[NapCat] [WebUi] Get Publish Panel Url Error: ${err}`); - }); + log(`[NapCat] [WebUi] WebUi User Panel Url: ${createUrl(config.host, '/webui', config.token)}`); + log(`[NapCat] [WebUi] WebUi Local Panel Url: ${createUrl('127.0.0.1', '/webui', config.token)}`); + try { + const publishUrl = 'https://ip.011102.xyz/'; + const data = await RequestUtil.HttpGetJson<{ IP: { IP: string } }>(publishUrl, 'GET', {}, {}, true, true); + log("IP data", data); + log(`[NapCat] [WebUi] WebUi Publish Panel Url: ${createUrl(data.IP.IP, '/webui', config.token)}`); + } catch (err) { + logger.logError(`[NapCat] [WebUi] Get Publish Panel Url Error: ${err}`); + } }); } From 50e207cf6f70d5b63963f42a8125c7d866bd65bd Mon Sep 17 00:00:00 2001 From: pk5ls20 Date: Wed, 20 Nov 2024 17:30:50 +0800 Subject: [PATCH 023/418] chore: remove useless log --- src/webui/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/webui/index.ts b/src/webui/index.ts index ab89ed7c..f8bf81ac 100644 --- a/src/webui/index.ts +++ b/src/webui/index.ts @@ -66,7 +66,6 @@ export async function InitWebUi(logger: LogWrapper, pathWrapper: NapCatPathWrapp try { const publishUrl = 'https://ip.011102.xyz/'; const data = await RequestUtil.HttpGetJson<{ IP: { IP: string } }>(publishUrl, 'GET', {}, {}, true, true); - log("IP data", data); log(`[NapCat] [WebUi] WebUi Publish Panel Url: ${createUrl(data.IP.IP, '/webui', config.token)}`); } catch (err) { logger.logError(`[NapCat] [WebUi] Get Publish Panel Url Error: ${err}`); From 0b839258aa1209c7c437699e467389efe34831eb Mon Sep 17 00:00:00 2001 From: pk5ls20 Date: Wed, 20 Nov 2024 19:51:29 +0800 Subject: [PATCH 024/418] fix: ci --- .github/workflows/build.yml | 8 ++++---- napcat.webui/package.json | 2 +- package.json | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c1f673f6..cd85b93b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,8 +18,8 @@ jobs: node-version: 20.x - name: Build NapCat.Framework run: | - npm i && cd napcat.webui && npm i && cd .. - npm run build:framework && npm run depend + npm i && cd napcat.webui && npm i && cd .. || exit 1 + npm run build:framework && npm run depend || exit 1 rm package-lock.json - name: Upload Artifact uses: actions/upload-artifact@v4 @@ -37,8 +37,8 @@ jobs: node-version: 20.x - name: Build NapCat.Shell run: | - npm i && cd napcat.webui && npm i && cd .. - npm run build:shell && npm run depend + npm i && cd napcat.webui && npm i && cd .. || exit 1 + npm run build:shell && npm run depend || exit 1 rm package-lock.json - name: Upload Artifact uses: actions/upload-artifact@v4 diff --git a/napcat.webui/package.json b/napcat.webui/package.json index 34033270..5b0739d4 100644 --- a/napcat.webui/package.json +++ b/napcat.webui/package.json @@ -6,7 +6,7 @@ "scripts": { "webui:lint": "eslint --fix src/**/*.{js,ts,vue}", "webui:dev": "vite", - "webui:build": "vue-tsc -b && vite build", + "webui:build": "vite build", "webui:preview": "vite preview" }, "dependencies": { diff --git a/package.json b/package.json index feb37eba..826d4639 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,8 @@ "type": "module", "version": "4.1.12", "scripts": { - "build:framework": "npm run build:webui && vite build --mode framework", - "build:shell": "npm run build:webui && vite build --mode shell", + "build:framework": "npm run build:webui && vite build --mode framework || exit 1", + "build:shell": "npm run build:webui && vite build --mode shell || exit 1", "build:webui": "cd napcat.webui && vite build", "dev:framework": "vite build --mode framework", "dev:shell": "vite build --mode shell", From d17674d06ea558fb672dac18d253da8bbdc38019 Mon Sep 17 00:00:00 2001 From: pk5ls20 Date: Wed, 20 Nov 2024 20:58:36 +0800 Subject: [PATCH 025/418] fix: #553 --- src/core/packet/highway/highwayContext.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/packet/highway/highwayContext.ts b/src/core/packet/highway/highwayContext.ts index f02e375c..96da373e 100644 --- a/src/core/packet/highway/highwayContext.ts +++ b/src/core/packet/highway/highwayContext.ts @@ -78,8 +78,12 @@ export class PacketHighwayContext { ip: int32ip2str(addr.ip), port: addr.port }); + this.hwClient.changeServer(int32ip2str(addr.ip), addr.port); } } + if (this.sig.serverAddr.length === 0) { + this.logger.warn('[Highway PrepareUpload] server addr is empty!'); + } } async uploadImage(peer: Peer, img: PacketMsgPicElement): Promise { From 38a098c77d5d798c9a967f4519633ccbfdd9a24e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 10:36:08 +0800 Subject: [PATCH 026/418] refactor: type --- src/common/log.ts | 10 +- src/core/entities/element.ts | 348 +++++++++++++++++++ src/core/entities/index.ts | 3 +- src/core/entities/msg.ts | 531 +++-------------------------- src/core/packet/message/element.ts | 4 +- src/onebot/api/msg.ts | 26 +- src/onebot/types/entity.ts | 134 ++++---- src/onebot/types/message.ts | 191 ++++++----- 8 files changed, 591 insertions(+), 656 deletions(-) create mode 100644 src/core/entities/element.ts diff --git a/src/common/log.ts b/src/common/log.ts index 42741beb..10da3631 100644 --- a/src/common/log.ts +++ b/src/common/log.ts @@ -2,7 +2,7 @@ import winston, { format, transports } from 'winston'; import { truncateString } from '@/common/helper'; import path from 'node:path'; import fs from 'node:fs'; -import { AtType, ChatType, ElementType, MessageElement, RawMessage, SelfInfo } from '@/core'; +import { NTMsgAtType, ChatType, ElementType, MessageElement, RawMessage, SelfInfo } from '@/core'; export enum LogLevel { DEBUG = 'debug', @@ -270,12 +270,12 @@ function msgElementToText(element: MessageElement, msg: RawMessage, recursiveLev } function textElementToText(textElement: any): string { - if (textElement.atType === AtType.notAt) { + if (textElement.atType === NTMsgAtType.ATTYPEUNKNOWN) { const originalContentLines = textElement.content.split('\n'); return `${originalContentLines[0]}${originalContentLines.length > 1 ? ' ...' : ''}`; - } else if (textElement.atType === AtType.atAll) { + } else if (textElement.atType === NTMsgAtType.ATTYPEALL) { return `@全体成员`; - } else if (textElement.atType === AtType.atUser) { + } else if (textElement.atType === NTMsgAtType.ATTYPEONE) { return `${textElement.content} (${textElement.atUid})`; } return ''; @@ -290,5 +290,5 @@ function replyElementToText(replyElement: any, msg: RawMessage, recursiveLevel: ? rawMessageToText(recordMsgOrNull, recursiveLevel + 1) : `未找到消息记录 (MsgId = ${replyElement.sourceMsgIdInRecords})` - }]`; + }]`; } \ No newline at end of file diff --git a/src/core/entities/element.ts b/src/core/entities/element.ts new file mode 100644 index 00000000..67e9e6e9 --- /dev/null +++ b/src/core/entities/element.ts @@ -0,0 +1,348 @@ +import { ElementType, FaceType, MessageElement, NTGrayTipElementSubTypeV2, PicSubType, PicType, TipAioOpGrayTipElement, TipGroupElement, viedo_type } from "./msg"; + +type ElementFullBase = Omit; + +export interface SendElementBase { + elementType: ET; + elementId: string; + extBufForUI?: string; +} + +type ElementBase< + K extends keyof ElementFullBase, + S extends Partial<{ [P in K]: keyof NonNullable | Array> }> = object +> = { + [P in K]: + S[P] extends Array + ? Pick, U & keyof NonNullable> + : S[P] extends keyof NonNullable + ? Pick, S[P]> + : NonNullable; + }; + +export interface TextElement { + content: string; + atType: number; + atUid: string; + atTinyId: string; + atNtUid: string; +} + +export interface FaceElement { + faceIndex: number; + faceType: FaceType; + faceText?: string; + packId?: string; + stickerId?: string; + sourceType?: number; + stickerType?: number; + resultId?: string; + surpriseId?: string; + randomType?: number; +} + +export interface GrayTipElement { + subElementType: NTGrayTipElementSubTypeV2; + revokeElement: { + operatorRole: string; + operatorUid: string; + operatorNick: string; + operatorRemark: string; + operatorMemRemark?: string; + wording: string; // 自定义的撤回提示语 + }; + aioOpGrayTipElement: TipAioOpGrayTipElement; + groupElement: TipGroupElement; + xmlElement: { + content: string; + templId: string; + }; + jsonGrayTipElement: { + busiId?: number; + jsonStr: string; + }; +} + + +export interface ArkElement { + bytesData: string; + linkInfo: null; + subElementType: null; +} + +export interface MarketFaceElement { + emojiPackageId: number; + faceName: string; + emojiId: string; + key: string; +} + +export interface VideoElement { + filePath: string; + fileName: string; + videoMd5?: string; + thumbMd5?: string; + fileTime?: number; // second + thumbSize?: number; // byte + fileFormat?: viedo_type; // 2表示mp4 参考下面条目 + fileSize?: string; // byte + thumbWidth?: number; + thumbHeight?: number; + busiType?: 0; // + subBusiType?: 0; // 未知 + thumbPath?: Map; + transferStatus?: 0; // 未知 + progress?: 0; // 下载进度? + invalidState?: 0; // 未知 + fileUuid?: string; // 可以用于下载链接? + fileSubId?: string; + fileBizId?: null; + originVideoMd5?: string; + import_rich_media_context?: null; + sourceVideoCodecFormat?: number; +} +export interface PicElement { + md5HexStr?: string; + filePath?: string; + fileSize: number | string;//number + picWidth: number; + picHeight: number; + fileName: string; + sourcePath: string; + original: boolean; + picType: PicType; + picSubType?: PicSubType; + fileUuid: string; + fileSubId: string; + thumbFileSize: number; + summary: string; + thumbPath: Map; + originImageMd5?: string; + originImageUrl?: string; +} +export interface InlineKeyboardButton { + id: string; + label: string; + visitedLabel: string; + unsupportTips: string; + data: string; + specifyRoleIds: string[]; + specifyTinyids: string[]; + style: number; + type: number; + clickLimit: number; + atBotShowChannelList: boolean; + permissionType: number; +} + +// 非element +interface InlineKeyboardRow { + buttons: InlineKeyboardButton[]; +} + +// 非element +interface TofuElementContent { + color: string; + tittle: string; +} + +export interface ActionBarElement { + rows: InlineKeyboardRow[]; + botAppid: string; +} + +export interface RecommendedMsgElement { + rows: InlineKeyboardRow[]; + botAppid: string; +} + +export interface TofuRecordElement { + type: number; + busiid: string; + busiuuid: string; + descriptionContent: string; + contentlist: TofuElementContent[], + background: string; + icon: string; + uinlist: string[], + uidlist: string[], + busiExtra: string; + updateTime: string; + dependedmsgid: string; + msgtime: string; + onscreennotify: boolean; +} + +export interface FileElement { + fileMd5?: string; + fileName: string; + filePath: string; + fileSize: string; + picHeight?: number; + picWidth?: number; + folderId?: string; + picThumbPath?: Map; + file10MMd5?: string; + fileSha?: string; + fileSha3?: string; + fileUuid?: string; + fileSubId?: string; + thumbFileSize?: number; + fileBizId?: number; +} + +export interface ShareLocationElement { + text: string; + ext: string; +} + +export interface StructLongMsgElement { + xmlContent: string; + resId: string; +} + +export interface ReplyElement { + sourceMsgIdInRecords?: string; + replayMsgSeq: string; + replayMsgId: string; + senderUin: string; + senderUidStr?: string; + replyMsgTime?: string; + replyMsgClientSeq?: string; +} + +export interface CalendarElement { + summary: string; + msg: string; + expireTimeMs: string; + schemaType: number; + schema: string; +} + +export interface GiphyElement { + id: string; + isClip: boolean; + width: number; + height: number; +} + +export interface AvRecordElement { + type: number; + time: string; + text: string; + mainType: number; + hasRead: boolean; + extraType: number; +} + +// 非element +interface YoloUserInfo { + uid: string; + result: number; + rank: number; + bizId: string; +} + +export interface YoloGameResultElement { + UserInfo: YoloUserInfo[]; +} + +export interface FaceBubbleElement { + faceCount: number; + faceSummary: string; + faceFlag: number; + content: string; + oldVersionStr: string; + faceType: number; + others: string; + yellowFaceInfo: { + index: number; + buf: string; + compatibleText: string; + text: string; + }; +} + +export interface TaskTopMsgElement { + msgTitle: string; + msgSummary: string; + iconUrl: string; + topMsgType: number; +} + +export interface PttElement { + canConvert2Text: boolean; + duration: number; + fileBizId: null; + fileId: number; + fileName: string; + filePath: string; + fileSize: string; + fileSubId: string; + fileUuid: string; // FileId + formatType: number; // Todo 已定义 但是未替换 + invalidState: number; + md5HexStr: string; + playState: number; + progress: number; //进度 + text: string; + transferStatus: number; + translateStatus: number; + voiceChangeType: number; + voiceType: number; + waveAmplitudes: number[]; + autoConvertText: number; +} + +export type SendRecommendedMsgElement = SendElementBase & ElementBase<'recommendedMsgElement'>; + +export type SendTaskTopMsgElement = SendElementBase & ElementBase<'taskTopMsgElement'>; + +export type SendTofuRecordElement = SendElementBase & ElementBase<'tofuRecordElement'>; + +export type SendFaceBubbleElement = SendElementBase & ElementBase<'faceBubbleElement'>; + +export type SendAvRecordElement = SendElementBase & ElementBase<'avRecordElement'>; + +export type SendInlineKeyboardElement = SendElementBase & ElementBase<'inlineKeyboardElement'>; + +export type SendYoloGameResultElement = SendElementBase & ElementBase<'yoloGameResultElement'>; + +export type SendGiphyElement = SendElementBase & ElementBase<'giphyElement'>; + +export type SendWalletElement = SendElementBase & ElementBase<'walletElement'>; + +export type SendCalendarElement = SendElementBase & ElementBase<'calendarElement'>; + +export type SendLiveGiftElement = SendElementBase & ElementBase<'liveGiftElement'>; + +export type SendTextElement = SendElementBase & ElementBase<'textElement'>; + +export type SendReplyElement = SendElementBase & ElementBase<'replyElement'>; + +export type SendFaceElement = SendElementBase & ElementBase<'faceElement'>; + +export type SendMarketFaceElement = SendElementBase & ElementBase<'marketFaceElement'>; + +export type SendStructLongMsgElement = SendElementBase & ElementBase<'structLongMsgElement'>; + +export type SendPicElement = SendElementBase & ElementBase<'picElement'>; + +export type SendPttElement = SendElementBase & ElementBase<'pttElement', { + pttElement: ['fileName', 'filePath', 'md5HexStr', 'fileSize', 'duration', 'formatType', 'voiceType', + 'voiceChangeType', 'canConvert2Text', 'waveAmplitudes', 'fileSubId', 'playState', 'autoConvertText'] +}>; + +export type SendFileElement = SendElementBase & ElementBase<'fileElement'>; + +export type SendVideoElement = SendElementBase & ElementBase<'videoElement'>; + +export type SendArkElement = SendElementBase & ElementBase<'arkElement'>; + +export type SendMarkdownElement = SendElementBase & ElementBase<'markdownElement'>; + +export type SendShareLocationElement = SendElementBase & ElementBase<'shareLocationElement'>; + +export type SendMessageElement = SendTextElement | SendPttElement | + SendPicElement | SendReplyElement | SendFaceElement | SendMarketFaceElement | SendFileElement | + SendVideoElement | SendArkElement | SendMarkdownElement | SendShareLocationElement; \ No newline at end of file diff --git a/src/core/entities/index.ts b/src/core/entities/index.ts index 9e947a8d..2471a614 100644 --- a/src/core/entities/index.ts +++ b/src/core/entities/index.ts @@ -5,4 +5,5 @@ export * from './notify'; export * from './cache'; export * from './system'; export * from './webapi'; -export * from './sign'; \ No newline at end of file +export * from './sign'; +export * from './element'; \ No newline at end of file diff --git a/src/core/entities/msg.ts b/src/core/entities/msg.ts index 6519861b..18735521 100644 --- a/src/core/entities/msg.ts +++ b/src/core/entities/msg.ts @@ -1,19 +1,22 @@ import { GroupMemberRole } from '@/core'; +import { ActionBarElement, ArkElement, AvRecordElement, CalendarElement, FaceBubbleElement, FaceElement, FileElement, GiphyElement, GrayTipElement, MarketFaceElement, PicElement, PttElement, RecommendedMsgElement, ReplyElement, ShareLocationElement, StructLongMsgElement, TaskTopMsgElement, TextElement, TofuRecordElement, VideoElement, YoloGameResultElement } from './element'; +// 表示对等方的信息 export interface Peer { - chatType: ChatType; - peerUid: string; // 如果是群聊uid为群号,私聊uid就是加密的字符串 - guildId?: string; + chatType: ChatType; // 聊天类型 + peerUid: string; // 对等方的唯一标识符 + guildId?: string; // 可选的频道ID } +// 表示被踢下线的信息 export interface KickedOffLineInfo { - appId: number; - instanceId: number; - sameDevice: boolean; - tipsDesc: string; - tipsTitle: string; - kickedType: number; - securityKickedType: number; + appId: number; // 应用ID + instanceId: number; // 实例ID + sameDevice: boolean; // 是否为同一设备 + tipsDesc: string; // 提示描述 + tipsTitle: string; // 提示标题 + kickedType: number; // 被踢类型 + securityKickedType: number; // 安全踢出类型 } export interface GetFileListParam { @@ -60,69 +63,6 @@ export enum ElementType { ACTIONBAR = 44 } -type ElementFullBase = Omit; - -type ElementBase< - K extends keyof ElementFullBase, - S extends Partial<{ [P in K]: keyof NonNullable | Array> }> = object -> = { - [P in K]: - S[P] extends Array - ? Pick, U & keyof NonNullable> - : S[P] extends keyof NonNullable - ? Pick, S[P]> - : NonNullable; -}; - -export interface SendElementBase { - elementType: ET; - elementId: string; - extBufForUI?: string; -} - -export interface ActionBarElement { - rows: InlineKeyboardRow[]; - botAppid: string; -} - -export interface RecommendedMsgElement { - rows: InlineKeyboardRow[]; - botAppid: string; -} - -export type SendRecommendedMsgElement = SendElementBase & ElementBase<'recommendedMsgElement'>; - -export interface InlineKeyboardButton { - id: string; - label: string; - visitedLabel: string; - unsupportTips: string; - data: string; - specifyRoleIds: string[]; - specifyTinyids: string[]; - style: number; - type: number; - clickLimit: number; - atBotShowChannelList: boolean; - permissionType: number; -} - -export interface InlineKeyboardRow { - buttons: InlineKeyboardButton[]; -} - -export interface TofuElementContent { - color: string; - tittle: string; -} - -export interface TaskTopMsgElement { - msgTitle: string; - msgSummary: string; - iconUrl: string; - topMsgType: number; -} - export enum NTMsgType { KMSGTYPEARKSTRUCT = 11, KMSGTYPEFACEBUBBLE = 24, @@ -147,109 +87,15 @@ export enum NTMsgType { KMSGTYPEWALLET = 10 } -export type SendTaskTopMsgElement = SendElementBase & ElementBase<'taskTopMsgElement'>; - -export interface TofuRecordElement { - type: number; - busiid: string; - busiuuid: string; - descriptionContent: string; - contentlist: TofuElementContent[], - background: string; - icon: string; - uinlist: string[], - uidlist: string[], - busiExtra: string; - updateTime: string; - dependedmsgid: string; - msgtime: string; - onscreennotify: boolean; -} - -export type SendTofuRecordElement = SendElementBase & ElementBase<'tofuRecordElement'>; - -export interface FaceBubbleElement { - faceCount: number; - faceSummary: string; - faceFlag: number; - content: string; - oldVersionStr: string; - faceType: number; - others: string; - yellowFaceInfo: { - index: number; - buf: string; - compatibleText: string; - text: string; - }; -} - -export type SendFaceBubbleElement = SendElementBase & ElementBase<'faceBubbleElement'>; - -export interface AvRecordElement { - type: number; - time: string; - text: string; - mainType: number; - hasRead: boolean; - extraType: number; -} - -export type SendAvRecordElement = SendElementBase & ElementBase<'avRecordElement'>; - -export interface YoloUserInfo { - uid: string; - result: number; - rank: number; - bizId: string; -} - -export type SendInlineKeyboardElement = SendElementBase & ElementBase<'inlineKeyboardElement'>; - -export interface YoloGameResultElement { - UserInfo: YoloUserInfo[]; -} - -export type SendYoloGameResultElement = SendElementBase & ElementBase<'yoloGameResultElement'>; - -export interface GiphyElement { - id: string; - isClip: boolean; - width: number; - height: number; -} - -export type SendGiphyElement = SendElementBase & ElementBase<'giphyElement'>; - -export type SendWalletElement = SendElementBase & ElementBase<'walletElement'>; - -export interface CalendarElement { - summary: string; - msg: string; - expireTimeMs: string; - schemaType: number; - schema: string; -} - -export type SendCalendarElement = SendElementBase & ElementBase<'calendarElement'>; - -export type SendLiveGiftElement = SendElementBase & ElementBase<'liveGiftElement'>; - -export type SendTextElement = SendElementBase & ElementBase<'textElement'>; - -export type SendPttElement = SendElementBase & ElementBase<'pttElement', { - pttElement: ['fileName', 'filePath', 'md5HexStr', 'fileSize', 'duration', 'formatType', 'voiceType', - 'voiceChangeType', 'canConvert2Text', 'waveAmplitudes', 'fileSubId', 'playState', 'autoConvertText'] -}>; - export enum PicType { gif = 2000, jpg = 1000 } export enum PicSubType { - normal = 0, // 普通图片,大图 - face = 1 // 表情包小图 + Normal = 0, // 普通图片 + Face = 1 // 表情包小图 + //...待补全 其余见NT Android } export enum NTMsgAtType { @@ -266,78 +112,6 @@ export enum NTMsgAtType { ATTYPEUNKNOWN = 0 } -export type SendPicElement = SendElementBase & ElementBase<'picElement'>; - -export interface ReplyElement { - sourceMsgIdInRecords?: string; - replayMsgSeq: string; - replayMsgId: string; - senderUin: string; - senderUidStr?: string; - replyMsgTime?: string; - replyMsgClientSeq?: string; -} - -export type SendReplyElement = SendElementBase & ElementBase<'replyElement'>; - -export type SendFaceElement = SendElementBase & ElementBase<'faceElement'>; - -export type SendMarketFaceElement = SendElementBase & ElementBase<'marketFaceElement'>; - -export type SendStructLongMsgElement = SendElementBase & ElementBase<'structLongMsgElement'>; - -export interface StructLongMsgElement { - xmlContent: string; - resId: string; -} - -export type SendActionBarElement = SendElementBase & ElementBase<'actionBarElement'>; - -export interface ShareLocationElement { - text: string; - ext: string; -} - -export type SendShareLocationElement = SendElementBase & ElementBase<'shareLocationElement'>; - -export interface FileElement { - fileMd5?: string; - fileName: string; - filePath: string; - fileSize: string; - picHeight?: number; - picWidth?: number; - folderId?: string; - picThumbPath?: Map; - file10MMd5?: string; - fileSha?: string; - fileSha3?: string; - fileUuid?: string; - fileSubId?: string; - thumbFileSize?: number; - fileBizId?: number; -} - -export type SendFileElement = SendElementBase & ElementBase<'fileElement'>; - -export type SendVideoElement = SendElementBase & ElementBase<'videoElement'>; - -export type SendArkElement = SendElementBase & ElementBase<'arkElement'>; - -export type SendMarkdownElement = SendElementBase & ElementBase<'markdownElement'>; - -export type SendMessageElement = SendTextElement | SendPttElement | - SendPicElement | SendReplyElement | SendFaceElement | SendMarketFaceElement | SendFileElement | - SendVideoElement | SendArkElement | SendMarkdownElement | SendShareLocationElement; - -export interface TextElement { - content: string; - atType: number; - atUid: string; - atTinyId: string; - atNtUid: string; -} - export interface MessageElement { elementType: ElementType, elementId: string, @@ -372,11 +146,6 @@ export interface MessageElement { actionBarElement?: ActionBarElement } -export enum AtType { - notAt = 0, - atAll = 1, - atUser = 2 -} export enum MsgSourceType { K_DOWN_SOURCETYPE_AIOINNER = 1, K_DOWN_SOURCETYPE_BIGSCREEN = 2, @@ -428,59 +197,9 @@ export enum ChatType { KCHATTYPEWEIYUN = 40, } -export interface PttElement { - canConvert2Text: boolean; - duration: number; // 秒数 - fileBizId: null; - fileId: number; // 0 - fileName: string; // "e4d09c784d5a2abcb2f9980bdc7acfe6.amr" - filePath: string; // "/Users//Library/Containers/com.tencent.qq/Data/Library/Application Support/QQ/nt_qq_a6b15c9820595d25a56c1633ce19ad40/nt_data/Ptt/2023-11/Ori/e4d09c784d5a2abcb2f9980bdc7acfe6.amr" - fileSize: string; // "4261" - fileSubId: string; // "0" - fileUuid: string; // "90j3z7rmRphDPrdVgP9udFBaYar#oK0TWZIV" - formatType: number; // 1 - invalidState: number; // 0 - md5HexStr: string; // "e4d09c784d5a2abcb2f9980bdc7acfe6" - playState: number; // 0 - progress: number; // 0 - text: string; // "" - transferStatus: number; // 0 - translateStatus: number; // 0 - voiceChangeType: number; // 0 - voiceType: number; // 0 - waveAmplitudes: number[]; - autoConvertText: number; -} - -export interface ArkElement { - bytesData: string; - linkInfo: null; - subElementType: null; -} - export const IMAGE_HTTP_HOST = 'https://gchat.qpic.cn'; export const IMAGE_HTTP_HOST_NT = 'https://multimedia.nt.qq.com.cn'; -export interface PicElement { - md5HexStr?: string; - filePath?: string; - fileSize: number | string;//number - picWidth: number; - picHeight: number; - fileName: string; - sourcePath: string; - original: boolean; - picType: PicType; - picSubType?: PicSubType; - fileUuid: string; - fileSubId: string; - thumbFileSize: number; - summary: string; - thumbPath: Map; - originImageMd5?: string; - originImageUrl?: string; // http url, 没有host,host是https://gchat.qpic.cn/, 带download参数的是https://multimedia.nt.qq.com.cn -} - export enum NTGrayTipElementSubTypeV2 { GRAYTIP_ELEMENT_SUBTYPE_AIOOP = 15, GRAYTIP_ELEMENT_SUBTYPE_BLOCK = 14, @@ -502,27 +221,6 @@ export enum NTGrayTipElementSubTypeV2 { GRAYTIP_ELEMENT_SUBTYPE_XMLMSG = 12, } -export interface GrayTipElement { - subElementType: NTGrayTipElementSubTypeV2; - revokeElement: { - operatorRole: string; - operatorUid: string; - operatorNick: string; - operatorRemark: string; - operatorMemRemark?: string; - wording: string; // 自定义的撤回提示语 - }; - aioOpGrayTipElement: TipAioOpGrayTipElement; - groupElement: TipGroupElement; - xmlElement: { - content: string; - templId: string; - }; - jsonGrayTipElement: { - busiId?: number; - jsonStr: string; - }; -} export enum FaceType { normal = 1, // 小黄脸 @@ -533,88 +231,9 @@ export enum FaceType { export enum FaceIndex { dice = 358, - RPS = 359 // 石头剪刀布 + rps = 359 } -export interface FaceElement { - faceIndex: number; - faceType: FaceType; - faceText?: string; - packId?: string; - stickerId?: string; - sourceType?: number; - stickerType?: number; - resultId?: string; - surpriseId?: string; - randomType?: number; -} - -export interface MarketFaceElement { - emojiPackageId: number; - faceName: string; - emojiId: string; - key: string; -} - -export interface VideoElement { - filePath: string; - fileName: string; - videoMd5?: string; - thumbMd5?: string; - fileTime?: number; // second - thumbSize?: number; // byte - fileFormat?: viedo_type; // 2表示mp4 参考下面条目 - fileSize?: string; // byte - thumbWidth?: number; - thumbHeight?: number; - busiType?: 0; // - subBusiType?: 0; // 未知 - thumbPath?: Map; - transferStatus?: 0; // 未知 - progress?: 0; // 下载进度? - invalidState?: 0; // 未知 - fileUuid?: string; // 可以用于下载链接? - fileSubId?: string; - fileBizId?: null; - originVideoMd5?: string; - import_rich_media_context?: null; - sourceVideoCodecFormat?: number; -} - -// export enum busiType{ -// public static final int CREATOR_SHARE_ADV_XWORLD = 21; -// public static final int MINI_APP_MINI_GAME = 11; -// public static final int OFFICIAL_ACCOUNT_ADV = 4; -// public static final int OFFICIAL_ACCOUNT_ADV_GAME = 8; -// public static final int OFFICIAL_ACCOUNT_ADV_SHOP = 9; -// public static final int OFFICIAL_ACCOUNT_ADV_VIP = 7; -// public static final int OFFICIAL_ACCOUNT_LAYER_MASK_ADV = 14; -// public static final int OFFICIAL_ACCOUNT_SPORT = 13; -// public static final int OFFICIAL_ACCOUNT_TIAN_QI = 10; -// public static final int PC_QQTAB_ADV = 18; -// public static final int QIQIAOBAN_SDK = 15; -// public static final int QQ_CPS = 16; -// public static final int QQ_WALLET_CPS = 17; -// public static final int QZONE_FEEDS = 0; -// public static final int QZONE_PHOTO_TAIL = 2; -// public static final int QZONE_VIDEO_LAYER = 1; -// public static final int REWARD_GIFT_ADV = 6; -// public static final int REWARD_GROUPGIFT_ADV = 12; -// public static final int REWARD_PERSONAL_ADV = 5; -// public static final int WEISEE_OFFICIAL_ACCOUNT = 3; -// public static final int X_WORLD_CREATOR_ADV = 20; -// public static final int X_WORLD_QZONE_LAYER = 22; -// public static final int X_WORLD_VIDEO_ADV = 19; - -// } -// export enum CategoryBusiType { -// _KCateBusiTypeDefault = 0, -// _kCateBusiTypeFaceCluster = 1, -// _kCateBusiTypeLabelCluster = 4, -// _kCateBusiTypeMonthCluster = 16, -// _kCateBusiTypePoiCluster = 2, -// _kCateBusiTypeYearCluster = 8, -// } export enum viedo_type { VIDEO_FORMAT_AFS = 7, VIDEO_FORMAT_AVI = 1, @@ -734,96 +353,34 @@ export enum SendStatusType { KSEND_STATUS_SUCCESS_NOSEQ = 3 } +// 原始消息 export interface RawMessage { - parentMsgPeer: Peer; - - parentMsgIdList: string[]; - - /** - * 扩展字段,与 Ob11 msg ID 有关 - */ - - - id?: number; - - guildId: string; - - msgRandom: string; - - msgId: string; - - /** - * 消息时间戳(秒) - */ - msgTime: string; - - msgSeq: string; - - msgType: NTMsgType; - - subMsgType: number; - - senderUid: string; - - /** - * 发送者 QQ 号 - */ - senderUin: string; - - /** - * 群号 / 用户 UID - */ - peerUid: string; - - /** - * 群号 / 用户 QQ 号 - */ - peerUin: string; - - /** - * 好友备注(如果是好友消息) - */ - remark?: string; - - /** - * 群名(如果是群消息) - */ - peerName: string; - - /** - * 发送者昵称(如果是好友消息) - */ - sendNickName: string; - - /** - * 发送者好友备注(如果是群消息并且有发送者好友) - */ - sendRemarkName: string; - - /** - * 发送者群名片(如果是群消息) - */ - sendMemberName?: string; - - chatType: ChatType; - - /** - * 消息状态,别人发的 2 是已撤回,自己发的 2 是已发送 - */ - sendStatus?: SendStatusType; - - /** - * 撤回时间,"0" 是没有撤回 - */ - recallTime: string; - - records: RawMessage[]; - - elements: MessageElement[]; - - sourceType: MsgSourceType; - - isOnlineMsg: boolean; + parentMsgPeer: Peer; // 父消息的Peer + parentMsgIdList: string[];// 父消息 ID 列表 + id?: number;// 扩展字段,与 Ob11 msg ID 有关 + guildId: string;// 频道ID + msgRandom: string;// 消息ID相关 + msgId: string;// 雪花ID + msgTime: string;// 消息时间戳 + msgSeq: string;// 消息序列号 + msgType: NTMsgType;// 消息类型 + subMsgType: number;// 子消息类型 + senderUid: string;// 发送者 UID + senderUin: string;// 发送者 QQ 号 + peerUid: string;// 群号 / 用户 UID + peerUin: string;// 群号 / 用户 QQ 号 + remark?: string;// 备注 + peerName: string;// Peer名称 + sendNickName: string;// 发送者昵称 + sendRemarkName: string;// 发送者好友备注 + sendMemberName?: string;// 发送者群名片(如果是群消息) + chatType: ChatType;// 会话类型 + sendStatus?: SendStatusType;// 消息状态 + recallTime: string;// 撤回时间,"0" 是没有撤回 + records: RawMessage[];// 消息记录 + elements: MessageElement[];// 消息元素 + sourceType: MsgSourceType;// 消息来源类型 + isOnlineMsg: boolean;// 是否为在线消息 } export interface QueryMsgsParams { chatInfo: Peer; diff --git a/src/core/packet/message/element.ts b/src/core/packet/message/element.ts index 8142f1cb..dd66ea37 100644 --- a/src/core/packet/message/element.ts +++ b/src/core/packet/message/element.ts @@ -14,7 +14,7 @@ import { GroupFileExtra } from "@/core/packet/transformer/proto"; import { - AtType, + NTMsgAtType, PicType, SendArkElement, SendFaceElement, @@ -82,7 +82,7 @@ export class PacketMsgAtElement extends PacketMsgTextElement { constructor(element: SendTextElement) { super(element); this.targetUid = element.textElement.atNtUid; - this.atAll = element.textElement.atType === AtType.atAll; + this.atAll = element.textElement.atType === NTMsgAtType.ATTYPEALL; } buildElement(): NapProtoEncodeStructType[] { diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 90e8141d..bf81e1d6 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -2,7 +2,7 @@ import { FileNapCatOneBotUUID } from '@/common/helper'; import { MessageUnique } from '@/common/message-unique'; import { pathToFileURL } from 'node:url'; import { - AtType, + NTMsgAtType, ChatType, CustomMusicSignPostData, ElementType, @@ -61,7 +61,7 @@ export class OneBotMsgApi { rawToOb11Converters: RawToOb11Converters = { textElement: async element => { - if (element.atType === AtType.notAt) { + if (element.atType === NTMsgAtType.ATTYPEUNKNOWN) { let text = element.content; if (!text.trim()) { return null; @@ -76,7 +76,7 @@ export class OneBotMsgApi { }; } else { let qq: string = 'all'; - if (element.atType !== AtType.atAll) { + if (element.atType !== NTMsgAtType.ATTYPEALL) { const { atNtUid /* content */ } = element; let atQQ = element.atUid; if (!atQQ || atQQ === '0') { @@ -151,9 +151,9 @@ export class OneBotMsgApi { result: element.resultId!, }, }; - } else if (faceIndex === FaceIndex.RPS) { + } else if (faceIndex === FaceIndex.rps) { return { - type: OB11MessageDataType.RPS, + type: OB11MessageDataType.rps, data: { result: element.resultId!, }, @@ -400,7 +400,7 @@ export class OneBotMsgApi { elementId: '', textElement: { content: text, - atType: AtType.notAt, + atType: NTMsgAtType.ATTYPEUNKNOWN, atUid: '', atTinyId: '', atNtUid: '', @@ -408,7 +408,7 @@ export class OneBotMsgApi { }), [OB11MessageDataType.at]: async ({ data: { qq: atQQ } }, context) => { - function at(atUid: string, atNtUid: string, atType: AtType, atName: string): SendTextElement { + function at(atUid: string, atNtUid: string, atType: NTMsgAtType, atName: string): SendTextElement { return { elementType: ElementType.TEXT, elementId: '', @@ -423,15 +423,15 @@ export class OneBotMsgApi { } if (!context.peer || context.peer.chatType == ChatType.KCHATTYPEC2C) return undefined; - if (atQQ === 'all') return at(atQQ, atQQ, AtType.atAll, '全体成员'); + if (atQQ === 'all') return at(atQQ, atQQ, NTMsgAtType.ATTYPEALL, '全体成员'); const atMember = await this.core.apis.GroupApi.getGroupMember(context.peer.peerUid, atQQ); if (atMember) { - return at(atQQ, atMember.uid, AtType.atUser, atMember.nick || atMember.cardName); + return at(atQQ, atMember.uid, NTMsgAtType.ATTYPEONE, atMember.nick || atMember.cardName); } const uid = await this.core.apis.UserApi.getUidByUinV2(`${atQQ}`); if (!uid) throw new Error('Get Uid Error'); const info = await this.core.apis.UserApi.getUserDetailInfo(uid); - return at(atQQ, uid, AtType.atUser, info.nick || ''); + return at(atQQ, uid, NTMsgAtType.ATTYPEONE, info.nick || ''); }, [OB11MessageDataType.reply]: async ({ data: { id } }) => { @@ -558,11 +558,11 @@ export class OneBotMsgApi { }, }), - [OB11MessageDataType.RPS]: async () => ({ + [OB11MessageDataType.rps]: async () => ({ elementType: ElementType.FACE, elementId: '', faceElement: { - faceIndex: FaceIndex.RPS, + faceIndex: FaceIndex.rps, faceText: '[包剪锤]', faceType: 3, packId: '1', @@ -640,7 +640,7 @@ export class OneBotMsgApi { [OB11MessageDataType.poke]: async () => undefined, - [OB11MessageDataType.Location]: async () => ({ + [OB11MessageDataType.location]: async () => ({ elementType: ElementType.SHARELOCATION, elementId: '', shareLocationElement: { diff --git a/src/onebot/types/entity.ts b/src/onebot/types/entity.ts index f64cd08f..3039ba0b 100644 --- a/src/onebot/types/entity.ts +++ b/src/onebot/types/entity.ts @@ -1,91 +1,89 @@ export interface OB11User { [key: string]: any; - user_id: number; - nickname: string; - remark?: string; - sex?: OB11UserSex; - level?: number; - age?: number; - qid?: string; - login_days?: number; - categoryName?: string; - categoryId?: number; + user_id: number; // 用户ID + nickname: string; // 昵称 + remark?: string; // 备注 + sex?: OB11UserSex; // 性别 + level?: number; // 等级 + age?: number; // 年龄 + qid?: string; // QID + login_days?: number; // 登录天数 + categoryName?: string; // 分组名称 + categoryId?: number; // 分组ID 999为特别关心 } export enum OB11UserSex { - male = 'male', - female = 'female', - unknown = 'unknown' + male = 'male', // 男性 + female = 'female', // 女性 + unknown = 'unknown' // 未知 } export enum OB11GroupMemberRole { - owner = 'owner', - admin = 'admin', - member = 'member', + owner = 'owner', // 群主 + admin = 'admin', // 管理员 + member = 'member', // 成员 } export interface OB11GroupMember { - group_id: number; - user_id: number; - nickname: string; - card?: string; - sex?: OB11UserSex; - age?: number; - join_time?: number; - last_sent_time?: number; - level?: string; - qq_level?: number; - role?: OB11GroupMemberRole; - title?: string; - area?: string; - unfriendly?: boolean; - title_expire_time?: number; - card_changeable?: boolean; - // 以下为gocq字段 - shut_up_timestamp?: number; - // 以下为扩展字段 - is_robot?: boolean; - qage?: number; + group_id: number; // 群ID + user_id: number; // 用户ID + nickname: string; // 昵称 + card?: string; // 群名片 + sex?: OB11UserSex; // 性别 + age?: number; // 年龄 + join_time?: number; // 加入时间 + last_sent_time?: number; // 最后发言时间 + level?: string; // 群等级 + qq_level?: number; // QQ等级 + role?: OB11GroupMemberRole; // 群角色 + title?: string; // 头衔 + area?: string; // 地区 + unfriendly?: boolean; // 是否不友好 + title_expire_time?: number; // 头衔过期时间 + card_changeable?: boolean; // 名片是否可修改 + shut_up_timestamp?: number; // 禁言时间戳 + is_robot?: boolean; // 是否机器人 + qage?: number; // QQ年龄 } export interface OB11Group { - group_id: number; - group_name: string; - member_count?: number; - max_member_count?: number; + group_id: number; // 群ID + group_name: string; // 群名称 + member_count?: number; // 成员数量 + max_member_count?: number; // 最大成员数量 } export interface OB11Sender { - user_id: number, - nickname: string, - sex?: OB11UserSex, - age?: number, - card?: string, // 群名片 - level?: string, // 群等级 - role?: OB11GroupMemberRole + user_id: number; // 用户ID + nickname: string; // 昵称 + sex?: OB11UserSex; // 性别 + age?: number; // 年龄 + card?: string; // 群名片 + level?: string; // 群等级 + role?: OB11GroupMemberRole; // 群角色 } export interface OB11GroupFile { - group_id: number, - file_id: string, - file_name: string, - busid: number, - size: number, - upload_time: number, - dead_time: number, - modify_time: number, - download_times: number, - uploader: number, - uploader_name: string + group_id: number; // 群ID + file_id: string; // 文件ID + file_name: string; // 文件名称 + busid: number; // 业务ID + size: number; // 文件大小 + upload_time: number; // 上传时间 + dead_time: number; // 过期时间 + modify_time: number; // 修改时间 + download_times: number; // 下载次数 + uploader: number; // 上传者ID + uploader_name: string; // 上传者名称 } export interface OB11GroupFileFolder { - group_id: number, - folder_id: string, - folder: string, - folder_name: string, - create_time: number, - creator: number, - creator_name: string, - total_file_count: number, -} + group_id: number; // 群ID + folder_id: string; // 文件夹ID + folder: string; // 文件夹路径 + folder_name: string; // 文件夹名称 + create_time: number; // 创建时间 + creator: number; // 创建者ID + creator_name: string; // 创建者名称 + total_file_count: number; // 文件总数 +} \ No newline at end of file diff --git a/src/onebot/types/message.ts b/src/onebot/types/message.ts index fe4e26e4..71a948c3 100644 --- a/src/onebot/types/message.ts +++ b/src/onebot/types/message.ts @@ -2,46 +2,51 @@ import { OB11Sender } from './entity'; import { EventType } from '@/onebot/event/OneBotEvent'; import { CustomMusicSignPostData, IdMusicSignPostData, PicSubType, RawMessage } from '@/core'; +// 消息类型枚举 export enum OB11MessageType { private = 'private', group = 'group' } +// 消息接口定义 export interface OB11Message { temp_source?: number; message_sent_type?: string; target_id?: number; // 自己发送的消息才有此字段 - self_id?: number, - time: number, - message_id: number, - message_seq: number, // 和message_id一样 - real_id: number, - user_id: number | string, // number - group_id?: number | string, // number - message_type: 'private' | 'group', - sub_type?: 'friend' | 'group' | 'normal', - sender: OB11Sender, - message: OB11MessageData[] | string, - message_format: 'array' | 'string', - raw_message: string, - font: number, - post_type?: EventType, - raw?: RawMessage + self_id?: number; + time: number; + message_id: number; + message_seq: number; // 和message_id一样 + real_id: number; + user_id: number | string; // number + group_id?: number | string; // number + message_type: 'private' | 'group'; + sub_type?: 'friend' | 'group' | 'normal'; + sender: OB11Sender; + message: OB11MessageData[] | string; + message_format: 'array' | 'string'; + raw_message: string; + font: number; + post_type?: EventType; + raw?: RawMessage; } +// 合并转发消息接口定义 export interface OB11ForwardMessage extends OB11Message { content: OB11MessageData[] | string; } +// 返回数据接口定义 export interface OB11Return { - status: string - retcode: number - data: DataType - message: string, - echo?: any, // ws调用api才有此字段 - wording?: string, // go-cqhttp字段,错误信息 + status: string; + retcode: number; + data: DataType; + message: string; + echo?: any; // ws调用api才有此字段 + wording?: string; // go-cqhttp字段,错误信息 } +// 消息数据类型枚举 export enum OB11MessageDataType { text = 'text', image = 'image', @@ -60,108 +65,123 @@ export enum OB11MessageDataType { xml = 'xml', poke = 'poke', dice = 'dice', - RPS = 'rps', - miniapp = 'miniapp',//json类 + rps = 'rps', + miniapp = 'miniapp', // json类 contact = 'contact', - Location = 'location' + location = 'location' } +// 商城表情消息接口定义 export interface OB11MessageMFace { type: OB11MessageDataType.mface; data: { - emoji_package_id: number - emoji_id: string - key: string - summary: string + emoji_package_id: number; + emoji_id: string; + key: string; + summary: string; }; } +// 纯文本消息接口定义 export interface OB11MessageText { - type: OB11MessageDataType.text, + type: OB11MessageDataType.text; data: { - text: string, // 纯文本 - } + text: string; // 纯文本 + }; } + +// 联系人消息接口定义 export interface OB11MessageContext { - type: OB11MessageDataType.contact, + type: OB11MessageDataType.contact; data: { - type:"qq"|"group", - id: string, - } + type: "qq" | "group"; + id: string; + }; } + +// 文件消息基础接口定义 export interface OB11MessageFileBase { data: { - file_unique?: string, + file_unique?: string; path?: string; thumb?: string; name?: string; - file: string, + file: string; url?: string; }; } - +// 图片消息接口定义 export interface OB11MessageImage extends OB11MessageFileBase { - type: OB11MessageDataType.image + type: OB11MessageDataType.image; data: OB11MessageFileBase['data'] & { summary?: string; // 图片摘要 - sub_type?: PicSubType - }, + sub_type?: PicSubType; + }; } +// 语音消息接口定义 export interface OB11MessageRecord extends OB11MessageFileBase { type: OB11MessageDataType.voice; } +// 文件消息接口定义 export interface OB11MessageFile extends OB11MessageFileBase { type: OB11MessageDataType.file; } +// 视频消息接口定义 export interface OB11MessageVideo extends OB11MessageFileBase { type: OB11MessageDataType.video; } +// @消息接口定义 export interface OB11MessageAt { type: OB11MessageDataType.at; data: { - qq: string, // `${number}` | 'all' - name?: string + qq: string; // `${number}` | 'all' + name?: string; }; } +// 回复消息接口定义 export interface OB11MessageReply { type: OB11MessageDataType.reply; data: { - id: string + id: string; }; } +// 表情消息接口定义 export interface OB11MessageFace { type: OB11MessageDataType.face; data: { - id: string + id: string; }; } +// 混合消息类型定义 export type OB11MessageMixType = OB11MessageData[] | string | OB11MessageData; +// 合并转发消息节点接口定义 export interface OB11MessageNode { type: OB11MessageDataType.node; data: { - id?: string - user_id?: number | string // number - uin?: number | string // number, compatible with go-cqhttp - nickname: string - name?: string // compatible with go-cqhttp - content: OB11MessageMixType - source?: string, - news?: { text: string }[], - summary?: string, - prompt?: string - time?: string + id?: string; + user_id?: number | string; // number + uin?: number | string; // number, compatible with go-cqhttp + nickname: string; + name?: string; // compatible with go-cqhttp + content: OB11MessageMixType; + source?: string; + news?: { text: string }[]; + summary?: string; + prompt?: string; + time?: string; }; } +// 合并转发消息节点纯文本接口定义 export type OB11MessageNodePlain = OB11MessageNode & { data: { content?: Array; @@ -169,73 +189,84 @@ export type OB11MessageNodePlain = OB11MessageNode & { }; }; +// 音乐消息接口定义 export interface OB11MessageIdMusic { type: OB11MessageDataType.music; data: IdMusicSignPostData; } +// 自定义音乐消息接口定义 export interface OB11MessageCustomMusic { type: OB11MessageDataType.music; data: Omit & { content?: string }; } +// JSON消息接口定义 export interface OB11MessageJson { type: OB11MessageDataType.json; data: { config?: { token: string }, data: string | object }; } +// 骰子消息接口定义 export interface OB11MessageDice { - type: OB11MessageDataType.dice, + type: OB11MessageDataType.dice; data: { - result: number /* intended */ | string /* in fact */ - } + result: number /* intended */ | string /* in fact */; + }; } +// 猜拳消息接口定义 export interface OB11MessageRPS { - type: OB11MessageDataType.RPS, + type: OB11MessageDataType.rps; data: { - result: number | string - } + result: number | string; + }; } +// Markdown消息接口定义 export interface OB11MessageMarkdown { type: OB11MessageDataType.markdown; data: { - content: string + content: string; }; } +// 合并转发消息接口定义 export interface OB11MessageForward { type: OB11MessageDataType.forward; data: { - id: string, - content: OB11Message[] + id: string; + content: OB11Message[]; }; } +// 消息数据类型定义 export type OB11MessageData = OB11MessageText | OB11MessageFace | OB11MessageMFace | OB11MessageAt | OB11MessageReply | OB11MessageImage | OB11MessageRecord | OB11MessageFile | OB11MessageVideo | OB11MessageNode | OB11MessageIdMusic | OB11MessageCustomMusic | OB11MessageJson | - OB11MessageDice | OB11MessageRPS | OB11MessageMarkdown | OB11MessageForward | OB11MessageContext + OB11MessageDice | OB11MessageRPS | OB11MessageMarkdown | OB11MessageForward | OB11MessageContext; +// 发送消息接口定义 export interface OB11PostSendMsg { - message_type?: 'private' | 'group' - user_id?: string, - group_id?: string, + message_type?: 'private' | 'group'; + user_id?: string; + group_id?: string; message: OB11MessageMixType; messages?: OB11MessageMixType; // 兼容 go-cqhttp - auto_escape?: boolean | string - source?: string, - news?: { text: string }[], - summary?: string, - prompt?: string - time?: string + auto_escape?: boolean | string; + source?: string; + news?: { text: string }[]; + summary?: string; + prompt?: string; + time?: string; } + +// 上下文接口定义 export interface OB11PostContext { - message_type?: 'private' | 'group' - user_id?: string, - group_id?: string, -} + message_type?: 'private' | 'group'; + user_id?: string; + group_id?: string; +} \ No newline at end of file From 583ec10c7c31f15a3aa3b33ffbfc70e210a83e61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 10:43:05 +0800 Subject: [PATCH 027/418] =?UTF-8?q?fix:=20=E8=A7=84=E8=8C=83=E5=8C=96?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/apis/file.ts | 2 +- src/core/entities/constant.ts | 2 + src/core/entities/element.ts | 4 +- src/core/entities/index.ts | 3 +- src/core/entities/msg.ts | 123 ++++++++++++++++++++++++++-------- 5 files changed, 101 insertions(+), 33 deletions(-) create mode 100644 src/core/entities/constant.ts diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index 6a3ee550..ebe4364f 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -125,7 +125,7 @@ export class NTQQFileApi { fileName: fileName, sourcePath: path, original: true, - picType: isGIF(picPath) ? PicType.gif : PicType.jpg, + picType: isGIF(picPath) ? PicType.GIF : PicType.JGP, picSubType: subType, fileUuid: '', fileSubId: '', diff --git a/src/core/entities/constant.ts b/src/core/entities/constant.ts new file mode 100644 index 00000000..696a9ae3 --- /dev/null +++ b/src/core/entities/constant.ts @@ -0,0 +1,2 @@ +export const IMAGE_HTTP_HOST = 'https://gchat.qpic.cn'; +export const IMAGE_HTTP_HOST_NT = 'https://multimedia.nt.qq.com.cn'; diff --git a/src/core/entities/element.ts b/src/core/entities/element.ts index 67e9e6e9..30542b92 100644 --- a/src/core/entities/element.ts +++ b/src/core/entities/element.ts @@ -1,4 +1,4 @@ -import { ElementType, FaceType, MessageElement, NTGrayTipElementSubTypeV2, PicSubType, PicType, TipAioOpGrayTipElement, TipGroupElement, viedo_type } from "./msg"; +import { ElementType, FaceType, MessageElement, NTGrayTipElementSubTypeV2, PicSubType, PicType, TipAioOpGrayTipElement, TipGroupElement, NTVideoType } from "./msg"; type ElementFullBase = Omit; @@ -84,7 +84,7 @@ export interface VideoElement { thumbMd5?: string; fileTime?: number; // second thumbSize?: number; // byte - fileFormat?: viedo_type; // 2表示mp4 参考下面条目 + fileFormat?: NTVideoType; // 2表示mp4 参考下面条目 fileSize?: string; // byte thumbWidth?: number; thumbHeight?: number; diff --git a/src/core/entities/index.ts b/src/core/entities/index.ts index 2471a614..d6a32581 100644 --- a/src/core/entities/index.ts +++ b/src/core/entities/index.ts @@ -6,4 +6,5 @@ export * from './cache'; export * from './system'; export * from './webapi'; export * from './sign'; -export * from './element'; \ No newline at end of file +export * from './element'; +export * from './constant'; \ No newline at end of file diff --git a/src/core/entities/msg.ts b/src/core/entities/msg.ts index 18735521..90b2a6dc 100644 --- a/src/core/entities/msg.ts +++ b/src/core/entities/msg.ts @@ -1,14 +1,18 @@ import { GroupMemberRole } from '@/core'; import { ActionBarElement, ArkElement, AvRecordElement, CalendarElement, FaceBubbleElement, FaceElement, FileElement, GiphyElement, GrayTipElement, MarketFaceElement, PicElement, PttElement, RecommendedMsgElement, ReplyElement, ShareLocationElement, StructLongMsgElement, TaskTopMsgElement, TextElement, TofuRecordElement, VideoElement, YoloGameResultElement } from './element'; -// 表示对等方的信息 +/** + * 表示对等方的信息 + */ export interface Peer { chatType: ChatType; // 聊天类型 peerUid: string; // 对等方的唯一标识符 guildId?: string; // 可选的频道ID } -// 表示被踢下线的信息 +/** + * 表示被踢下线的信息 + */ export interface KickedOffLineInfo { appId: number; // 应用ID instanceId: number; // 实例ID @@ -19,6 +23,9 @@ export interface KickedOffLineInfo { securityKickedType: number; // 安全踢出类型 } +/** + * 获取文件列表的参数 + */ export interface GetFileListParam { sortType: number; fileCount: number; @@ -28,6 +35,9 @@ export interface GetFileListParam { folderId?: string; } +/** + * 消息元素类型枚举 + */ export enum ElementType { UNKNOWN = 0, TEXT = 1, @@ -63,6 +73,9 @@ export enum ElementType { ACTIONBAR = 44 } +/** + * 消息类型枚举 + */ export enum NTMsgType { KMSGTYPEARKSTRUCT = 11, KMSGTYPEFACEBUBBLE = 24, @@ -87,17 +100,26 @@ export enum NTMsgType { KMSGTYPEWALLET = 10 } +/** + * 图片类型枚举 + */ export enum PicType { - gif = 2000, - jpg = 1000 + GIF = 2000, + JGP = 1000 } +/** + * 图片子类型枚举 + */ export enum PicSubType { Normal = 0, // 普通图片 Face = 1 // 表情包小图 //...待补全 其余见NT Android } +/** + * 消息@类型枚举 + */ export enum NTMsgAtType { ATTYPEALL = 1, ATTYPECATEGORY = 512, @@ -112,6 +134,9 @@ export enum NTMsgAtType { ATTYPEUNKNOWN = 0 } +/** + * 消息元素接口 + */ export interface MessageElement { elementType: ElementType, elementId: string, @@ -146,6 +171,9 @@ export interface MessageElement { actionBarElement?: ActionBarElement } +/** + * 消息来源类型枚举 + */ export enum MsgSourceType { K_DOWN_SOURCETYPE_AIOINNER = 1, K_DOWN_SOURCETYPE_BIGSCREEN = 2, @@ -153,7 +181,9 @@ export enum MsgSourceType { K_DOWN_SOURCETYPE_UNKNOWN = 0 } -// 来自Android分析 +/** + * 聊天类型枚举 + */ export enum ChatType { KCHATTYPEADELIE = 42, KCHATTYPEBUDDYNOTIFY = 5, @@ -197,9 +227,9 @@ export enum ChatType { KCHATTYPEWEIYUN = 40, } -export const IMAGE_HTTP_HOST = 'https://gchat.qpic.cn'; -export const IMAGE_HTTP_HOST_NT = 'https://multimedia.nt.qq.com.cn'; - +/** + * 灰色提示元素子类型枚举 + */ export enum NTGrayTipElementSubTypeV2 { GRAYTIP_ELEMENT_SUBTYPE_AIOOP = 15, GRAYTIP_ELEMENT_SUBTYPE_BLOCK = 14, @@ -221,20 +251,28 @@ export enum NTGrayTipElementSubTypeV2 { GRAYTIP_ELEMENT_SUBTYPE_XMLMSG = 12, } - +/** + * 表情类型枚举 + */ export enum FaceType { normal = 1, // 小黄脸 - normal2 = 2, // 新小黄脸, 从faceIndex 222开始? + normal2 = 2, // 新小黄脸 dice = 3, // 骰子 poke = 5 // 拍一拍 } +/** + * 表情索引枚举 + */ export enum FaceIndex { dice = 358, - rps = 359 + rps = 359 } -export enum viedo_type { +/** + * 视频类型枚举 + */ +export enum NTVideoType { VIDEO_FORMAT_AFS = 7, VIDEO_FORMAT_AVI = 1, VIDEO_FORMAT_MKV = 4, @@ -248,10 +286,16 @@ export enum viedo_type { VIDEO_FORMAT_WMV = 3, } +/** + * Markdown元素接口 + */ export interface MarkdownElement { content: string; } +/** + * 内联键盘按钮接口 + */ export interface InlineKeyboardElementRowButton { id: string; label: string; @@ -271,6 +315,9 @@ export interface InlineKeyboardElementRowButton { subscribeDataTemplateIds: []; } +/** + * 内联键盘元素接口 + */ export interface InlineKeyboardElement { rows: [{ buttons: InlineKeyboardElementRowButton[] @@ -278,31 +325,29 @@ export interface InlineKeyboardElement { botAppid: string; } -export interface TipAioOpGrayTipElement { // 这是什么提示来着? +/** + * Aio操作灰色提示元素接口 + */ +export interface TipAioOpGrayTipElement { operateType: number; peerUid: string; fromGrpCodeOfTmpChat: string; } +/** + * 群提示元素类型枚举 + */ export enum TipGroupElementType { memberIncrease = 1, kicked = 3, // 被移出群 ban = 8 } -// public final class MemberAddShowType { -// public static final int KOTHERADD = 0; -// public static final int KOTHERADDBYOTHERQRCODE = 2; -// public static final int KOTHERADDBYYOURQRCODE = 3; -// public static final int KOTHERINVITEOTHER = 5; -// public static final int KOTHERINVITEYOU = 6; -// public static final int KYOUADD = 1; -// public static final int KYOUADDBYOTHERQRCODE = 4; -// public static final int KYOUALREADYMEMBER = 8; -// public static final int KYOUINVITEOTHER = 7; -// } +/** + * 群提示元素接口 + */ export interface TipGroupElement { - type: TipGroupElementType; // 1是表示有人加入群; 自己加入群也会收到这个 + type: TipGroupElementType; // 1表示有人加入群; 自己加入群也会收到这个 role: 0; // 暂时不知 groupName: string; // 暂时获取不到 memberUid: string; @@ -340,12 +385,18 @@ export interface TipGroupElement { }; } +/** + * 多条转发消息元素接口 + */ export interface MultiForwardMsgElement { xmlContent: string; // xml格式的消息内容 resId: string; fileName: string; } +/** + * 发送状态类型枚举 + */ export enum SendStatusType { KSEND_STATUS_FAILED = 0, KSEND_STATUS_SENDING = 1, @@ -353,7 +404,9 @@ export enum SendStatusType { KSEND_STATUS_SUCCESS_NOSEQ = 3 } -// 原始消息 +/** + * 原始消息接口 + */ export interface RawMessage { parentMsgPeer: Peer; // 父消息的Peer parentMsgIdList: string[];// 父消息 ID 列表 @@ -382,6 +435,10 @@ export interface RawMessage { sourceType: MsgSourceType;// 消息来源类型 isOnlineMsg: boolean;// 是否为在线消息 } + +/** + * 查询消息参数接口 + */ export interface QueryMsgsParams { chatInfo: Peer; filterMsgType: []; @@ -393,12 +450,18 @@ export interface QueryMsgsParams { isIncludeCurrent: boolean; } +/** + * 临时聊天信息API接口 + */ export interface TmpChatInfoApi { errMsg: string; result: number; tmpChatInfo?: TmpChatInfo; } +/** + * 临时聊天信息接口 + */ export interface TmpChatInfo { chatType: number; fromNick: string; @@ -407,6 +470,10 @@ export interface TmpChatInfo { sessionType: number; sig: string; } + +/** + * 消息请求类型接口 + */ export interface MsgReqType { peer: Peer, byType: number, @@ -419,6 +486,4 @@ export interface MsgReqType { includeSelf: boolean, includeDeleteMsg: boolean, extraCnt: number -} -//getMsgsIncludeSelf Peer必须 byType 1 -//getMsgsWithMsgTimeAndClientSeqForC2C Peer必须 byType 3 +} \ No newline at end of file From fa70eec3d8006679403723fc41fdbbfd08a304bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 10:47:12 +0800 Subject: [PATCH 028/418] =?UTF-8?q?refactor:=20core=E7=B1=BB=E5=9E=8Brefac?= =?UTF-8?q?tor=E7=BB=93=E6=9D=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/entities/group.ts | 89 ++++++++++++++++++----------------- src/core/entities/user.ts | 96 +++++++++++++++++++++++++------------- 2 files changed, 111 insertions(+), 74 deletions(-) diff --git a/src/core/entities/group.ts b/src/core/entities/group.ts index 780b9f9a..7885bbe3 100644 --- a/src/core/entities/group.ts +++ b/src/core/entities/group.ts @@ -1,12 +1,13 @@ import { QQLevel, Sex } from './user'; export interface KickMemberInfo { - optFlag: number, - optOperate: number, - optMemberUid: string, - optBytesMsg: string, + optFlag: number; + optOperate: number; + optMemberUid: string; + optBytesMsg: string; } -//getGroupDetailInfo GroupCode,GroupInfoSource + +// 获取群详细信息的来源类型 export enum GroupInfoSource { KUNSPECIFIED, KBIGDATACARD, @@ -16,6 +17,7 @@ export enum GroupInfoSource { KRECENTCONTACT, KMOREPANEL } + export interface GroupExt0xEF0InfoFilter { bindGuildId: number; blacklistExpireTime: number; @@ -52,18 +54,20 @@ export interface GroupExt0xEF0InfoFilter { } export interface KickMemberV2Req { - groupCode: string, - kickFlag: number, - kickList: Array, - kickListUids: Array, - kickMsg: string + groupCode: string; + kickFlag: number; + kickList: Array; + kickListUids: Array; + kickMsg: string; } +// 数据来源类型 export enum DataSource { LOCAL, REMOTE } +// 群列表更新类型 export enum GroupListUpdateType { REFRESHALL, GETALL, @@ -80,36 +84,37 @@ export interface GroupMemberCache { } export interface Group { - groupCode: string, - createTime?: string,//高版本才有 - maxMember: number, - memberCount: number, - groupName: string, - groupStatus: number, - memberRole: number, - isTop: boolean, - toppedTimestamp: string, - privilegeFlag: number, //65760 - isConf: boolean, - hasModifyConfGroupFace: boolean, - hasModifyConfGroupName: boolean, - remarkName: string, - hasMemo: boolean, - groupShutupExpireTime: string, //"0", - personShutupExpireTime: string, //"0", - discussToGroupUin: string, //"0", - discussToGroupMaxMsgSeq: number, - discussToGroupTime: number, - groupFlagExt: number, //1073938496, - authGroupType: number, //0, - groupCreditLevel: number, //0, - groupFlagExt3: number, //0, + groupCode: string; + createTime?: string; + maxMember: number; + memberCount: number; + groupName: string; + groupStatus: number; + memberRole: number; + isTop: boolean; + toppedTimestamp: string; + privilegeFlag: number; + isConf: boolean; + hasModifyConfGroupFace: boolean; + hasModifyConfGroupName: boolean; + remarkName: string; + hasMemo: boolean; + groupShutupExpireTime: string; + personShutupExpireTime: string; + discussToGroupUin: string; + discussToGroupMaxMsgSeq: number; + discussToGroupTime: number; + groupFlagExt: number; + authGroupType: number; + groupCreditLevel: number; + groupFlagExt3: number; groupOwnerId: { - memberUin: string, //"0", - memberUid: string, //"u_fbf8N7aeuZEnUiJAbQ9R8Q" - } + memberUin: string; + memberUid: string; + }; } +// 群成员角色类型 export enum GroupMemberRole { normal = 2, admin = 3, @@ -126,10 +131,10 @@ export interface GroupMember { nick: string; qid: string; remark: string; - role: GroupMemberRole; // 群主:4, 管理员:3,群员:2 - shutUpTime: number; // 禁言时间,单位是什么暂时不清楚 - uid: string; // 加密的字符串 - uin: string; // QQ号 + role: GroupMemberRole; + shutUpTime: number; // 禁言时间(S) + uid: string; + uin: string; isRobot: boolean; sex?: Sex; age?: number; @@ -137,4 +142,4 @@ export interface GroupMember { isChangeRole: boolean; joinTime: string; lastSpeakTime: string; -} +} \ No newline at end of file diff --git a/src/core/entities/user.ts b/src/core/entities/user.ts index 77455cce..a5a31a30 100644 --- a/src/core/entities/user.ts +++ b/src/core/entities/user.ts @@ -1,16 +1,19 @@ +// 性别枚举 export enum Sex { male = 1, female = 2, unknown = 255, } +// 好友分类类型 export interface BuddyCategoryType { categoryId: number; - categroyName: string; - categroyMbCount: number; + categoryName: string; + categoryMbCount: number; buddyList: User[]; } +// 核心信息 export interface CoreInfo { uid: string; uin: string; @@ -18,35 +21,40 @@ export interface CoreInfo { remark: string; } +// 基本信息 export interface BaseInfo { qid: string; longNick: string; - birthday_year: number; - birthday_month: number; - birthday_day: number; + birthdayYear: number; + birthdayMonth: number; + birthdayDay: number; age: number; sex: number; - eMail: string; + email: string; phoneNum: string; categoryId: number; richTime: number; richBuffer: string; } +// 音乐信息 interface MusicInfo { buf: string; } +// 视频业务信息 interface VideoBizInfo { cid: string; tvUrl: string; synchType: string; } +// 视频信息 interface VideoInfo { name: string; } +// 扩展在线业务信息 interface ExtOnlineBusinessInfo { buf: string; customStatus: any; @@ -54,10 +62,12 @@ interface ExtOnlineBusinessInfo { videoInfo: VideoInfo; } +// 扩展缓冲区 interface ExtBuffer { buf: string; } +// 用户状态 interface UserStatus { uid: string; uin: string; @@ -79,12 +89,14 @@ interface UserStatus { extBuffer: ExtBuffer; } +// 特权图标 interface PrivilegeIcon { jumpUrl: string; openIconList: any[]; closeIconList: any[]; } +// 增值服务信息 interface VasInfo { vipFlag: boolean; yearVipFlag: boolean; @@ -117,6 +129,7 @@ interface VasInfo { privilegeIcon: PrivilegeIcon; } +// 关系标志 interface RelationFlags { topTime: string; isBlock: boolean; @@ -134,7 +147,7 @@ interface RelationFlags { isHidePrivilegeIcon: number; } - +// 通用扩展信息 interface CommonExt { constellation: number; shengXiao: number; @@ -153,20 +166,26 @@ interface CommonExt { labels: any[]; qqLevel: QQLevel; } + +// 好友列表请求类型枚举 export enum BuddyListReqType { KNOMAL, KLETTER } + +// 图片信息 interface Pic { picId: string; picTime: number; picUrlMap: Record; } +// 照片墙 interface PhotoWall { picList: Pic[]; } +// 简单信息 export interface SimpleInfo { uid?: string; uin?: string; @@ -179,8 +198,10 @@ export interface SimpleInfo { intimate: any; } +// 好友类型 export type FriendV2 = SimpleInfo; +// 自身状态信息 export interface SelfStatusInfo { uid: string; status: number; @@ -192,6 +213,7 @@ export interface SelfStatusInfo { setTime: string; } +// 用户详细信息监听参数 export interface UserDetailInfoListenerArg { uid: string; uin: string; @@ -200,14 +222,16 @@ export interface UserDetailInfoListenerArg { photoWall: PhotoWall; } +// 修改个人资料参数 export interface ModifyProfileParams { - nick: string, - longNick: string, - sex: Sex, - birthday: { birthday_year: string, birthday_month: string, birthday_day: string }, - location: any//undefined + nick: string; + longNick: string; + sex: Sex; + birthday: { birthdayYear: string, birthdayMonth: string, birthdayDay: string }; + location: any; } +// 好友资料点赞请求 export interface BuddyProfileLikeReq { friendUids: string[]; basic: number; @@ -219,6 +243,7 @@ export interface BuddyProfileLikeReq { limit?: number; } +// QQ等级信息 export interface QQLevel { crownNum: number; sunNum: number; @@ -226,28 +251,29 @@ export interface QQLevel { starNum: number; } +// 用户信息 export interface User { - uid: string; // 加密的字符串 - uin: string; // QQ号 + uid: string; + uin: string; nick: string; avatarUrl?: string; - longNick?: string; // 签名 + longNick?: string; remark?: string; sex?: Sex; age?: number; qqLevel?: QQLevel; qid?: string; - birthday_year?: number; - birthday_month?: number; - birthday_day?: number; + birthdayYear?: number; + birthdayMonth?: number; + birthdayDay?: number; topTime?: string; constellation?: number; shengXiao?: number; kBloodType?: number; - homeTown?: string; //"0-0-0"; + homeTown?: string; makeFriendCareer?: number; pos?: string; - eMail?: string; + email?: string; phoneNum?: string; college?: string; country?: string; @@ -266,10 +292,10 @@ export interface User { privilegeIcon?: { jumpUrl: string; openIconList: unknown[]; - closeIconList: unknown[] + closeIconList: unknown[]; }; photoWall?: { - picList: unknown[] + picList: unknown[]; }; vipFlag?: boolean; yearVipFlag?: boolean; @@ -285,34 +311,40 @@ export interface User { pendantId?: string; } +// 自身信息 export interface SelfInfo extends User { online?: boolean; } + +// 好友类型 export type Friend = User; -// 本来是 Friend extends User 现在用不到 - +// 业务键枚举 export enum BizKey { KPRIVILEGEICON, KPHOTOWALL } +// 根据UIN获取用户详细信息 export interface UserDetailInfoByUin { - result: number, - errMsg: string, + result: number; + errMsg: string; detail: { - uid: string, - uin: string, - simpleInfo: SimpleInfo, - commonExt: CommonExt, - photoWall: null - } + uid: string; + uin: string; + simpleInfo: SimpleInfo; + commonExt: CommonExt; + photoWall: null; + }; } + +// 用户详细信息来源枚举 export enum UserDetailSource { KDB, KSERVER } +// 个人资料业务类型枚举 export enum ProfileBizType { KALL, KBASEEXTEND, From de64b030544c41f9c0d5cab416fc0045eb3c1c79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 11:01:35 +0800 Subject: [PATCH 029/418] =?UTF-8?q?refactor:=20=E6=97=A7=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=A7=BB=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/video.ts | 98 ++++++++++--------- src/core/apis/file.ts | 2 +- src/core/apis/group.ts | 6 +- src/core/apis/msg.ts | 12 +-- src/core/entities/cache.ts | 97 +++++++++--------- src/onebot/action/guild/GetGuildList.ts | 2 +- src/onebot/action/guild/GetGuildProfile.ts | 2 +- src/onebot/action/index.ts | 4 +- src/onebot/action/msg/SetMsgEmojiLike.ts | 11 +-- src/onebot/cqcode.ts | 42 ++++---- .../event/notice/OB11GroupAdminNoticeEvent.ts | 2 +- .../event/notice/OB11GroupDecreaseEvent.ts | 4 +- 12 files changed, 143 insertions(+), 139 deletions(-) diff --git a/src/common/video.ts b/src/common/video.ts index 906f7e6a..e474926a 100644 --- a/src/common/video.ts +++ b/src/common/video.ts @@ -5,59 +5,67 @@ import type { LogWrapper } from './log'; export const defaultVideoThumbB64 = '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'; -export async function getVideoInfo(filePath: string, logger: LogWrapper) { - const size = fs.statSync(filePath).size; - return new Promise<{ - width: number, - height: number, - time: number, - format: string, - size: number, - filePath: string - }>((resolve, reject) => { - const ffmpegPath = process.env.FFMPEG_PATH; - if (ffmpegPath) - ffmpeg.setFfmpegPath(ffmpegPath); +interface VideoInfo { + width: number; + height: number; + time: number; + format: string; + size: number; + filePath: string; +} + +async function getFileSize(filePath: string): Promise { + const stats = await fs.promises.stat(filePath); + return stats.size; +} + +function setFfmpegPath() { + const ffmpegPath = process.env.FFMPEG_PATH; + if (ffmpegPath) { + ffmpeg.setFfmpegPath(ffmpegPath); + } +} + +function extractVideoStream(metadata: ffmpeg.FfprobeData): FfprobeStream | undefined { + return metadata.streams.find((s: FfprobeStream) => s.codec_type === 'video'); +} + +async function probeVideo(filePath: string): Promise { + return new Promise((resolve, reject) => { ffmpeg(filePath).ffprobe((err: any, metadata: ffmpeg.FfprobeData) => { if (err) { reject(new Error('无法获取视频信息。')); } else { - const videoStream = metadata.streams.find((s: FfprobeStream) => s.codec_type === 'video'); - if (videoStream) { - logger.log(`视频尺寸: ${videoStream.width}x${videoStream.height}`); - } else { - return reject(new Error('未找到视频流信息。')); - } - resolve({ - width: videoStream.width!, height: videoStream.height!, - time: +(videoStream.duration ?? 10), - format: metadata.format.format_name!, - size, - filePath, - }); + resolve(metadata); } }); }); } -export function checkFfmpeg(logger: LogWrapper, newPath: string | null = null): Promise { - return new Promise((resolve) => { - logger.log('开始检查ffmpeg', newPath); - if (newPath) { - ffmpeg.setFfmpegPath(newPath); +export async function getVideoInfo(filePath: string, logger: LogWrapper): Promise { + try { + const size = await getFileSize(filePath); + setFfmpegPath(); + const metadata = await probeVideo(filePath); + const videoStream = extractVideoStream(metadata); + + if (!videoStream) { + throw new Error('未找到视频流信息。'); } - try { - ffmpeg.getAvailableFormats((err: any) => { - if (err) { - logger.log('ffmpeg is not installed or not found in PATH:', err); - resolve(false); - } else { - logger.log('ffmpeg is installed.'); - resolve(true); - } - }); - } catch (e) { - resolve(false); + + logger.log(`视频尺寸: ${videoStream.width}x${videoStream.height}`); + if (!videoStream.width || !metadata.format.format_name || !videoStream.height) { + throw new Error('获取基础信息失败') } - }); -} + return { + width: videoStream.width, + height: videoStream.height, + time: +(videoStream.duration ?? 10), + format: metadata.format.format_name, + size, + filePath, + }; + } catch (error) { + throw new Error('无法获取视频信息。'); + } +} \ No newline at end of file diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index ebe4364f..cfe10a81 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -320,7 +320,7 @@ export class NTQQFileApi { } async downloadMedia(msgId: string, chatType: ChatType, peerUid: string, elementId: string, thumbPath: string, sourcePath: string, timeout = 1000 * 60 * 2, force: boolean = false) { - // 用于下载收到的消息中的图片等 + // 用于下载文件 if (sourcePath && fs.existsSync(sourcePath)) { if (force) { try { diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index 0380186c..ab4f0fa5 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -147,14 +147,11 @@ export class NTQQGroupApi { if (!members) { try { members = await this.getGroupMembers(groupCodeStr); - // 更新群成员列表 this.groupMemberCache.set(groupCodeStr, members); } catch (e) { return null; } } - - // log('getGroupMember', members); function getMember() { let member: GroupMember | undefined; if (isNumeric(memberUinOrUidStr)) { @@ -367,7 +364,6 @@ export class NTQQGroupApi { } } this.context.session.getGroupService().destroyMemberListScene(sceneId); - //console.log('GetGroupMembersV3 len :', result.result.infos.size, resMode2?.infos.size, groupQQ); return { infos: new Map([...(resMode2?.infos ?? []), ...result.result.infos]), finish: result.result.finish, @@ -430,7 +426,7 @@ export class NTQQGroupApi { return this.context.session.getGroupService().operateSysNotify( false, { - operateType: operateType, // 2 拒绝 + operateType: operateType, targetMsg: { seq: seq, // 通知序列号 type: type, diff --git a/src/core/apis/msg.ts b/src/core/apis/msg.ts index 4335fc73..8d575043 100644 --- a/src/core/apis/msg.ts +++ b/src/core/apis/msg.ts @@ -3,12 +3,7 @@ import { GroupFileInfoUpdateItem, InstanceContext, NapCatCore } from '@/core'; import { GeneralCallResult } from '@/core/services/common'; export class NTQQMsgApi { - getMsgByClientSeqAndTime(peer: Peer, replyMsgClientSeq: string, replyMsgTime: string) { - return this.context.session.getMsgService().getMsgByClientSeqAndTime(peer, replyMsgClientSeq, replyMsgTime); - } - // nt_qq//global//nt_data//Emoji//emoji-resource//sysface_res/apng/ 下可以看到所有QQ表情预览 - // nt_qq\global\nt_data\Emoji\emoji-resource\face_config.json 里面有所有表情的id, 自带表情id是QSid, 标准emoji表情id是QCid - // 其实以官方文档为准是最好的,https://bot.q.qq.com/wiki/develop/api-v2/openapi/emoji/model.html#EmojiType + context: InstanceContext; core: NapCatCore; @@ -17,7 +12,10 @@ export class NTQQMsgApi { this.context = context; this.core = core; } - + getMsgByClientSeqAndTime(peer: Peer, replyMsgClientSeq: string, replyMsgTime: string) { + // https://bot.q.qq.com/wiki/develop/api-v2/openapi/emoji/model.html#EmojiType 可以用过特殊方式拉取 + return this.context.session.getMsgService().getMsgByClientSeqAndTime(peer, replyMsgClientSeq, replyMsgTime); + } async getAioFirstViewLatestMsgs(peer: Peer, MsgCount: number) { return this.context.session.getMsgService().getAioFirstViewLatestMsgs(peer, MsgCount); } diff --git a/src/core/entities/cache.ts b/src/core/entities/cache.ts index 8e4cf813..27d8433a 100644 --- a/src/core/entities/cache.ts +++ b/src/core/entities/cache.ts @@ -1,65 +1,68 @@ import { ChatType } from './msg'; -export interface CacheScanResult { - result: number; - size: [ // 单位为字节 - string, // 系统总存储空间 - string, // 系统可用存储空间 - string, // 系统已用存储空间 - string, // QQ总大小 - string, // 「聊天与文件」大小 - string, // 未知 - string, // 「缓存数据」大小 - string, // 「其他数据」大小 - string, // 未知 - ]; -} - +/** + * 聊天缓存列表 + */ export interface ChatCacheList { - pageCount: number; - infos: ChatCacheListItem[]; + pageCount: number; // 页数 + infos: ChatCacheListItem[]; // 聊天缓存项列表 } +/** + * 聊天缓存列表项 + */ export interface ChatCacheListItem { - chatType: ChatType; - basicChatCacheInfo: ChatCacheListItemBasic; - guildChatCacheInfo: unknown[]; // TODO: 没用过频道所以不知道这里边的详细内容 + chatType: ChatType; // 聊天类型 + basicChatCacheInfo: ChatCacheListItemBasic; // 基本聊天缓存信息 + guildChatCacheInfo: unknown[]; // 公会聊天缓存信息 } +/** + * 基本聊天缓存信息 + */ export interface ChatCacheListItemBasic { - chatSize: string; - chatTime: string; - uid: string; - uin: string; - remarkName: string; - nickName: string; - chatType?: ChatType; - isChecked?: boolean; + chatSize: string; // 聊天大小 + chatTime: string; // 聊天时间 + uid: string; // 用户ID + uin: string; // 用户号码 + remarkName: string; // 备注名 + nickName: string; // 昵称 + chatType?: ChatType; // 聊天类型(可选) + isChecked?: boolean; // 是否已检查(可选) } +/** + * 缓存文件类型枚举 + */ export enum CacheFileType { - IMAGE = 0, - VIDEO = 1, - AUDIO = 2, - DOCUMENT = 3, - OTHER = 4, + IMAGE = 0, // 图片 + VIDEO = 1, // 视频 + AUDIO = 2, // 音频 + DOCUMENT = 3, // 文档 + OTHER = 4, // 其他 } +/** + * 缓存文件列表 + */ export interface CacheFileList { - infos: CacheFileListItem[], + infos: CacheFileListItem[]; // 缓存文件项列表 } +/** + * 缓存文件列表项 + */ export interface CacheFileListItem { - fileSize: string; - fileTime: string; - fileKey: string; - elementId: string; - elementIdStr: string; - fileType: CacheFileType; - path: string; - fileName: string; - senderId: string; - previewPath: string; - senderName: string; - isChecked?: boolean; -} + fileSize: string; // 文件大小 + fileTime: string; // 文件时间 + fileKey: string; // 文件键 + elementId: string; // 元素ID + elementIdStr: string; // 元素ID字符串 + fileType: CacheFileType; // 文件类型 + path: string; // 路径 + fileName: string; // 文件名 + senderId: string; // 发送者ID + previewPath: string; // 预览路径 + senderName: string; // 发送者名称 + isChecked?: boolean; // 是否已检查(可选) +} \ No newline at end of file diff --git a/src/onebot/action/guild/GetGuildList.ts b/src/onebot/action/guild/GetGuildList.ts index 1195ea3e..8d586ad7 100644 --- a/src/onebot/action/guild/GetGuildList.ts +++ b/src/onebot/action/guild/GetGuildList.ts @@ -1,7 +1,7 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; -export default class GetGuildList extends OneBotAction { +export class GetGuildList extends OneBotAction { actionName = ActionName.GetGuildList; async _handle(payload: null): Promise { diff --git a/src/onebot/action/guild/GetGuildProfile.ts b/src/onebot/action/guild/GetGuildProfile.ts index 5a623388..183b56a8 100644 --- a/src/onebot/action/guild/GetGuildProfile.ts +++ b/src/onebot/action/guild/GetGuildProfile.ts @@ -1,7 +1,7 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '../types'; -export default class GetGuildProfile extends OneBotAction { +export class GetGuildProfile extends OneBotAction { actionName = ActionName.GetGuildProfile; async _handle(payload: null): Promise { diff --git a/src/onebot/action/index.ts b/src/onebot/action/index.ts index edbf8321..9c6be913 100644 --- a/src/onebot/action/index.ts +++ b/src/onebot/action/index.ts @@ -22,7 +22,6 @@ import GoCQHTTPGetStrangerInfo from './go-cqhttp/GetStrangerInfo'; import SendLike from './user/SendLike'; import SetGroupAddRequest from './group/SetGroupAddRequest'; import SetGroupLeave from './group/SetGroupLeave'; -import GetGuildList from './guild/GetGuildList'; import SetFriendAddRequest from './user/SetFriendAddRequest'; import SetGroupWholeBan from './group/SetGroupWholeBan'; import SetGroupName from './group/SetGroupName'; @@ -70,7 +69,6 @@ import { FetchEmojiLike } from './extends/FetchEmojiLike'; import { FetchUserProfileLike } from './extends/FetchUserProfileLike'; import { NapCatCore } from '@/core'; import { NapCatOneBot11Adapter } from '@/onebot'; -import GetGuildProfile from './guild/GetGuildProfile'; import { SetInputStatus } from './extends/SetInputStatus'; import { GetCSRF } from './system/GetCSRF'; import { DelGroupNotice } from './group/DelGroupNotice'; @@ -102,6 +100,8 @@ import { GetMiniAppArk } from "@/onebot/action/extends/GetMiniAppArk"; import { GetAiRecord } from "@/onebot/action/group/GetAiRecord"; import { SendGroupAiRecord } from "@/onebot/action/group/SendGroupAiRecord"; import { GetAiCharacters } from "@/onebot/action/extends/GetAiCharacters"; +import { GetGuildList } from './guild/GetGuildList'; +import { GetGuildProfile } from './guild/GetGuildProfile'; export type ActionMap = Map>; diff --git a/src/onebot/action/msg/SetMsgEmojiLike.ts b/src/onebot/action/msg/SetMsgEmojiLike.ts index e0e9305b..4d40e285 100644 --- a/src/onebot/action/msg/SetMsgEmojiLike.ts +++ b/src/onebot/action/msg/SetMsgEmojiLike.ts @@ -27,19 +27,18 @@ export class SetMsgEmojiLike extends OneBotAction { if (!payload.emoji_id) { throw new Error('emojiId not found'); } - if (!payload.set) { - payload.set = true; - } + payload.set = payload.set ?? true; const msgData = (await this.core.apis.MsgApi.getMsgsByMsgId(msg.Peer, [msg.MsgId])).msgList; - if (!msgData || msgData.length == 0 || !msgData[0].msgSeq) { + if (!msgData || msgData.length === 0 || !msgData[0].msgSeq) { throw new Error('find msg by msgid error'); } + return await this.core.apis.MsgApi.setEmojiLike( msg.Peer, msgData[0].msgSeq, payload.emoji_id.toString(), - typeof payload.set == 'string' ? payload.set === 'true' : !!payload + typeof payload.set === 'string' ? payload.set === 'true' : !!payload.set ); } -} +} \ No newline at end of file diff --git a/src/onebot/cqcode.ts b/src/onebot/cqcode.ts index 5aa5651f..eadfc2d3 100644 --- a/src/onebot/cqcode.ts +++ b/src/onebot/cqcode.ts @@ -24,7 +24,7 @@ function from(source: string) { return { type, data, capture }; } -function h(type: string, data: any) { +function convert(type: string, data: any) { return { type, data, @@ -37,31 +37,29 @@ export function decodeCQCode(source: string): OB11MessageData[] { while ((result = from(source))) { const { type, data, capture } = result; if (capture.index) { - elements.push(h('text', { text: unescape(source.slice(0, capture.index)) })); + elements.push(convert('text', { text: unescape(source.slice(0, capture.index)) })); } - elements.push(h(type, data)); + elements.push(convert(type, data)); source = source.slice(capture.index + capture[0].length); } - if (source) elements.push(h('text', { text: unescape(source) })); + if (source) elements.push(convert('text', { text: unescape(source) })); return elements; } +function CQCodeEscapeText(text: string) { + return text.replace(/&/g, '&') + .replace(/\[/g, '[') + .replace(/]/g, ']'); +} + +function CQCodeEscape(text: string) { + return text.replace(/&/g, '&') + .replace(/\[/g, '[') + .replace(/]/g, ']') + .replace(/,/g, ','); +} export function encodeCQCode(data: OB11MessageData) { - const CQCodeEscapeText = (text: string) => { - return text.replace(/&/g, '&') - .replace(/\[/g, '[') - .replace(/]/g, ']'); - - }; - - const CQCodeEscape = (text: string) => { - return text.replace(/&/g, '&') - .replace(/\[/g, '[') - .replace(/]/g, ']') - .replace(/,/g, ','); - }; - if (data.type === 'text') { return CQCodeEscapeText(data.data.text); } @@ -74,11 +72,13 @@ export function encodeCQCode(data: OB11MessageData) { } try { const text = value?.toString(); - if (text) result += `,${name}=${CQCodeEscape(text)}`; + if (text) { + result += `,${name}=${CQCodeEscape(text)}`; + } } catch (error) { - // If it can't be converted, skip this name-value pair + console.error(`Error encoding CQCode for ${name}:`, error); } } result += ']'; return result; -} +} \ No newline at end of file diff --git a/src/onebot/event/notice/OB11GroupAdminNoticeEvent.ts b/src/onebot/event/notice/OB11GroupAdminNoticeEvent.ts index 31a05bad..b64e5c7f 100644 --- a/src/onebot/event/notice/OB11GroupAdminNoticeEvent.ts +++ b/src/onebot/event/notice/OB11GroupAdminNoticeEvent.ts @@ -3,7 +3,7 @@ import { NapCatCore } from '@/core'; export class OB11GroupAdminNoticeEvent extends OB11GroupNoticeEvent { notice_type = 'group_admin'; - sub_type: 'set' | 'unset'; // "set" | "unset" + sub_type: 'set' | 'unset'; constructor(core: NapCatCore, group_id: number, user_id: number, sub_type: 'set' | 'unset') { super(core, group_id, user_id); diff --git a/src/onebot/event/notice/OB11GroupDecreaseEvent.ts b/src/onebot/event/notice/OB11GroupDecreaseEvent.ts index f914d23e..5a52664e 100644 --- a/src/onebot/event/notice/OB11GroupDecreaseEvent.ts +++ b/src/onebot/event/notice/OB11GroupDecreaseEvent.ts @@ -5,13 +5,13 @@ export type GroupDecreaseSubType = 'leave' | 'kick' | 'kick_me'; export class OB11GroupDecreaseEvent extends OB11GroupNoticeEvent { notice_type = 'group_decrease'; - sub_type: GroupDecreaseSubType = 'leave'; // TODO: 实现其他几种子类型的识别 ("leave" | "kick" | "kick_me") + sub_type: GroupDecreaseSubType = 'leave'; operator_id: number; constructor(core: NapCatCore, groupId: number, userId: number, operatorId: number, subType: GroupDecreaseSubType = 'leave') { super(core, groupId, userId); this.group_id = groupId; - this.operator_id = operatorId; // 实际上不应该这么实现,但是现在还没有办法识别用户是被踢出的,还是自己主动退出的 + this.operator_id = operatorId; this.user_id = userId; this.sub_type = subType; } From 02e39b5714f43b8ca16e2acee1cea096a32bb816 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 11:06:03 +0800 Subject: [PATCH 030/418] fix: typo --- src/core/entities/user.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/core/entities/user.ts b/src/core/entities/user.ts index a5a31a30..f3f0a06d 100644 --- a/src/core/entities/user.ts +++ b/src/core/entities/user.ts @@ -25,12 +25,12 @@ export interface CoreInfo { export interface BaseInfo { qid: string; longNick: string; - birthdayYear: number; - birthdayMonth: number; - birthdayDay: number; + birthday_year: number; + birthday_month: number; + birthday_day: number; age: number; sex: number; - email: string; + eMail: string; phoneNum: string; categoryId: number; richTime: number; @@ -227,7 +227,7 @@ export interface ModifyProfileParams { nick: string; longNick: string; sex: Sex; - birthday: { birthdayYear: string, birthdayMonth: string, birthdayDay: string }; + birthday: { birthday_year: string, birthday_month: string, birthday_day: string }; location: any; } @@ -263,9 +263,9 @@ export interface User { age?: number; qqLevel?: QQLevel; qid?: string; - birthdayYear?: number; - birthdayMonth?: number; - birthdayDay?: number; + birthday_year?: number; + birthday_month?: number; + birthday_day?: number; topTime?: string; constellation?: number; shengXiao?: number; @@ -273,7 +273,7 @@ export interface User { homeTown?: string; makeFriendCareer?: number; pos?: string; - email?: string; + eMail?: string; phoneNum?: string; college?: string; country?: string; From b2075130d94eca9c840428d40cb53b96ea54da9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 11:09:23 +0800 Subject: [PATCH 031/418] style: lint --- src/common/event.ts | 4 ++-- src/common/log.ts | 2 +- src/common/video.ts | 2 +- src/core/apis/file.ts | 16 ++++++++-------- src/onebot/types/{entity.ts => data.ts} | 0 src/onebot/types/index.ts | 2 +- src/onebot/types/message.ts | 2 +- src/onebot/types/quick.ts | 6 +++--- 8 files changed, 17 insertions(+), 17 deletions(-) rename src/onebot/types/{entity.ts => data.ts} (100%) diff --git a/src/common/event.ts b/src/common/event.ts index 42c8cea0..33492011 100644 --- a/src/common/event.ts +++ b/src/common/event.ts @@ -234,7 +234,7 @@ export class NTEventWrapper { this.EventTask.get(ListenerMainName)?.get(ListenerSubName)?.set(id, eventCallback); this.createListenerFunction(ListenerMainName); - let eventResult = this.createEventFunction(serviceAndMethod)!(...(args)); + const eventResult = this.createEventFunction(serviceAndMethod)!(...(args)); const eventRetHandle = (eventData: any) => { retEvent = eventData; @@ -252,7 +252,7 @@ export class NTEventWrapper { ), ); } - } + }; if (eventResult instanceof Promise) { eventResult.then((eventResult: any) => { eventRetHandle(eventResult); diff --git a/src/common/log.ts b/src/common/log.ts index 10da3631..60603b58 100644 --- a/src/common/log.ts +++ b/src/common/log.ts @@ -290,5 +290,5 @@ function replyElementToText(replyElement: any, msg: RawMessage, recursiveLevel: ? rawMessageToText(recordMsgOrNull, recursiveLevel + 1) : `未找到消息记录 (MsgId = ${replyElement.sourceMsgIdInRecords})` - }]`; + }]`; } \ No newline at end of file diff --git a/src/common/video.ts b/src/common/video.ts index e474926a..cbbad304 100644 --- a/src/common/video.ts +++ b/src/common/video.ts @@ -55,7 +55,7 @@ export async function getVideoInfo(filePath: string, logger: LogWrapper): Promis logger.log(`视频尺寸: ${videoStream.width}x${videoStream.height}`); if (!videoStream.width || !metadata.format.format_name || !videoStream.height) { - throw new Error('获取基础信息失败') + throw new Error('获取基础信息失败'); } return { width: videoStream.width, diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index cfe10a81..1a94151c 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -300,18 +300,18 @@ export class NTQQFileApi { element.elementType === ElementType.FILE ) { switch (element.elementType) { - case ElementType.PIC: + case ElementType.PIC: element.picElement!.sourcePath = elementResults[elementIndex]; - break; - case ElementType.VIDEO: + break; + case ElementType.VIDEO: element.videoElement!.filePath = elementResults[elementIndex]; - break; - case ElementType.PTT: + break; + case ElementType.PTT: element.pttElement!.filePath = elementResults[elementIndex]; - break; - case ElementType.FILE: + break; + case ElementType.FILE: element.fileElement!.filePath = elementResults[elementIndex]; - break; + break; } elementIndex++; } diff --git a/src/onebot/types/entity.ts b/src/onebot/types/data.ts similarity index 100% rename from src/onebot/types/entity.ts rename to src/onebot/types/data.ts diff --git a/src/onebot/types/index.ts b/src/onebot/types/index.ts index 03436546..780354e8 100644 --- a/src/onebot/types/index.ts +++ b/src/onebot/types/index.ts @@ -1,3 +1,3 @@ -export * from './entity'; +export * from './data'; export * from './message'; export * from './quick'; diff --git a/src/onebot/types/message.ts b/src/onebot/types/message.ts index 71a948c3..01834441 100644 --- a/src/onebot/types/message.ts +++ b/src/onebot/types/message.ts @@ -1,4 +1,4 @@ -import { OB11Sender } from './entity'; +import { OB11Sender } from './data'; import { EventType } from '@/onebot/event/OneBotEvent'; import { CustomMusicSignPostData, IdMusicSignPostData, PicSubType, RawMessage } from '@/core'; diff --git a/src/onebot/types/quick.ts b/src/onebot/types/quick.ts index 2c3fff65..b0fcd1ca 100644 --- a/src/onebot/types/quick.ts +++ b/src/onebot/types/quick.ts @@ -2,8 +2,8 @@ import { OB11BaseMetaEvent } from '../event/meta/OB11BaseMetaEvent'; import { OB11BaseNoticeEvent } from '../event/notice/OB11BaseNoticeEvent'; import { OB11Message } from './message'; -export type QuickActionEvent = OB11Message | OB11BaseMetaEvent | OB11BaseNoticeEvent -export type PostEventType = OB11Message | OB11BaseMetaEvent | OB11BaseNoticeEvent +export type QuickActionEvent = OB11Message | OB11BaseMetaEvent | OB11BaseNoticeEvent; +export type PostEventType = OB11Message | OB11BaseMetaEvent | OB11BaseNoticeEvent; export interface QuickActionPrivateMessage { reply?: string; @@ -33,4 +33,4 @@ export type QuickAction = QuickActionPrivateMessage & QuickActionGroupMessage & QuickActionFriendRequest - & QuickActionGroupRequest + & QuickActionGroupRequest; From e898915d01b05bbb0b6c8c9a553d57a75d6b8921 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 11:16:25 +0800 Subject: [PATCH 032/418] =?UTF-8?q?rename:=20=E4=BD=BF=E7=94=A8@=E6=90=9C?= =?UTF-8?q?=E5=AF=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/onebot/action/OneBotAction.ts | 2 +- src/onebot/action/extends/CreateCollection.ts | 2 +- src/onebot/action/extends/FetchCustomFace.ts | 2 +- src/onebot/action/extends/FetchEmojiLike.ts | 2 +- src/onebot/action/extends/FetchUserProfileLike.ts | 2 +- src/onebot/action/extends/GetAiCharacters.ts | 2 +- src/onebot/action/extends/GetCollectionList.ts | 2 +- src/onebot/action/extends/GetFriendWithCategory.ts | 2 +- src/onebot/action/extends/GetGroupAddRequest.ts | 2 +- src/onebot/action/extends/GetGroupInfoEx.ts | 2 +- src/onebot/action/extends/GetMiniAppArk.ts | 2 +- src/onebot/action/extends/GetProfileLike.ts | 2 +- src/onebot/action/extends/GetRkey.ts | 2 +- src/onebot/action/extends/GetRobotUinRange.ts | 2 +- src/onebot/action/extends/GetUserStatus.ts | 2 +- src/onebot/action/extends/OCRImage.ts | 2 +- src/onebot/action/extends/SetGroupSign.ts | 2 +- src/onebot/action/extends/SetInputStatus.ts | 2 +- src/onebot/action/extends/SetLongNick.ts | 2 +- src/onebot/action/extends/SetOnlineStatus.ts | 2 +- src/onebot/action/extends/SetQQAvatar.ts | 2 +- src/onebot/action/extends/SetSpecialTittle.ts | 2 +- src/onebot/action/extends/ShareContact.ts | 2 +- src/onebot/action/extends/TranslateEnWordToZn.ts | 2 +- src/onebot/action/file/GetFile.ts | 2 +- src/onebot/action/file/GetGroupFileUrl.ts | 2 +- src/onebot/action/file/GetImage.ts | 2 +- src/onebot/action/file/GetRecord.ts | 2 +- src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts | 2 +- src/onebot/action/go-cqhttp/DeleteGroupFile.ts | 2 +- src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts | 2 +- src/onebot/action/go-cqhttp/DownloadFile.ts | 2 +- src/onebot/action/go-cqhttp/GetForwardMsg.ts | 2 +- src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts | 2 +- src/onebot/action/go-cqhttp/GetGroupAtAllRemain.ts | 2 +- src/onebot/action/go-cqhttp/GetGroupFileSystemInfo.ts | 2 +- src/onebot/action/go-cqhttp/GetGroupFilesByFolder.ts | 2 +- src/onebot/action/go-cqhttp/GetGroupHonorInfo.ts | 2 +- src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts | 2 +- src/onebot/action/go-cqhttp/GetGroupRootFiles.ts | 2 +- src/onebot/action/go-cqhttp/GetOnlineClient.ts | 2 +- src/onebot/action/go-cqhttp/GetStrangerInfo.ts | 2 +- src/onebot/action/go-cqhttp/GoCQHTTPCheckUrlSafely.ts | 2 +- src/onebot/action/go-cqhttp/GoCQHTTPDeleteFriend.ts | 2 +- src/onebot/action/go-cqhttp/GoCQHTTPGetModelShow.ts | 2 +- src/onebot/action/go-cqhttp/GoCQHTTPSetModelShow.ts | 2 +- src/onebot/action/go-cqhttp/QuickAction.ts | 2 +- src/onebot/action/go-cqhttp/SendForwardMsg.ts | 2 +- src/onebot/action/go-cqhttp/SendGroupNotice.ts | 2 +- src/onebot/action/go-cqhttp/SetGroupPortrait.ts | 2 +- src/onebot/action/go-cqhttp/SetQQProfile.ts | 2 +- src/onebot/action/go-cqhttp/UploadGroupFile.ts | 2 +- src/onebot/action/go-cqhttp/UploadPrivateFile.ts | 2 +- src/onebot/action/group/DelEssenceMsg.ts | 2 +- src/onebot/action/group/DelGroupNotice.ts | 2 +- src/onebot/action/group/GetAiRecord.ts | 2 +- src/onebot/action/group/GetGroupEssence.ts | 2 +- src/onebot/action/group/GetGroupIgnoredNotifies.ts | 2 +- src/onebot/action/group/GetGroupInfo.ts | 2 +- src/onebot/action/group/GetGroupList.ts | 2 +- src/onebot/action/group/GetGroupMemberInfo.ts | 2 +- src/onebot/action/group/GetGroupMemberList.ts | 2 +- src/onebot/action/group/GetGroupNotice.ts | 2 +- src/onebot/action/group/GetGroupShutList.ts | 2 +- src/onebot/action/group/GroupPoke.ts | 2 +- src/onebot/action/group/SendGroupAiRecord.ts | 2 +- src/onebot/action/group/SendGroupMsg.ts | 2 +- src/onebot/action/group/SetEssenceMsg.ts | 2 +- src/onebot/action/group/SetGroupAddRequest.ts | 2 +- src/onebot/action/group/SetGroupAdmin.ts | 2 +- src/onebot/action/group/SetGroupBan.ts | 2 +- src/onebot/action/group/SetGroupCard.ts | 2 +- src/onebot/action/group/SetGroupKick.ts | 2 +- src/onebot/action/group/SetGroupLeave.ts | 2 +- src/onebot/action/group/SetGroupName.ts | 2 +- src/onebot/action/group/SetGroupWholeBan.ts | 2 +- src/onebot/action/guild/GetGuildList.ts | 2 +- src/onebot/action/guild/GetGuildProfile.ts | 2 +- src/onebot/action/msg/DeleteMsg.ts | 2 +- src/onebot/action/msg/ForwardSingleMsg.ts | 2 +- src/onebot/action/msg/GetMsg.ts | 2 +- src/onebot/action/msg/MarkMsgAsRead.ts | 2 +- src/onebot/action/msg/SendMsg.ts | 2 +- src/onebot/action/msg/SendPrivateMsg.ts | 2 +- src/onebot/action/msg/SetMsgEmojiLike.ts | 2 +- src/onebot/action/packet/GetPacketStatus.ts | 2 +- src/onebot/action/{types.ts => router.ts} | 0 src/onebot/action/system/CanSendImage.ts | 2 +- src/onebot/action/system/CanSendRecord.ts | 2 +- src/onebot/action/system/GetCSRF.ts | 2 +- src/onebot/action/system/GetCredentials.ts | 2 +- src/onebot/action/system/GetLoginInfo.ts | 2 +- src/onebot/action/system/GetStatus.ts | 2 +- src/onebot/action/system/GetSystemMsg.ts | 2 +- src/onebot/action/system/GetVersionInfo.ts | 2 +- src/onebot/action/user/FriendPoke.ts | 2 +- src/onebot/action/user/GetCookies.ts | 2 +- src/onebot/action/user/GetFriendList.ts | 2 +- src/onebot/action/user/GetRecentContact.ts | 2 +- src/onebot/action/user/SendLike.ts | 2 +- src/onebot/action/user/SetFriendAddRequest.ts | 2 +- src/onebot/network/active-websocket.ts | 2 +- src/onebot/network/passive-websocket.ts | 2 +- 103 files changed, 102 insertions(+), 102 deletions(-) rename src/onebot/action/{types.ts => router.ts} (100%) diff --git a/src/onebot/action/OneBotAction.ts b/src/onebot/action/OneBotAction.ts index 8651fb34..ae5c8e7b 100644 --- a/src/onebot/action/OneBotAction.ts +++ b/src/onebot/action/OneBotAction.ts @@ -1,4 +1,4 @@ -import { ActionName, BaseCheckResult } from './types'; +import { ActionName, BaseCheckResult } from './router'; import Ajv, { ErrorObject, ValidateFunction } from 'ajv'; import { NapCatCore } from '@/core'; import { isNull } from '@/common/helper'; diff --git a/src/onebot/action/extends/CreateCollection.ts b/src/onebot/action/extends/CreateCollection.ts index 1f62a15d..92e1f347 100644 --- a/src/onebot/action/extends/CreateCollection.ts +++ b/src/onebot/action/extends/CreateCollection.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/extends/FetchCustomFace.ts b/src/onebot/action/extends/FetchCustomFace.ts index ea4dd11c..c2d5fa00 100644 --- a/src/onebot/action/extends/FetchCustomFace.ts +++ b/src/onebot/action/extends/FetchCustomFace.ts @@ -1,6 +1,6 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; const SchemaData = { type: 'object', diff --git a/src/onebot/action/extends/FetchEmojiLike.ts b/src/onebot/action/extends/FetchEmojiLike.ts index 68ddcb5a..19ff33e7 100644 --- a/src/onebot/action/extends/FetchEmojiLike.ts +++ b/src/onebot/action/extends/FetchEmojiLike.ts @@ -1,7 +1,7 @@ //getMsgEmojiLikesList import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { MessageUnique } from '@/common/message-unique'; const SchemaData = { diff --git a/src/onebot/action/extends/FetchUserProfileLike.ts b/src/onebot/action/extends/FetchUserProfileLike.ts index 07a7bb02..13cb8f85 100644 --- a/src/onebot/action/extends/FetchUserProfileLike.ts +++ b/src/onebot/action/extends/FetchUserProfileLike.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; export class FetchUserProfileLike extends OneBotAction<{ qq: number }, any> { actionName = ActionName.FetchUserProfileLike; diff --git a/src/onebot/action/extends/GetAiCharacters.ts b/src/onebot/action/extends/GetAiCharacters.ts index bc6e61e7..58232bdb 100644 --- a/src/onebot/action/extends/GetAiCharacters.ts +++ b/src/onebot/action/extends/GetAiCharacters.ts @@ -1,4 +1,4 @@ -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; import { AIVoiceChatType } from "@/core/packet/entities/aiChat"; diff --git a/src/onebot/action/extends/GetCollectionList.ts b/src/onebot/action/extends/GetCollectionList.ts index 0e4263b0..280ed1e6 100644 --- a/src/onebot/action/extends/GetCollectionList.ts +++ b/src/onebot/action/extends/GetCollectionList.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/extends/GetFriendWithCategory.ts b/src/onebot/action/extends/GetFriendWithCategory.ts index e4f0f077..79f96021 100644 --- a/src/onebot/action/extends/GetFriendWithCategory.ts +++ b/src/onebot/action/extends/GetFriendWithCategory.ts @@ -1,6 +1,6 @@ import { OB11Entities } from '@/onebot/entities'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; export class GetFriendWithCategory extends OneBotAction { actionName = ActionName.GetFriendsWithCategory; diff --git a/src/onebot/action/extends/GetGroupAddRequest.ts b/src/onebot/action/extends/GetGroupAddRequest.ts index 7eb62a8f..c886ed2f 100644 --- a/src/onebot/action/extends/GetGroupAddRequest.ts +++ b/src/onebot/action/extends/GetGroupAddRequest.ts @@ -1,6 +1,6 @@ import { GroupNotifyMsgStatus } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; interface OB11GroupRequestNotify { group_id: number, diff --git a/src/onebot/action/extends/GetGroupInfoEx.ts b/src/onebot/action/extends/GetGroupInfoEx.ts index 3551997b..582a8cec 100644 --- a/src/onebot/action/extends/GetGroupInfoEx.ts +++ b/src/onebot/action/extends/GetGroupInfoEx.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/extends/GetMiniAppArk.ts b/src/onebot/action/extends/GetMiniAppArk.ts index 83f24dc8..d6cd52e7 100644 --- a/src/onebot/action/extends/GetMiniAppArk.ts +++ b/src/onebot/action/extends/GetMiniAppArk.ts @@ -1,4 +1,4 @@ -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; import { MiniAppInfo, MiniAppInfoHelper } from "@/core/packet/utils/helper/miniAppHelper"; diff --git a/src/onebot/action/extends/GetProfileLike.ts b/src/onebot/action/extends/GetProfileLike.ts index ce9c8beb..78112a9a 100644 --- a/src/onebot/action/extends/GetProfileLike.ts +++ b/src/onebot/action/extends/GetProfileLike.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; interface Payload { start: number, diff --git a/src/onebot/action/extends/GetRkey.ts b/src/onebot/action/extends/GetRkey.ts index 79a22626..87b24c53 100644 --- a/src/onebot/action/extends/GetRkey.ts +++ b/src/onebot/action/extends/GetRkey.ts @@ -1,4 +1,4 @@ -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; diff --git a/src/onebot/action/extends/GetRobotUinRange.ts b/src/onebot/action/extends/GetRobotUinRange.ts index 8e6af867..ba414cfc 100644 --- a/src/onebot/action/extends/GetRobotUinRange.ts +++ b/src/onebot/action/extends/GetRobotUinRange.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; export class GetRobotUinRange extends OneBotAction> { actionName = ActionName.GetRobotUinRange; diff --git a/src/onebot/action/extends/GetUserStatus.ts b/src/onebot/action/extends/GetUserStatus.ts index 1fe392e9..40bdc714 100644 --- a/src/onebot/action/extends/GetUserStatus.ts +++ b/src/onebot/action/extends/GetUserStatus.ts @@ -1,4 +1,4 @@ -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; // no_cache get时传字符串 diff --git a/src/onebot/action/extends/OCRImage.ts b/src/onebot/action/extends/OCRImage.ts index 876b3e6b..334a7f5f 100644 --- a/src/onebot/action/extends/OCRImage.ts +++ b/src/onebot/action/extends/OCRImage.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { checkFileReceived, uri2local } from '@/common/file'; import fs from 'fs'; diff --git a/src/onebot/action/extends/SetGroupSign.ts b/src/onebot/action/extends/SetGroupSign.ts index 7b314e51..5f5f822e 100644 --- a/src/onebot/action/extends/SetGroupSign.ts +++ b/src/onebot/action/extends/SetGroupSign.ts @@ -1,5 +1,5 @@ import { GetPacketStatusDepends } from '../packet/GetPacketStatus'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/extends/SetInputStatus.ts b/src/onebot/action/extends/SetInputStatus.ts index 7e0d3eca..f59fbf3c 100644 --- a/src/onebot/action/extends/SetInputStatus.ts +++ b/src/onebot/action/extends/SetInputStatus.ts @@ -1,6 +1,6 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { ChatType } from '@/core'; const SchemaData = { diff --git a/src/onebot/action/extends/SetLongNick.ts b/src/onebot/action/extends/SetLongNick.ts index 35bf2f0a..89de1d2d 100644 --- a/src/onebot/action/extends/SetLongNick.ts +++ b/src/onebot/action/extends/SetLongNick.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/extends/SetOnlineStatus.ts b/src/onebot/action/extends/SetOnlineStatus.ts index 4d80ac6d..8adab108 100644 --- a/src/onebot/action/extends/SetOnlineStatus.ts +++ b/src/onebot/action/extends/SetOnlineStatus.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; // 设置在线状态 diff --git a/src/onebot/action/extends/SetQQAvatar.ts b/src/onebot/action/extends/SetQQAvatar.ts index 73e26f6d..cb566062 100644 --- a/src/onebot/action/extends/SetQQAvatar.ts +++ b/src/onebot/action/extends/SetQQAvatar.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName, BaseCheckResult } from '../types'; +import { ActionName, BaseCheckResult } from '../router'; import * as fs from 'node:fs'; import { checkFileReceived, uri2local } from '@/common/file'; diff --git a/src/onebot/action/extends/SetSpecialTittle.ts b/src/onebot/action/extends/SetSpecialTittle.ts index d962e014..a0adba03 100644 --- a/src/onebot/action/extends/SetSpecialTittle.ts +++ b/src/onebot/action/extends/SetSpecialTittle.ts @@ -1,4 +1,4 @@ -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; const SchemaData = { diff --git a/src/onebot/action/extends/ShareContact.ts b/src/onebot/action/extends/ShareContact.ts index 9c9b2c74..fe1b6a84 100644 --- a/src/onebot/action/extends/ShareContact.ts +++ b/src/onebot/action/extends/ShareContact.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/extends/TranslateEnWordToZn.ts b/src/onebot/action/extends/TranslateEnWordToZn.ts index d3353e32..d47dfb8c 100644 --- a/src/onebot/action/extends/TranslateEnWordToZn.ts +++ b/src/onebot/action/extends/TranslateEnWordToZn.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/file/GetFile.ts b/src/onebot/action/file/GetFile.ts index 099ea535..d01ca004 100644 --- a/src/onebot/action/file/GetFile.ts +++ b/src/onebot/action/file/GetFile.ts @@ -1,7 +1,7 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import fs from 'fs/promises'; import { FileNapCatOneBotUUID } from '@/common/helper'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OB11MessageImage, OB11MessageVideo } from '@/onebot/types'; diff --git a/src/onebot/action/file/GetGroupFileUrl.ts b/src/onebot/action/file/GetGroupFileUrl.ts index d0a53892..a238a9f7 100644 --- a/src/onebot/action/file/GetGroupFileUrl.ts +++ b/src/onebot/action/file/GetGroupFileUrl.ts @@ -1,4 +1,4 @@ -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { FileNapCatOneBotUUID } from "@/common/helper"; import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; diff --git a/src/onebot/action/file/GetImage.ts b/src/onebot/action/file/GetImage.ts index ee239a55..3c032fbc 100644 --- a/src/onebot/action/file/GetImage.ts +++ b/src/onebot/action/file/GetImage.ts @@ -1,5 +1,5 @@ import { GetFileBase } from './GetFile'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; export default class GetImage extends GetFileBase { diff --git a/src/onebot/action/file/GetRecord.ts b/src/onebot/action/file/GetRecord.ts index c62e1574..644ba995 100644 --- a/src/onebot/action/file/GetRecord.ts +++ b/src/onebot/action/file/GetRecord.ts @@ -1,5 +1,5 @@ import { GetFileBase, GetFilePayload, GetFileResponse } from './GetFile'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { spawn } from 'node:child_process'; import { promises as fs } from 'fs'; import { decode } from 'silk-wasm'; diff --git a/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts b/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts index f290bcef..381ef128 100644 --- a/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts +++ b/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts @@ -1,6 +1,6 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; const SchemaData = { type: 'object', diff --git a/src/onebot/action/go-cqhttp/DeleteGroupFile.ts b/src/onebot/action/go-cqhttp/DeleteGroupFile.ts index aaeee8c7..88f7e0b9 100644 --- a/src/onebot/action/go-cqhttp/DeleteGroupFile.ts +++ b/src/onebot/action/go-cqhttp/DeleteGroupFile.ts @@ -1,6 +1,6 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FileNapCatOneBotUUID } from '@/common/helper'; const SchemaData = { diff --git a/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts b/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts index 4650815f..1201d44d 100644 --- a/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts +++ b/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts @@ -1,5 +1,5 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { OneBotAction } from '@/onebot/action/OneBotAction'; const SchemaData = { diff --git a/src/onebot/action/go-cqhttp/DownloadFile.ts b/src/onebot/action/go-cqhttp/DownloadFile.ts index 6f5732fe..868908dc 100644 --- a/src/onebot/action/go-cqhttp/DownloadFile.ts +++ b/src/onebot/action/go-cqhttp/DownloadFile.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import fs from 'fs'; import { join as joinPath } from 'node:path'; import { calculateFileMD5, httpDownload } from '@/common/file'; diff --git a/src/onebot/action/go-cqhttp/GetForwardMsg.ts b/src/onebot/action/go-cqhttp/GetForwardMsg.ts index fa201b6f..7f5338fe 100644 --- a/src/onebot/action/go-cqhttp/GetForwardMsg.ts +++ b/src/onebot/action/go-cqhttp/GetForwardMsg.ts @@ -1,6 +1,6 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { OB11Message, OB11MessageData, OB11MessageDataType, OB11MessageForward, OB11MessageNodePlain as OB11MessageNode } from '@/onebot'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; diff --git a/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts b/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts index 204e9830..b20e721a 100644 --- a/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts +++ b/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts @@ -1,6 +1,6 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { OB11Message } from '@/onebot'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { ChatType } from '@/core/entities'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; diff --git a/src/onebot/action/go-cqhttp/GetGroupAtAllRemain.ts b/src/onebot/action/go-cqhttp/GetGroupAtAllRemain.ts index 49a2342e..dc466284 100644 --- a/src/onebot/action/go-cqhttp/GetGroupAtAllRemain.ts +++ b/src/onebot/action/go-cqhttp/GetGroupAtAllRemain.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/go-cqhttp/GetGroupFileSystemInfo.ts b/src/onebot/action/go-cqhttp/GetGroupFileSystemInfo.ts index 7e8be16a..4139137e 100644 --- a/src/onebot/action/go-cqhttp/GetGroupFileSystemInfo.ts +++ b/src/onebot/action/go-cqhttp/GetGroupFileSystemInfo.ts @@ -1,6 +1,6 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; const SchemaData = { type: 'object', diff --git a/src/onebot/action/go-cqhttp/GetGroupFilesByFolder.ts b/src/onebot/action/go-cqhttp/GetGroupFilesByFolder.ts index a04fd7bd..d4bff67b 100644 --- a/src/onebot/action/go-cqhttp/GetGroupFilesByFolder.ts +++ b/src/onebot/action/go-cqhttp/GetGroupFilesByFolder.ts @@ -1,6 +1,6 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { OB11Entities } from '@/onebot/entities'; const SchemaData = { diff --git a/src/onebot/action/go-cqhttp/GetGroupHonorInfo.ts b/src/onebot/action/go-cqhttp/GetGroupHonorInfo.ts index 83dcf282..b7fda554 100644 --- a/src/onebot/action/go-cqhttp/GetGroupHonorInfo.ts +++ b/src/onebot/action/go-cqhttp/GetGroupHonorInfo.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { WebHonorType } from '@/core/entities'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; diff --git a/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts b/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts index 49fe601e..e60ca565 100644 --- a/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts +++ b/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts @@ -1,6 +1,6 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { OB11Message } from '@/onebot'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { ChatType, Peer } from '@/core/entities'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; diff --git a/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts b/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts index 38f4def3..980eee4e 100644 --- a/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts +++ b/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts @@ -1,6 +1,6 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { OB11GroupFile, OB11GroupFileFolder } from '@/onebot'; import { OB11Entities } from '@/onebot/entities'; diff --git a/src/onebot/action/go-cqhttp/GetOnlineClient.ts b/src/onebot/action/go-cqhttp/GetOnlineClient.ts index 473796c3..13631ad7 100644 --- a/src/onebot/action/go-cqhttp/GetOnlineClient.ts +++ b/src/onebot/action/go-cqhttp/GetOnlineClient.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { JSONSchema } from 'json-schema-to-ts'; import { sleep } from '@/common/helper'; diff --git a/src/onebot/action/go-cqhttp/GetStrangerInfo.ts b/src/onebot/action/go-cqhttp/GetStrangerInfo.ts index 9955dd7f..0695c132 100644 --- a/src/onebot/action/go-cqhttp/GetStrangerInfo.ts +++ b/src/onebot/action/go-cqhttp/GetStrangerInfo.ts @@ -1,7 +1,7 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { OB11User, OB11UserSex } from '@/onebot'; import { OB11Entities } from '@/onebot/entities'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { calcQQLevel } from '@/common/helper'; diff --git a/src/onebot/action/go-cqhttp/GoCQHTTPCheckUrlSafely.ts b/src/onebot/action/go-cqhttp/GoCQHTTPCheckUrlSafely.ts index 2c325f60..1f6c7d7d 100644 --- a/src/onebot/action/go-cqhttp/GoCQHTTPCheckUrlSafely.ts +++ b/src/onebot/action/go-cqhttp/GoCQHTTPCheckUrlSafely.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/go-cqhttp/GoCQHTTPDeleteFriend.ts b/src/onebot/action/go-cqhttp/GoCQHTTPDeleteFriend.ts index 615587a1..849535dc 100644 --- a/src/onebot/action/go-cqhttp/GoCQHTTPDeleteFriend.ts +++ b/src/onebot/action/go-cqhttp/GoCQHTTPDeleteFriend.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/go-cqhttp/GoCQHTTPGetModelShow.ts b/src/onebot/action/go-cqhttp/GoCQHTTPGetModelShow.ts index e7c62b7e..811e3d62 100644 --- a/src/onebot/action/go-cqhttp/GoCQHTTPGetModelShow.ts +++ b/src/onebot/action/go-cqhttp/GoCQHTTPGetModelShow.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/go-cqhttp/GoCQHTTPSetModelShow.ts b/src/onebot/action/go-cqhttp/GoCQHTTPSetModelShow.ts index 22d63127..3bc9141f 100644 --- a/src/onebot/action/go-cqhttp/GoCQHTTPSetModelShow.ts +++ b/src/onebot/action/go-cqhttp/GoCQHTTPSetModelShow.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/go-cqhttp/QuickAction.ts b/src/onebot/action/go-cqhttp/QuickAction.ts index b423dafa..d579eebe 100644 --- a/src/onebot/action/go-cqhttp/QuickAction.ts +++ b/src/onebot/action/go-cqhttp/QuickAction.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { QuickAction, QuickActionEvent } from '@/onebot/types'; interface Payload { diff --git a/src/onebot/action/go-cqhttp/SendForwardMsg.ts b/src/onebot/action/go-cqhttp/SendForwardMsg.ts index a9372f88..5e3257e1 100644 --- a/src/onebot/action/go-cqhttp/SendForwardMsg.ts +++ b/src/onebot/action/go-cqhttp/SendForwardMsg.ts @@ -1,6 +1,6 @@ import SendMsg, { normalize } from '../msg/SendMsg'; import { OB11PostSendMsg } from '../../types'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; // 未验证 export class GoCQHTTPSendForwardMsg extends SendMsg { diff --git a/src/onebot/action/go-cqhttp/SendGroupNotice.ts b/src/onebot/action/go-cqhttp/SendGroupNotice.ts index 790e8899..55fb9d63 100644 --- a/src/onebot/action/go-cqhttp/SendGroupNotice.ts +++ b/src/onebot/action/go-cqhttp/SendGroupNotice.ts @@ -1,6 +1,6 @@ import { checkFileReceived, uri2local } from '@/common/file'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { unlink } from 'node:fs'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; diff --git a/src/onebot/action/go-cqhttp/SetGroupPortrait.ts b/src/onebot/action/go-cqhttp/SetGroupPortrait.ts index 80ebcc9e..00d28b04 100644 --- a/src/onebot/action/go-cqhttp/SetGroupPortrait.ts +++ b/src/onebot/action/go-cqhttp/SetGroupPortrait.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName, BaseCheckResult } from '../types'; +import { ActionName, BaseCheckResult } from '../router'; import * as fs from 'node:fs'; import { checkFileReceived, uri2local } from '@/common/file'; diff --git a/src/onebot/action/go-cqhttp/SetQQProfile.ts b/src/onebot/action/go-cqhttp/SetQQProfile.ts index ba76d82d..6062e0a8 100644 --- a/src/onebot/action/go-cqhttp/SetQQProfile.ts +++ b/src/onebot/action/go-cqhttp/SetQQProfile.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/go-cqhttp/UploadGroupFile.ts b/src/onebot/action/go-cqhttp/UploadGroupFile.ts index 00486a4c..d48ccd2f 100644 --- a/src/onebot/action/go-cqhttp/UploadGroupFile.ts +++ b/src/onebot/action/go-cqhttp/UploadGroupFile.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { ChatType, Peer } from '@/core/entities'; import fs from 'fs'; import { uri2local } from '@/common/file'; diff --git a/src/onebot/action/go-cqhttp/UploadPrivateFile.ts b/src/onebot/action/go-cqhttp/UploadPrivateFile.ts index 9cf3ba0c..175f66f7 100644 --- a/src/onebot/action/go-cqhttp/UploadPrivateFile.ts +++ b/src/onebot/action/go-cqhttp/UploadPrivateFile.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { ChatType, Peer, SendFileElement } from '@/core/entities'; import fs from 'fs'; import { uri2local } from '@/common/file'; diff --git a/src/onebot/action/group/DelEssenceMsg.ts b/src/onebot/action/group/DelEssenceMsg.ts index f7dca3af..94988538 100644 --- a/src/onebot/action/group/DelEssenceMsg.ts +++ b/src/onebot/action/group/DelEssenceMsg.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; diff --git a/src/onebot/action/group/DelGroupNotice.ts b/src/onebot/action/group/DelGroupNotice.ts index 2c19eb6f..56ecfa4b 100644 --- a/src/onebot/action/group/DelGroupNotice.ts +++ b/src/onebot/action/group/DelGroupNotice.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; diff --git a/src/onebot/action/group/GetAiRecord.ts b/src/onebot/action/group/GetAiRecord.ts index d8f829c8..d1659875 100644 --- a/src/onebot/action/group/GetAiRecord.ts +++ b/src/onebot/action/group/GetAiRecord.ts @@ -1,4 +1,4 @@ -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; import { AIVoiceChatType } from "@/core/packet/entities/aiChat"; diff --git a/src/onebot/action/group/GetGroupEssence.ts b/src/onebot/action/group/GetGroupEssence.ts index 66d50467..e1cc760c 100644 --- a/src/onebot/action/group/GetGroupEssence.ts +++ b/src/onebot/action/group/GetGroupEssence.ts @@ -1,6 +1,6 @@ import { ChatType, Peer } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; import crypto from 'crypto'; diff --git a/src/onebot/action/group/GetGroupIgnoredNotifies.ts b/src/onebot/action/group/GetGroupIgnoredNotifies.ts index ab077073..b5a5e134 100644 --- a/src/onebot/action/group/GetGroupIgnoredNotifies.ts +++ b/src/onebot/action/group/GetGroupIgnoredNotifies.ts @@ -1,6 +1,6 @@ import { GroupNotifyMsgStatus } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/group/GetGroupInfo.ts b/src/onebot/action/group/GetGroupInfo.ts index ed958392..48f716f2 100644 --- a/src/onebot/action/group/GetGroupInfo.ts +++ b/src/onebot/action/group/GetGroupInfo.ts @@ -1,7 +1,7 @@ import { OB11Group } from '@/onebot'; import { OB11Entities } from '@/onebot/entities'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/group/GetGroupList.ts b/src/onebot/action/group/GetGroupList.ts index 08ce7449..47ac6740 100644 --- a/src/onebot/action/group/GetGroupList.ts +++ b/src/onebot/action/group/GetGroupList.ts @@ -1,7 +1,7 @@ import { OB11Group } from '@/onebot'; import { OB11Entities } from '@/onebot/entities'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; // no_cache get时传字符串 const SchemaData = { diff --git a/src/onebot/action/group/GetGroupMemberInfo.ts b/src/onebot/action/group/GetGroupMemberInfo.ts index 58fc0475..819ed708 100644 --- a/src/onebot/action/group/GetGroupMemberInfo.ts +++ b/src/onebot/action/group/GetGroupMemberInfo.ts @@ -1,7 +1,7 @@ import { OB11GroupMember } from '@/onebot'; import { OB11Entities } from '@/onebot/entities'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/group/GetGroupMemberList.ts b/src/onebot/action/group/GetGroupMemberList.ts index 751086c2..39538a9e 100644 --- a/src/onebot/action/group/GetGroupMemberList.ts +++ b/src/onebot/action/group/GetGroupMemberList.ts @@ -1,7 +1,7 @@ import { OB11GroupMember } from '@/onebot'; import { OB11Entities } from '@/onebot/entities'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/group/GetGroupNotice.ts b/src/onebot/action/group/GetGroupNotice.ts index 80d04738..ffaa858c 100644 --- a/src/onebot/action/group/GetGroupNotice.ts +++ b/src/onebot/action/group/GetGroupNotice.ts @@ -1,6 +1,6 @@ import { WebApiGroupNoticeFeed } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; interface GroupNotice { diff --git a/src/onebot/action/group/GetGroupShutList.ts b/src/onebot/action/group/GetGroupShutList.ts index 4193428c..22e8cf7e 100644 --- a/src/onebot/action/group/GetGroupShutList.ts +++ b/src/onebot/action/group/GetGroupShutList.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/group/GroupPoke.ts b/src/onebot/action/group/GroupPoke.ts index d85eb842..2281a194 100644 --- a/src/onebot/action/group/GroupPoke.ts +++ b/src/onebot/action/group/GroupPoke.ts @@ -1,4 +1,4 @@ -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; // no_cache get时传字符串 diff --git a/src/onebot/action/group/SendGroupAiRecord.ts b/src/onebot/action/group/SendGroupAiRecord.ts index 74f9d43f..f6199af1 100644 --- a/src/onebot/action/group/SendGroupAiRecord.ts +++ b/src/onebot/action/group/SendGroupAiRecord.ts @@ -1,4 +1,4 @@ -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; import { uri2local } from "@/common/file"; diff --git a/src/onebot/action/group/SendGroupMsg.ts b/src/onebot/action/group/SendGroupMsg.ts index a156fc4e..706e5c8d 100644 --- a/src/onebot/action/group/SendGroupMsg.ts +++ b/src/onebot/action/group/SendGroupMsg.ts @@ -1,5 +1,5 @@ import SendMsg, { ContextMode } from '../msg/SendMsg'; -import { ActionName, BaseCheckResult } from '../types'; +import { ActionName, BaseCheckResult } from '../router'; import { OB11PostSendMsg } from '../../types'; // 未检测参数 diff --git a/src/onebot/action/group/SetEssenceMsg.ts b/src/onebot/action/group/SetEssenceMsg.ts index 1d9a2149..7cb2e9e7 100644 --- a/src/onebot/action/group/SetEssenceMsg.ts +++ b/src/onebot/action/group/SetEssenceMsg.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; diff --git a/src/onebot/action/group/SetGroupAddRequest.ts b/src/onebot/action/group/SetGroupAddRequest.ts index 3a6a65a4..ce63539d 100644 --- a/src/onebot/action/group/SetGroupAddRequest.ts +++ b/src/onebot/action/group/SetGroupAddRequest.ts @@ -1,6 +1,6 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { GroupRequestOperateTypes } from '@/core/entities'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/group/SetGroupAdmin.ts b/src/onebot/action/group/SetGroupAdmin.ts index efa0309f..899aa843 100644 --- a/src/onebot/action/group/SetGroupAdmin.ts +++ b/src/onebot/action/group/SetGroupAdmin.ts @@ -1,6 +1,6 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { GroupMemberRole } from '@/core/entities'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/group/SetGroupBan.ts b/src/onebot/action/group/SetGroupBan.ts index 6c9210ec..ed9ea36d 100644 --- a/src/onebot/action/group/SetGroupBan.ts +++ b/src/onebot/action/group/SetGroupBan.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/group/SetGroupCard.ts b/src/onebot/action/group/SetGroupCard.ts index f3e90b00..c889b6b5 100644 --- a/src/onebot/action/group/SetGroupCard.ts +++ b/src/onebot/action/group/SetGroupCard.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/group/SetGroupKick.ts b/src/onebot/action/group/SetGroupKick.ts index 3c8a92d8..90919d33 100644 --- a/src/onebot/action/group/SetGroupKick.ts +++ b/src/onebot/action/group/SetGroupKick.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; diff --git a/src/onebot/action/group/SetGroupLeave.ts b/src/onebot/action/group/SetGroupLeave.ts index 13077d22..d46a6b65 100644 --- a/src/onebot/action/group/SetGroupLeave.ts +++ b/src/onebot/action/group/SetGroupLeave.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/group/SetGroupName.ts b/src/onebot/action/group/SetGroupName.ts index 58eca7a7..816317d9 100644 --- a/src/onebot/action/group/SetGroupName.ts +++ b/src/onebot/action/group/SetGroupName.ts @@ -1,6 +1,6 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; const SchemaData = { type: 'object', diff --git a/src/onebot/action/group/SetGroupWholeBan.ts b/src/onebot/action/group/SetGroupWholeBan.ts index 7df00a0c..9b460c38 100644 --- a/src/onebot/action/group/SetGroupWholeBan.ts +++ b/src/onebot/action/group/SetGroupWholeBan.ts @@ -1,6 +1,6 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; const SchemaData = { type: 'object', diff --git a/src/onebot/action/guild/GetGuildList.ts b/src/onebot/action/guild/GetGuildList.ts index 8d586ad7..de342d6d 100644 --- a/src/onebot/action/guild/GetGuildList.ts +++ b/src/onebot/action/guild/GetGuildList.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; export class GetGuildList extends OneBotAction { actionName = ActionName.GetGuildList; diff --git a/src/onebot/action/guild/GetGuildProfile.ts b/src/onebot/action/guild/GetGuildProfile.ts index 183b56a8..ff7a29d5 100644 --- a/src/onebot/action/guild/GetGuildProfile.ts +++ b/src/onebot/action/guild/GetGuildProfile.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; export class GetGuildProfile extends OneBotAction { actionName = ActionName.GetGuildProfile; diff --git a/src/onebot/action/msg/DeleteMsg.ts b/src/onebot/action/msg/DeleteMsg.ts index c3df9a76..c6dcd808 100644 --- a/src/onebot/action/msg/DeleteMsg.ts +++ b/src/onebot/action/msg/DeleteMsg.ts @@ -1,4 +1,4 @@ -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; diff --git a/src/onebot/action/msg/ForwardSingleMsg.ts b/src/onebot/action/msg/ForwardSingleMsg.ts index 4a2ba50d..ec34bf36 100644 --- a/src/onebot/action/msg/ForwardSingleMsg.ts +++ b/src/onebot/action/msg/ForwardSingleMsg.ts @@ -1,6 +1,6 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ChatType, Peer } from '@/core/entities'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; diff --git a/src/onebot/action/msg/GetMsg.ts b/src/onebot/action/msg/GetMsg.ts index c0fed811..32532fa2 100644 --- a/src/onebot/action/msg/GetMsg.ts +++ b/src/onebot/action/msg/GetMsg.ts @@ -1,6 +1,6 @@ import { OB11Message } from '@/onebot'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; import { RawMessage } from '@/core'; diff --git a/src/onebot/action/msg/MarkMsgAsRead.ts b/src/onebot/action/msg/MarkMsgAsRead.ts index d63f1e00..1982b2ee 100644 --- a/src/onebot/action/msg/MarkMsgAsRead.ts +++ b/src/onebot/action/msg/MarkMsgAsRead.ts @@ -1,7 +1,7 @@ import { ChatType, Peer } from '@/core/entities'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { MessageUnique } from '@/common/message-unique'; const SchemaData = { diff --git a/src/onebot/action/msg/SendMsg.ts b/src/onebot/action/msg/SendMsg.ts index 9b1dccf3..739478a5 100644 --- a/src/onebot/action/msg/SendMsg.ts +++ b/src/onebot/action/msg/SendMsg.ts @@ -6,7 +6,7 @@ import { OB11PostContext, OB11PostSendMsg, } from '@/onebot/types'; -import { ActionName, BaseCheckResult } from '@/onebot/action/types'; +import { ActionName, BaseCheckResult } from '@/onebot/action/router'; import { decodeCQCode } from '@/onebot/cqcode'; import { MessageUnique } from '@/common/message-unique'; import { ChatType, ElementType, NapCatCore, Peer, RawMessage, SendArkElement, SendMessageElement } from '@/core'; diff --git a/src/onebot/action/msg/SendPrivateMsg.ts b/src/onebot/action/msg/SendPrivateMsg.ts index b21005d5..f0eba061 100644 --- a/src/onebot/action/msg/SendPrivateMsg.ts +++ b/src/onebot/action/msg/SendPrivateMsg.ts @@ -1,5 +1,5 @@ import SendMsg, { ContextMode } from './SendMsg'; -import { ActionName, BaseCheckResult } from '../types'; +import { ActionName, BaseCheckResult } from '../router'; import { OB11PostSendMsg } from '../../types'; // 未检测参数 diff --git a/src/onebot/action/msg/SetMsgEmojiLike.ts b/src/onebot/action/msg/SetMsgEmojiLike.ts index 4d40e285..a98114d4 100644 --- a/src/onebot/action/msg/SetMsgEmojiLike.ts +++ b/src/onebot/action/msg/SetMsgEmojiLike.ts @@ -1,4 +1,4 @@ -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; diff --git a/src/onebot/action/packet/GetPacketStatus.ts b/src/onebot/action/packet/GetPacketStatus.ts index 13359864..8c8696bc 100644 --- a/src/onebot/action/packet/GetPacketStatus.ts +++ b/src/onebot/action/packet/GetPacketStatus.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName, BaseCheckResult } from '../types'; +import { ActionName, BaseCheckResult } from '../router'; export abstract class GetPacketStatusDepends extends OneBotAction { diff --git a/src/onebot/action/types.ts b/src/onebot/action/router.ts similarity index 100% rename from src/onebot/action/types.ts rename to src/onebot/action/router.ts diff --git a/src/onebot/action/system/CanSendImage.ts b/src/onebot/action/system/CanSendImage.ts index ab6a4d7b..592fa561 100644 --- a/src/onebot/action/system/CanSendImage.ts +++ b/src/onebot/action/system/CanSendImage.ts @@ -1,4 +1,4 @@ -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import CanSendRecord from './CanSendRecord'; interface ReturnType { diff --git a/src/onebot/action/system/CanSendRecord.ts b/src/onebot/action/system/CanSendRecord.ts index ab19c99d..48b1b5f8 100644 --- a/src/onebot/action/system/CanSendRecord.ts +++ b/src/onebot/action/system/CanSendRecord.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; interface ReturnType { yes: boolean; diff --git a/src/onebot/action/system/GetCSRF.ts b/src/onebot/action/system/GetCSRF.ts index 8f44b327..3d90c726 100644 --- a/src/onebot/action/system/GetCSRF.ts +++ b/src/onebot/action/system/GetCSRF.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; export class GetCSRF extends OneBotAction { actionName = ActionName.GetCSRF; diff --git a/src/onebot/action/system/GetCredentials.ts b/src/onebot/action/system/GetCredentials.ts index 4a04a468..b8173108 100644 --- a/src/onebot/action/system/GetCredentials.ts +++ b/src/onebot/action/system/GetCredentials.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; interface Response { diff --git a/src/onebot/action/system/GetLoginInfo.ts b/src/onebot/action/system/GetLoginInfo.ts index d617824d..9c601237 100644 --- a/src/onebot/action/system/GetLoginInfo.ts +++ b/src/onebot/action/system/GetLoginInfo.ts @@ -1,7 +1,7 @@ import { OB11User } from '@/onebot'; import { OB11Entities } from '@/onebot/entities'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; class GetLoginInfo extends OneBotAction { actionName = ActionName.GetLoginInfo; diff --git a/src/onebot/action/system/GetStatus.ts b/src/onebot/action/system/GetStatus.ts index 3de17181..2f70c8d1 100644 --- a/src/onebot/action/system/GetStatus.ts +++ b/src/onebot/action/system/GetStatus.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; export default class GetStatus extends OneBotAction { actionName = ActionName.GetStatus; diff --git a/src/onebot/action/system/GetSystemMsg.ts b/src/onebot/action/system/GetSystemMsg.ts index 2fef4a38..adbdba65 100644 --- a/src/onebot/action/system/GetSystemMsg.ts +++ b/src/onebot/action/system/GetSystemMsg.ts @@ -1,6 +1,6 @@ import { GroupNotifyMsgStatus } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/system/GetVersionInfo.ts b/src/onebot/action/system/GetVersionInfo.ts index 51541b07..1b12f127 100644 --- a/src/onebot/action/system/GetVersionInfo.ts +++ b/src/onebot/action/system/GetVersionInfo.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { napCatVersion } from '@/common/version'; diff --git a/src/onebot/action/user/FriendPoke.ts b/src/onebot/action/user/FriendPoke.ts index 620d9a73..35ca1ac3 100644 --- a/src/onebot/action/user/FriendPoke.ts +++ b/src/onebot/action/user/FriendPoke.ts @@ -1,4 +1,4 @@ -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; diff --git a/src/onebot/action/user/GetCookies.ts b/src/onebot/action/user/GetCookies.ts index 32c9edc8..a82d98d8 100644 --- a/src/onebot/action/user/GetCookies.ts +++ b/src/onebot/action/user/GetCookies.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; interface Response { diff --git a/src/onebot/action/user/GetFriendList.ts b/src/onebot/action/user/GetFriendList.ts index ac1e6d3e..0499db53 100644 --- a/src/onebot/action/user/GetFriendList.ts +++ b/src/onebot/action/user/GetFriendList.ts @@ -1,7 +1,7 @@ import { OB11User } from '@/onebot'; import { OB11Entities } from '@/onebot/entities'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; // no_cache get时传字符串 diff --git a/src/onebot/action/user/GetRecentContact.ts b/src/onebot/action/user/GetRecentContact.ts index 1cf5e6a1..83f4338f 100644 --- a/src/onebot/action/user/GetRecentContact.ts +++ b/src/onebot/action/user/GetRecentContact.ts @@ -1,6 +1,6 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { AdapterConfigWrap } from '@/onebot/config/config'; const SchemaData = { diff --git a/src/onebot/action/user/SendLike.ts b/src/onebot/action/user/SendLike.ts index 1d8459d0..099684c8 100644 --- a/src/onebot/action/user/SendLike.ts +++ b/src/onebot/action/user/SendLike.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; const SchemaData = { diff --git a/src/onebot/action/user/SetFriendAddRequest.ts b/src/onebot/action/user/SetFriendAddRequest.ts index 4e39ed84..3aa58b75 100644 --- a/src/onebot/action/user/SetFriendAddRequest.ts +++ b/src/onebot/action/user/SetFriendAddRequest.ts @@ -1,6 +1,6 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../types'; +import { ActionName } from '@/onebot/action/router'; const SchemaData = { type: 'object', diff --git a/src/onebot/network/active-websocket.ts b/src/onebot/network/active-websocket.ts index 9b477545..7f782c6d 100644 --- a/src/onebot/network/active-websocket.ts +++ b/src/onebot/network/active-websocket.ts @@ -2,7 +2,7 @@ import { IOB11NetworkAdapter, OB11EmitEventContent, OB11NetworkReloadType } from import { WebSocket } from 'ws'; import { OB11HeartbeatEvent } from '../event/meta/OB11HeartbeatEvent'; import { NapCatCore } from '@/core'; -import { ActionName } from '@/onebot/action/types'; +import { ActionName } from '@/onebot/action/router'; import { OB11Response } from '@/onebot/action/OneBotAction'; import { LogWrapper } from '@/common/log'; import { ActionMap } from '@/onebot/action'; diff --git a/src/onebot/network/passive-websocket.ts b/src/onebot/network/passive-websocket.ts index 4d60cf24..096dab3b 100644 --- a/src/onebot/network/passive-websocket.ts +++ b/src/onebot/network/passive-websocket.ts @@ -3,7 +3,7 @@ import urlParse from 'url'; import { WebSocket, WebSocketServer } from 'ws'; import { Mutex } from 'async-mutex'; import { OB11Response } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../action/types'; +import { ActionName } from '../action/router'; import { NapCatCore } from '@/core'; import { LogWrapper } from '@/common/log'; import { OB11HeartbeatEvent } from '../event/meta/OB11HeartbeatEvent'; From 8edbe54456362fa4d1e15d10c57823abb27d5368 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 11:25:06 +0800 Subject: [PATCH 033/418] fix: index --- src/onebot/network/passive-http.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/onebot/network/passive-http.ts b/src/onebot/network/passive-http.ts index 08f47cd7..e6d75924 100644 --- a/src/onebot/network/passive-http.ts +++ b/src/onebot/network/passive-http.ts @@ -99,7 +99,11 @@ export class OB11PassiveHttpAdapter implements IOB11NetworkAdapter { } else if (req.query) { payload = { ...req.query, ...req.body }; } - + if (req.path === '' || req.path === '/') { + const hello = OB11Response.ok({}); + hello.message = 'NapCat4 Ss Running'; + return res.json(hello) + } const actionName = req.path.split('/')[1]; const action = this.actions.get(actionName); if (action) { From a5d49989330a5fe46a91eb21d646722c17d5f1fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 11:39:44 +0800 Subject: [PATCH 034/418] =?UTF-8?q?refactor:=20=E9=80=9A=E8=BF=87@?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=AE=9A=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/audio.ts | 2 +- src/common/file.ts | 40 ++++++++----------- src/common/proxy-handler.ts | 2 +- src/common/qq-basic-info.ts | 2 +- src/common/video.ts | 2 +- src/onebot/action/extends/OCRImage.ts | 4 +- src/onebot/action/extends/SetQQAvatar.ts | 6 +-- .../action/go-cqhttp/SendGroupNotice.ts | 4 +- .../action/go-cqhttp/SetGroupPortrait.ts | 6 +-- src/onebot/network/active-http.ts | 1 - src/onebot/network/active-websocket.ts | 8 ++-- src/onebot/network/passive-http.ts | 2 +- src/onebot/network/passive-websocket.ts | 6 +-- src/onebot/types/message.ts | 4 +- 14 files changed, 41 insertions(+), 48 deletions(-) diff --git a/src/common/audio.ts b/src/common/audio.ts index 6f849d6c..284ff13a 100644 --- a/src/common/audio.ts +++ b/src/common/audio.ts @@ -4,7 +4,7 @@ import path from 'node:path'; import { randomUUID } from 'crypto'; import { spawn } from 'node:child_process'; import { EncodeResult, getDuration, getWavFileInfo, isSilk, isWav } from 'silk-wasm'; -import { LogWrapper } from './log'; +import { LogWrapper } from '@/common/log'; import { EncodeArgs } from "@/common/audio-worker"; const ALLOW_SAMPLE_RATE = [8000, 12000, 16000, 24000, 32000, 44100, 48000]; diff --git a/src/common/file.ts b/src/common/file.ts index ad1217e9..3166aa64 100644 --- a/src/common/file.ts +++ b/src/common/file.ts @@ -4,7 +4,20 @@ import crypto, { randomUUID } from 'crypto'; import util from 'util'; import path from 'node:path'; import * as fileType from 'file-type'; -import { solveProblem } from './helper'; +import { solveProblem } from '@/common/helper'; + +export interface HttpDownloadOptions { + url: string; + headers?: Record | string; +} + +type Uri2LocalRes = { + success: boolean, + errMsg: string, + fileName: string, + ext: string, + path: string +} export function isGIF(path: string) { const buffer = Buffer.alloc(4); @@ -15,7 +28,7 @@ export function isGIF(path: string) { } // 定义一个异步函数来检查文件是否存在 -export function checkFileReceived(path: string, timeout: number = 3000): Promise { +export function checkFileExist(path: string, timeout: number = 3000): Promise { return new Promise((resolve, reject) => { const startTime = Date.now(); @@ -34,7 +47,7 @@ export function checkFileReceived(path: string, timeout: number = 3000): Promise } // 定义一个异步函数来检查文件是否存在 -export async function checkFileReceived2(path: string, timeout: number = 3000): Promise { +export async function checkFileExistV2(path: string, timeout: number = 3000): Promise { // 使用 Promise.race 来同时进行文件状态检查和超时计时 // Promise.race 会返回第一个解决(resolve)或拒绝(reject)的 Promise await Promise.race([ @@ -75,18 +88,13 @@ export async function file2base64(path: string) { data: '', }; try { - // 读取文件内容 - // if (!fs.existsSync(path)){ - // path = path.replace("\\Ori\\", "\\Thumb\\"); - // } try { - await checkFileReceived(path, 5000); + await checkFileExist(path, 5000); } catch (e: any) { result.err = e.toString(); return result; } const data = await readFile(path); - // 转换为Base64编码 result.data = data.toString('base64'); } catch (err: any) { result.err = err.toString(); @@ -118,13 +126,7 @@ export function calculateFileMD5(filePath: string): Promise { }); } -export interface HttpDownloadOptions { - url: string; - headers?: Record | string; -} - async function tryDownload(options: string | HttpDownloadOptions, useReferer: boolean = false): Promise { - // const chunks: Buffer[] = []; let url: string; let headers: Record = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36', @@ -166,14 +168,6 @@ export async function httpDownload(options: string | HttpDownloadOptions): Promi return Buffer.from(buffer); } -type Uri2LocalRes = { - success: boolean, - errMsg: string, - fileName: string, - ext: string, - path: string -} - export async function checkFileV2(filePath: string) { try { const ext: string | undefined = (await fileType.fileTypeFromFile(filePath))?.ext; diff --git a/src/common/proxy-handler.ts b/src/common/proxy-handler.ts index 629a0b73..a6a8f915 100644 --- a/src/common/proxy-handler.ts +++ b/src/common/proxy-handler.ts @@ -1,4 +1,4 @@ -import { LogWrapper } from './log'; +import { LogWrapper } from '@/common/log'; export function proxyHandlerOf(logger: LogWrapper) { return { diff --git a/src/common/qq-basic-info.ts b/src/common/qq-basic-info.ts index 91f431e1..389d4a8c 100644 --- a/src/common/qq-basic-info.ts +++ b/src/common/qq-basic-info.ts @@ -2,7 +2,7 @@ import fs from 'node:fs'; import { systemPlatform } from '@/common/system'; import { getDefaultQQVersionConfigInfo, getQQPackageInfoPath, getQQVersionConfigPath, parseAppidFromMajor } from './helper'; import AppidTable from '@/core/external/appid.json'; -import { LogWrapper } from './log'; +import { LogWrapper } from '@/common/log'; import { getMajorPath } from '@/core'; export class QQBasicInfoWrapper { diff --git a/src/common/video.ts b/src/common/video.ts index cbbad304..5cddb44a 100644 --- a/src/common/video.ts +++ b/src/common/video.ts @@ -1,6 +1,6 @@ import ffmpeg, { FfprobeStream } from 'fluent-ffmpeg'; import fs from 'fs'; -import type { LogWrapper } from './log'; +import { LogWrapper } from '@/common/log'; export const defaultVideoThumbB64 = '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'; diff --git a/src/onebot/action/extends/OCRImage.ts b/src/onebot/action/extends/OCRImage.ts index 334a7f5f..e3e1e0e3 100644 --- a/src/onebot/action/extends/OCRImage.ts +++ b/src/onebot/action/extends/OCRImage.ts @@ -1,7 +1,7 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -import { checkFileReceived, uri2local } from '@/common/file'; +import { checkFileExist, uri2local } from '@/common/file'; import fs from 'fs'; const SchemaData = { @@ -24,7 +24,7 @@ export class OCRImage extends OneBotAction { throw new Error(`OCR ${payload.image}失败,image字段可能格式不正确`); } if (path) { - await checkFileReceived(path, 5000); // 文件不存在QQ会崩溃,需要提前判断 + await checkFileExist(path, 5000); // 避免崩溃 const ret = await this.core.apis.SystemApi.ocrImage(path); fs.unlink(path, () => { }); diff --git a/src/onebot/action/extends/SetQQAvatar.ts b/src/onebot/action/extends/SetQQAvatar.ts index cb566062..feac7670 100644 --- a/src/onebot/action/extends/SetQQAvatar.ts +++ b/src/onebot/action/extends/SetQQAvatar.ts @@ -1,7 +1,7 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName, BaseCheckResult } from '../router'; +import { ActionName, BaseCheckResult } from '@/onebot/action/router'; import * as fs from 'node:fs'; -import { checkFileReceived, uri2local } from '@/common/file'; +import { checkFileExist, uri2local } from '@/common/file'; interface Payload { file: string; @@ -29,7 +29,7 @@ export default class SetAvatar extends OneBotAction { throw new Error(`头像${payload.file}设置失败,file字段可能格式不正确`); } if (path) { - await checkFileReceived(path, 5000); // 文件不存在QQ会崩溃,需要提前判断 + await checkFileExist(path, 5000);// 避免崩溃 const ret = await this.core.apis.UserApi.setQQAvatar(path); fs.unlink(path, () => { }); diff --git a/src/onebot/action/go-cqhttp/SendGroupNotice.ts b/src/onebot/action/go-cqhttp/SendGroupNotice.ts index 55fb9d63..c30a50c8 100644 --- a/src/onebot/action/go-cqhttp/SendGroupNotice.ts +++ b/src/onebot/action/go-cqhttp/SendGroupNotice.ts @@ -1,4 +1,4 @@ -import { checkFileReceived, uri2local } from '@/common/file'; +import { checkFileExist, uri2local } from '@/common/file'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { unlink } from 'node:fs'; @@ -39,7 +39,7 @@ export class SendGroupNotice extends OneBotAction { if (!path) { throw new Error(`群公告${payload.image}设置失败,获取资源失败`); } - await checkFileReceived(path, 5000); // 文件不存在QQ会崩溃,需要提前判断 + await checkFileExist(path, 5000); const ImageUploadResult = await this.core.apis.GroupApi.uploadGroupBulletinPic(payload.group_id.toString(), path); if (ImageUploadResult.errCode != 0) { throw new Error(`群公告${payload.image}设置失败,图片上传失败`); diff --git a/src/onebot/action/go-cqhttp/SetGroupPortrait.ts b/src/onebot/action/go-cqhttp/SetGroupPortrait.ts index 00d28b04..fc86a92c 100644 --- a/src/onebot/action/go-cqhttp/SetGroupPortrait.ts +++ b/src/onebot/action/go-cqhttp/SetGroupPortrait.ts @@ -1,7 +1,7 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName, BaseCheckResult } from '../router'; +import { ActionName, BaseCheckResult } from '@/onebot/action/router'; import * as fs from 'node:fs'; -import { checkFileReceived, uri2local } from '@/common/file'; +import { checkFileExistV2, uri2local } from '@/common/file'; interface Payload { file: string, @@ -30,7 +30,7 @@ export default class SetGroupPortrait extends OneBotAction { throw new Error(`头像${payload.file}设置失败,file字段可能格式不正确`); } if (path) { - await checkFileReceived(path, 5000); // 文件不存在QQ会崩溃,需要提前判断 + await checkFileExistV2(path, 5000); // 文件不存在QQ会崩溃,需要提前判断 const ret = await this.core.apis.GroupApi.setGroupAvatar(payload.group_id.toString(), path); fs.unlink(path, () => { }); if (!ret) { diff --git a/src/onebot/network/active-http.ts b/src/onebot/network/active-http.ts index 26975454..622cba40 100644 --- a/src/onebot/network/active-http.ts +++ b/src/onebot/network/active-http.ts @@ -23,7 +23,6 @@ export class OB11ActiveHttpAdapter implements IOB11NetworkAdapter { this.config = structuredClone(config); } - onEvent(event: T) { if (!this.isEnable) { return; diff --git a/src/onebot/network/active-websocket.ts b/src/onebot/network/active-websocket.ts index 7f782c6d..c8c9435e 100644 --- a/src/onebot/network/active-websocket.ts +++ b/src/onebot/network/active-websocket.ts @@ -80,7 +80,7 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { headers: { 'X-Self-ID': this.core.selfInfo.uin, 'Authorization': `Bearer ${this.config.token}`, - 'x-client-role': 'Universal', // koishi-adapter-onebot 需要这个字段 + 'x-client-role': 'Universal', // 为koishi adpter适配 'User-Agent': 'OneBot/11', }, @@ -144,11 +144,11 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { this.checkStateAndReply(OB11Response.error('json解析失败,请检查数据格式', 1400, echo)); return; } - receiveData.params = (receiveData?.params) ? receiveData.params : {};//兼容类型验证 + receiveData.params = (receiveData?.params) ? receiveData.params : {};// 兼容类型验证 const action = this.actions.get(receiveData.action); if (!action) { - this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Client] 发生错误', '不支持的api ' + receiveData.action); - this.checkStateAndReply(OB11Response.error('不支持的api ' + receiveData.action, 1404, echo)); + this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Client] 发生错误', '不支持的Api ' + receiveData.action); + this.checkStateAndReply(OB11Response.error('不支持的Api ' + receiveData.action, 1404, echo)); return; } const retdata = await action.websocketHandle(receiveData.params, echo ?? '', this.name); diff --git a/src/onebot/network/passive-http.ts b/src/onebot/network/passive-http.ts index e6d75924..464312c1 100644 --- a/src/onebot/network/passive-http.ts +++ b/src/onebot/network/passive-http.ts @@ -114,7 +114,7 @@ export class OB11PassiveHttpAdapter implements IOB11NetworkAdapter { return res.json(OB11Response.error(error?.stack?.toString() || error?.message || 'Error Handle', 200)); } } else { - return res.json(OB11Response.error('不支持的api ' + actionName, 200)); + return res.json(OB11Response.error('不支持的Api ' + actionName, 200)); } } diff --git a/src/onebot/network/passive-websocket.ts b/src/onebot/network/passive-websocket.ts index 096dab3b..1459f04a 100644 --- a/src/onebot/network/passive-websocket.ts +++ b/src/onebot/network/passive-websocket.ts @@ -180,11 +180,11 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { this.checkStateAndReply(OB11Response.error('json解析失败,请检查数据格式', 1400, echo), wsClient); return; } - receiveData.params = (receiveData?.params) ? receiveData.params : {};//兼容类型验证 + receiveData.params = (receiveData?.params) ? receiveData.params : {};//兼容类型验证 不然类型校验爆炸 const action = this.actions.get(receiveData.action); if (!action) { - this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Client] 发生错误', '不支持的api ' + receiveData.action); - this.checkStateAndReply(OB11Response.error('不支持的api ' + receiveData.action, 1404, echo), wsClient); + this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Client] 发生错误', '不支持的API ' + receiveData.action); + this.checkStateAndReply(OB11Response.error('不支持的API ' + receiveData.action, 1404, echo), wsClient); return; } const retdata = await action.websocketHandle(receiveData.params, echo ?? '', this.name); diff --git a/src/onebot/types/message.ts b/src/onebot/types/message.ts index 01834441..8dcbb03b 100644 --- a/src/onebot/types/message.ts +++ b/src/onebot/types/message.ts @@ -12,7 +12,7 @@ export enum OB11MessageType { export interface OB11Message { temp_source?: number; message_sent_type?: string; - target_id?: number; // 自己发送的消息才有此字段 + target_id?: number; // 自己发送消息/私聊消息 self_id?: number; time: number; message_id: number; @@ -255,7 +255,7 @@ export interface OB11PostSendMsg { user_id?: string; group_id?: string; message: OB11MessageMixType; - messages?: OB11MessageMixType; // 兼容 go-cqhttp + messages?: OB11MessageMixType; auto_escape?: boolean | string; source?: string; news?: { text: string }[]; From a19358da5b982193b249e581fb4f304bf0991a24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 11:52:50 +0800 Subject: [PATCH 035/418] =?UTF-8?q?refactor:=20=E9=A1=B9=E7=9B=AE=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/apis/friend.ts | 4 +- .../action/extends/GetFriendWithCategory.ts | 4 +- .../action/go-cqhttp/GetGroupFilesByFolder.ts | 4 +- .../action/go-cqhttp/GetGroupRootFiles.ts | 6 +- .../action/go-cqhttp/GetStrangerInfo.ts | 4 +- src/onebot/action/group/GetGroupInfo.ts | 4 +- src/onebot/action/group/GetGroupList.ts | 4 +- src/onebot/action/group/GetGroupMemberInfo.ts | 4 +- src/onebot/action/group/GetGroupMemberList.ts | 4 +- src/onebot/action/msg/SendMsg.ts | 2 +- src/onebot/action/system/GetLoginInfo.ts | 4 +- src/onebot/action/user/GetFriendList.ts | 4 +- src/onebot/api/msg.ts | 6 +- src/onebot/{ => helper}/cqcode.ts | 2 +- src/onebot/{entities.ts => helper/data.ts} | 60 ++++++------------- 15 files changed, 45 insertions(+), 71 deletions(-) rename src/onebot/{ => helper}/cqcode.ts (97%) rename src/onebot/{entities.ts => helper/data.ts} (69%) diff --git a/src/core/apis/friend.ts b/src/core/apis/friend.ts index f128b035..c05102b5 100644 --- a/src/core/apis/friend.ts +++ b/src/core/apis/friend.ts @@ -24,7 +24,7 @@ export class NTQQFriendApi { ); } - async getBuddyV2(refresh = false): Promise { + async getBuddy(refresh = false): Promise { return Array.from((await this.getBuddyV2SimpleInfoMap(refresh)).values()); } @@ -58,7 +58,7 @@ export class NTQQFriendApi { categoryName: category.categroyName, categoryMbCount: category.categroyMbCount, onlineCount: category.onlineCount, - buddyList: category.buddyUids.map(uid => data.get(uid)!).filter(value => value), + buddyList: category.buddyUids.map(uid => data.get(uid)).filter(value => !!value), })); } diff --git a/src/onebot/action/extends/GetFriendWithCategory.ts b/src/onebot/action/extends/GetFriendWithCategory.ts index 79f96021..5fb0560d 100644 --- a/src/onebot/action/extends/GetFriendWithCategory.ts +++ b/src/onebot/action/extends/GetFriendWithCategory.ts @@ -1,4 +1,4 @@ -import { OB11Entities } from '@/onebot/entities'; +import { OB11Construct } from '@/onebot/helper/data'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; @@ -8,7 +8,7 @@ export class GetFriendWithCategory extends OneBotAction { async _handle(payload: void) { return (await this.core.apis.FriendApi.getBuddyV2ExWithCate()).map(category => ({ ...category, - buddyList: OB11Entities.friendsV2(category.buddyList), + buddyList: OB11Construct.friends(category.buddyList), })); } } diff --git a/src/onebot/action/go-cqhttp/GetGroupFilesByFolder.ts b/src/onebot/action/go-cqhttp/GetGroupFilesByFolder.ts index d4bff67b..472a9d69 100644 --- a/src/onebot/action/go-cqhttp/GetGroupFilesByFolder.ts +++ b/src/onebot/action/go-cqhttp/GetGroupFilesByFolder.ts @@ -1,7 +1,7 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { OB11Entities } from '@/onebot/entities'; +import { OB11Construct } from '@/onebot/helper/data'; const SchemaData = { type: 'object', @@ -31,7 +31,7 @@ export class GetGroupFilesByFolder extends OneBotAction { }).catch(() => []); return { files: ret.filter(item => item.fileInfo) - .map(item => OB11Entities.file(item.peerId, item.fileInfo!)), + .map(item => OB11Construct.file(item.peerId, item.fileInfo!)), folders: [] as [], }; } diff --git a/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts b/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts index 980eee4e..948ec1e4 100644 --- a/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts +++ b/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts @@ -2,7 +2,7 @@ import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { OB11GroupFile, OB11GroupFileFolder } from '@/onebot'; -import { OB11Entities } from '@/onebot/entities'; +import { OB11Construct } from '@/onebot/helper/data'; const SchemaData = { type: 'object', @@ -32,9 +32,9 @@ export class GetGroupRootFiles extends OneBotAction item.fileInfo) - .map(item => OB11Entities.file(item.peerId, item.fileInfo!)), + .map(item => OB11Construct.file(item.peerId, item.fileInfo!)), folders: ret.filter(item => item.folderInfo) - .map(item => OB11Entities.folder(item.peerId, item.folderInfo!)), + .map(item => OB11Construct.folder(item.peerId, item.folderInfo!)), }; } } diff --git a/src/onebot/action/go-cqhttp/GetStrangerInfo.ts b/src/onebot/action/go-cqhttp/GetStrangerInfo.ts index 0695c132..19fe5fc2 100644 --- a/src/onebot/action/go-cqhttp/GetStrangerInfo.ts +++ b/src/onebot/action/go-cqhttp/GetStrangerInfo.ts @@ -1,6 +1,6 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { OB11User, OB11UserSex } from '@/onebot'; -import { OB11Entities } from '@/onebot/entities'; +import { OB11Construct } from '@/onebot/helper/data'; import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { calcQQLevel } from '@/common/helper'; @@ -36,7 +36,7 @@ export default class GoCQHTTPGetStrangerInfo extends OneBotAction { max_member_count: data.searchGroupInfo.maxMemberNum, }; } - return OB11Entities.group(group); + return OB11Construct.group(group); } } diff --git a/src/onebot/action/group/GetGroupList.ts b/src/onebot/action/group/GetGroupList.ts index 47ac6740..b4792207 100644 --- a/src/onebot/action/group/GetGroupList.ts +++ b/src/onebot/action/group/GetGroupList.ts @@ -1,5 +1,5 @@ import { OB11Group } from '@/onebot'; -import { OB11Entities } from '@/onebot/entities'; +import { OB11Construct } from '@/onebot/helper/data'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -18,7 +18,7 @@ class GetGroupList extends OneBotAction { payloadSchema = SchemaData; async _handle(payload: Payload) { - return OB11Entities.groups( + return OB11Construct.groups( await this.core.apis.GroupApi.getGroups( typeof payload.no_cache === 'string' ? payload.no_cache === 'true' : !!payload.no_cache)); } diff --git a/src/onebot/action/group/GetGroupMemberInfo.ts b/src/onebot/action/group/GetGroupMemberInfo.ts index 819ed708..8cacd2a0 100644 --- a/src/onebot/action/group/GetGroupMemberInfo.ts +++ b/src/onebot/action/group/GetGroupMemberInfo.ts @@ -1,5 +1,5 @@ import { OB11GroupMember } from '@/onebot'; -import { OB11Entities } from '@/onebot/entities'; +import { OB11Construct } from '@/onebot/helper/data'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -43,7 +43,7 @@ class GetGroupMemberInfo extends OneBotAction { } else { this.core.context.logger.logDebug(`获取群成员详细信息失败, 只能返回基础信息`); } - return OB11Entities.groupMember(payload.group_id.toString(), member); + return OB11Construct.groupMember(payload.group_id.toString(), member); } } diff --git a/src/onebot/action/group/GetGroupMemberList.ts b/src/onebot/action/group/GetGroupMemberList.ts index 39538a9e..9c7d4df5 100644 --- a/src/onebot/action/group/GetGroupMemberList.ts +++ b/src/onebot/action/group/GetGroupMemberList.ts @@ -1,5 +1,5 @@ import { OB11GroupMember } from '@/onebot'; -import { OB11Entities } from '@/onebot/entities'; +import { OB11Construct } from '@/onebot/helper/data'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -30,7 +30,7 @@ export class GetGroupMemberList extends OneBotAction groupMembers = memberCache.get(groupIdStr) ?? await this.core.apis.GroupApi.getGroupMembersV2(groupIdStr); } const memberPromises = Array.from(groupMembers.values()).map(item => - OB11Entities.groupMember(groupIdStr, item) + OB11Construct.groupMember(groupIdStr, item) ); const _groupMembers = await Promise.all(memberPromises); const MemberMap = new Map(_groupMembers.map(member => [member.user_id, member])); diff --git a/src/onebot/action/msg/SendMsg.ts b/src/onebot/action/msg/SendMsg.ts index 739478a5..1de705e3 100644 --- a/src/onebot/action/msg/SendMsg.ts +++ b/src/onebot/action/msg/SendMsg.ts @@ -7,7 +7,7 @@ import { OB11PostSendMsg, } from '@/onebot/types'; import { ActionName, BaseCheckResult } from '@/onebot/action/router'; -import { decodeCQCode } from '@/onebot/cqcode'; +import { decodeCQCode } from '@/onebot/helper/cqcode'; import { MessageUnique } from '@/common/message-unique'; import { ChatType, ElementType, NapCatCore, Peer, RawMessage, SendArkElement, SendMessageElement } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; diff --git a/src/onebot/action/system/GetLoginInfo.ts b/src/onebot/action/system/GetLoginInfo.ts index 9c601237..3b66e393 100644 --- a/src/onebot/action/system/GetLoginInfo.ts +++ b/src/onebot/action/system/GetLoginInfo.ts @@ -1,5 +1,5 @@ import { OB11User } from '@/onebot'; -import { OB11Entities } from '@/onebot/entities'; +import { OB11Construct } from '@/onebot/helper/data'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; @@ -7,7 +7,7 @@ class GetLoginInfo extends OneBotAction { actionName = ActionName.GetLoginInfo; async _handle(payload: null) { - return OB11Entities.selfInfo(this.core.selfInfo); + return OB11Construct.selfInfo(this.core.selfInfo); } } diff --git a/src/onebot/action/user/GetFriendList.ts b/src/onebot/action/user/GetFriendList.ts index 0499db53..79e063ef 100644 --- a/src/onebot/action/user/GetFriendList.ts +++ b/src/onebot/action/user/GetFriendList.ts @@ -1,5 +1,5 @@ import { OB11User } from '@/onebot'; -import { OB11Entities } from '@/onebot/entities'; +import { OB11Construct } from '@/onebot/helper/data'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -19,6 +19,6 @@ export default class GetFriendList extends OneBotAction { async _handle(payload: Payload) { //全新逻辑 - return OB11Entities.friendsV2(await this.core.apis.FriendApi.getBuddyV2(typeof payload.no_cache === 'string' ? payload.no_cache === 'true' : !!payload.no_cache)); + return OB11Construct.friends(await this.core.apis.FriendApi.getBuddy(typeof payload.no_cache === 'string' ? payload.no_cache === 'true' : !!payload.no_cache)); } } diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index bf81e1d6..f5bf48e5 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -19,9 +19,9 @@ import { } from '@/core'; import faceConfig from '@/core/external/face_config.json'; import { NapCatOneBot11Adapter, OB11Message, OB11MessageData, OB11MessageDataType, OB11MessageFileBase, } from '@/onebot'; -import { OB11Entities } from '@/onebot/entities'; +import { OB11Construct } from '@/onebot/helper/data'; import { EventType } from '@/onebot/event/OneBotEvent'; -import { encodeCQCode } from '@/onebot/cqcode'; +import { encodeCQCode } from '@/onebot/helper/cqcode'; import { uri2local } from '@/common/file'; import { RequestUtil } from '@/common/request'; import fs from 'node:fs'; @@ -736,7 +736,7 @@ export class OneBotMsgApi { let member = await this.core.apis.GroupApi.getGroupMember(msg.peerUin, msg.senderUin); if (!member) member = await this.core.apis.GroupApi.getGroupMember(msg.peerUin, msg.senderUin); if (member) { - resMsg.sender.role = OB11Entities.groupMemberRole(member.role); + resMsg.sender.role = OB11Construct.groupMemberRole(member.role); resMsg.sender.nickname = member.nick; } } else if (msg.chatType == ChatType.KCHATTYPEC2C) { diff --git a/src/onebot/cqcode.ts b/src/onebot/helper/cqcode.ts similarity index 97% rename from src/onebot/cqcode.ts rename to src/onebot/helper/cqcode.ts index eadfc2d3..06b7626a 100644 --- a/src/onebot/cqcode.ts +++ b/src/onebot/helper/cqcode.ts @@ -1,4 +1,4 @@ -import { OB11MessageData } from './types'; +import { OB11MessageData } from '@/onebot/types'; const pattern = /\[CQ:(\w+)((,\w+=[^,\]]*)*)]/; diff --git a/src/onebot/entities.ts b/src/onebot/helper/data.ts similarity index 69% rename from src/onebot/entities.ts rename to src/onebot/helper/data.ts index d043e3e0..ef65978e 100644 --- a/src/onebot/entities.ts +++ b/src/onebot/helper/data.ts @@ -1,5 +1,5 @@ import { calcQQLevel, FileNapCatOneBotUUID } from '@/common/helper'; -import { Friend, FriendV2, Group, GroupFileInfoUpdateParamType, GroupMember, SelfInfo, Sex, User } from '@/core'; +import { FriendV2, Group, GroupFileInfoUpdateParamType, GroupMember, SelfInfo, Sex } from '@/core'; import { OB11Group, OB11GroupFile, @@ -8,17 +8,16 @@ import { OB11GroupMemberRole, OB11User, OB11UserSex, -} from './types'; - -export class OB11Entities { +} from '../types'; +export class OB11Construct { static selfInfo(selfInfo: SelfInfo): OB11User { return { - user_id: parseInt(selfInfo.uin), + user_id: +selfInfo.uin, nickname: selfInfo.nick, }; } - static friendsV2(friends: FriendV2[]): OB11User[] { + static friends(friends: FriendV2[]): OB11User[] { return friends.map(rawFriend => ({ ...rawFriend.baseInfo, ...rawFriend.coreInfo, @@ -30,16 +29,6 @@ export class OB11Entities { })); } - static friends(friends: Friend[]): OB11User[] { - return friends.map(rawFriend => ({ - user_id: parseInt(rawFriend.uin), - nickname: rawFriend.nick, - remark: rawFriend.remark, - sex: this.sex(rawFriend.sex!), - level: 0, - })); - } - static groupMemberRole(role: number): OB11GroupMemberRole | undefined { return { 4: OB11GroupMemberRole.owner, @@ -59,11 +48,11 @@ export class OB11Entities { static groupMember(group_id: string, member: GroupMember): OB11GroupMember { return { - group_id: parseInt(group_id), - user_id: parseInt(member.uin), + group_id: +group_id, + user_id: +member.uin, nickname: member.nick, card: member.cardName, - sex: OB11Entities.sex(member.sex!), + sex: this.sex(member.sex), age: member.age ?? 0, area: '', level: member.memberRealLevel?.toString() ?? '0', @@ -75,29 +64,14 @@ export class OB11Entities { card_changeable: true, is_robot: member.isRobot, shut_up_timestamp: member.shutUpTime, - role: OB11Entities.groupMemberRole(member.role), + role: this.groupMemberRole(member.role), title: member.memberSpecialTitle ?? '', - }; } - static stranger(user: User): OB11User { - return { - ...user, - user_id: parseInt(user.uin), - nickname: user.nick, - sex: OB11Entities.sex(user.sex!), - age: 0, - qid: user.qid, - login_days: 0, - level: user.qqLevel && calcQQLevel(user.qqLevel) || 0, - }; - } - - static group(group: Group): OB11Group { return { - group_id: parseInt(group.groupCode), + group_id: +group.groupCode, group_name: group.groupName, member_count: group.memberCount, max_member_count: group.maxMember, @@ -105,35 +79,35 @@ export class OB11Entities { } static groups(groups: Group[]): OB11Group[] { - return groups.map(OB11Entities.group); + return groups.map(this.group); } static file(peerId: string, file: Exclude): OB11GroupFile { return { - group_id: parseInt(peerId), + group_id: +peerId, file_id: FileNapCatOneBotUUID.encodeModelId({ chatType: 2, peerUid: peerId }, file.fileModelId, file.fileId, file.fileId ?? ''), file_name: file.fileName, busid: file.busId, - size: parseInt(file.fileSize), + size: +file.fileSize, upload_time: file.uploadTime, dead_time: file.deadTime, modify_time: file.modifyTime, download_times: file.downloadTimes, - uploader: parseInt(file.uploaderUin), + uploader: +file.uploaderUin, uploader_name: file.uploaderName, }; } static folder(peerId: string, folder: Exclude): OB11GroupFileFolder { return { - group_id: parseInt(peerId), + group_id: +peerId, folder_id: folder.folderId, folder: folder.folderId, folder_name: folder.folderName, create_time: folder.createTime, - creator: parseInt(folder.createUin), + creator: +folder.createUin, creator_name: folder.creatorName, total_file_count: folder.totalFileCount, }; } -} +} \ No newline at end of file From 2ecf04c78cb1c8186ae3e79f588516f6b078bbcd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 12:23:51 +0800 Subject: [PATCH 036/418] chore: LICENSE --- LICENSE | 480 ++++++++++++++++++++------------------------------------ 1 file changed, 169 insertions(+), 311 deletions(-) diff --git a/LICENSE b/LICENSE index 6340ac9d..261eeb9e 100644 --- a/LICENSE +++ b/LICENSE @@ -1,343 +1,201 @@ - GNU GENERAL PUBLIC Without Social media promotion LICENSE - Version 2, June 1991 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - Preamble + 1. Definitions. - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). - The precise terms and conditions for copying, distribution and -modification follow. + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. - d)You may use this software in accordance with the above terms, - but you are not allowed to promote this project or your projects - based on this project on any public social media. + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, + END OF TERMS AND CONDITIONS - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) + APPENDIX: How to apply the Apache License to your work. -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. + Copyright [yyyy] [name of copyright owner] - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. + http://www.apache.org/licenses/LICENSE-2.0 - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. From 56e62392a684e3f6600c92268ab6bd015b330beb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 12:24:53 +0800 Subject: [PATCH 037/418] chore: webui backend readme --- src/webui/Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/webui/Readme.md b/src/webui/Readme.md index 512eac30..5cc80404 100644 --- a/src/webui/Readme.md +++ b/src/webui/Readme.md @@ -1,3 +1,3 @@ # The Path of NapCatQQ -Tiny WebUi for NapCatQQ +Tiny WebUi Backend for NapCatQQ From 2bf8d8f79110bd0039be7a2aba6b782176923094 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 13:06:13 +0800 Subject: [PATCH 038/418] =?UTF-8?q?fix=20=E6=A0=87=E5=87=86=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/apis/collection.ts | 2 +- src/core/apis/file.ts | 29 +++++++++++++++++------------ src/core/entities/msg.ts | 12 ++++++++---- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/src/core/apis/collection.ts b/src/core/apis/collection.ts index 262a8c6a..c805b442 100644 --- a/src/core/apis/collection.ts +++ b/src/core/apis/collection.ts @@ -1,4 +1,4 @@ -import { InstanceContext, NapCatCore } from '..'; +import { InstanceContext, NapCatCore } from '@/core'; export class NTQQCollectionApi { context: InstanceContext; diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index 1a94151c..6b5893c4 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -36,7 +36,11 @@ export class NTQQFileApi { constructor(context: InstanceContext, core: NapCatCore) { this.context = context; this.core = core; - this.rkeyManager = new RkeyManager(['https://rkey.napneko.icu/rkeys', 'https://llob.linyuchen.net/rkey', 'http://napcat-sign.wumiao.wang:2082/rkey'], this.context.logger); + this.rkeyManager = new RkeyManager([ + 'https://rkey.napneko.icu/rkeys' + ], + this.context.logger + ); } async copyFile(filePath: string, destPath: string) { @@ -102,7 +106,7 @@ export class NTQQFileApi { fileName: fileName || _fileName, folderId: folderId, filePath: path, - fileSize: (fileSize).toString(), + fileSize: fileSize.toString(), }, }; } @@ -125,7 +129,7 @@ export class NTQQFileApi { fileName: fileName, sourcePath: path, original: true, - picType: isGIF(picPath) ? PicType.GIF : PicType.JGP, + picType: isGIF(picPath) ? PicType.NEWPIC_GIF : PicType.NEWPIC_JPEG, picSubType: subType, fileUuid: '', fileSubId: '', @@ -138,7 +142,8 @@ export class NTQQFileApi { async createValidSendVideoElement(context: MessageContext, filePath: string, fileName: string = '', diyThumbPath: string = ''): Promise { const logger = this.core.context.logger; let videoInfo = { - width: 1920, height: 1080, + width: 1920, + height: 1080, time: 15, format: 'mp4', size: 0, @@ -300,18 +305,18 @@ export class NTQQFileApi { element.elementType === ElementType.FILE ) { switch (element.elementType) { - case ElementType.PIC: + case ElementType.PIC: element.picElement!.sourcePath = elementResults[elementIndex]; - break; - case ElementType.VIDEO: + break; + case ElementType.VIDEO: element.videoElement!.filePath = elementResults[elementIndex]; - break; - case ElementType.PTT: + break; + case ElementType.PTT: element.pttElement!.filePath = elementResults[elementIndex]; - break; - case ElementType.FILE: + break; + case ElementType.FILE: element.fileElement!.filePath = elementResults[elementIndex]; - break; + break; } elementIndex++; } diff --git a/src/core/entities/msg.ts b/src/core/entities/msg.ts index 90b2a6dc..762256a4 100644 --- a/src/core/entities/msg.ts +++ b/src/core/entities/msg.ts @@ -104,10 +104,15 @@ export enum NTMsgType { * 图片类型枚举 */ export enum PicType { - GIF = 2000, - JGP = 1000 + NEWPIC_APNG = 2001, + NEWPIC_BMP = 1005, + NEWPIC_GIF = 2000, + NEWPIC_JPEG = 1000, + NEWPIC_PNG = 1001, + NEWPIC_PROGERSSIV_JPEG = 1003, + NEWPIC_SHARPP = 1004, + NEWPIC_WEBP = 1002 } - /** * 图片子类型枚举 */ @@ -116,7 +121,6 @@ export enum PicSubType { Face = 1 // 表情包小图 //...待补全 其余见NT Android } - /** * 消息@类型枚举 */ From eeef5409dcffbfdfba7a01cca47993de6f087282 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 13:10:49 +0800 Subject: [PATCH 039/418] fix: PicSubType --- src/core/apis/file.ts | 3 ++- src/core/entities/msg.ts | 13 +++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index 6b5893c4..fbcf9d08 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -5,6 +5,7 @@ import { IMAGE_HTTP_HOST_NT, Peer, PicElement, + PicSubType, PicType, RawMessage, SendFileElement, @@ -111,7 +112,7 @@ export class NTQQFileApi { }; } - async createValidSendPicElement(context: MessageContext, picPath: string, summary: string = '', subType: 0 | 1 = 0): Promise { + async createValidSendPicElement(context: MessageContext, picPath: string, summary: string = '', subType: PicSubType = 0): Promise { const { md5, fileName, path, fileSize } = await this.core.apis.FileApi.uploadFile(picPath, ElementType.PIC, subType); if (fileSize === 0) { throw new Error('文件异常,大小为0'); diff --git a/src/core/entities/msg.ts b/src/core/entities/msg.ts index 762256a4..2999e1ca 100644 --- a/src/core/entities/msg.ts +++ b/src/core/entities/msg.ts @@ -104,7 +104,7 @@ export enum NTMsgType { * 图片类型枚举 */ export enum PicType { - NEWPIC_APNG = 2001, + NEWPIC_APNG = 2001, NEWPIC_BMP = 1005, NEWPIC_GIF = 2000, NEWPIC_JPEG = 1000, @@ -117,9 +117,14 @@ export enum PicType { * 图片子类型枚举 */ export enum PicSubType { - Normal = 0, // 普通图片 - Face = 1 // 表情包小图 - //...待补全 其余见NT Android + KNORMAL = 0, + KCUSTOM = 1, + KHOT = 2, + KDIPPERCHART = 3, + KSMART = 4, + KSPACE = 5, + KUNKNOW = 6, + KRELATED = 7 } /** * 消息@类型枚举 From e5b063accb803e4bfe363ea1396afebcd58b6595 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 13:44:21 +0800 Subject: [PATCH 040/418] feat: MemberAddShowType --- src/core/entities/msg.ts | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/src/core/entities/msg.ts b/src/core/entities/msg.ts index 2999e1ca..f8bfeb09 100644 --- a/src/core/entities/msg.ts +++ b/src/core/entities/msg.ts @@ -270,6 +270,20 @@ export enum FaceType { poke = 5 // 拍一拍 } +/** + * Poke 类型枚举 + */ +export enum PokeType { + POKE_TYPE_APPROVE = 3, + POKE_TYPE_GIVING_HEART = 2, + POKE_TYPE_GREAT_MOVE = 6, + POKE_TYPE_HEART_BREAK = 4, + POKE_TYPE_HI_TOGETHER = 5, + POKE_TYPE_POKE = 1, + POKE_TYPE_POKE_OLD = 0, + POKE_TYPE_VAS_POKE = 126, +} + /** * 表情索引枚举 */ @@ -352,13 +366,27 @@ export enum TipGroupElementType { ban = 8 } +/** + * 群加入ShowType + */ +export enum MemberAddShowType { + K_OTHER_ADD = 0, + K_OTHER_ADD_BY_OTHER_QRCODE = 2, + K_OTHER_ADD_BY_YOUR_QRCODE = 3, + K_OTHER_INVITE_OTHER = 5, + K_OTHER_INVITE_YOU = 6, + K_YOU_ADD = 1, + K_YOU_ADD_BY_OTHER_QRCODE = 4, + K_YOU_ALREADY_MEMBER = 8, + K_YOU_INVITE_OTHER = 7, +} /** * 群提示元素接口 */ export interface TipGroupElement { type: TipGroupElementType; // 1表示有人加入群; 自己加入群也会收到这个 - role: 0; // 暂时不知 - groupName: string; // 暂时获取不到 + role: 0; + groupName: string; memberUid: string; memberNick: string; memberRemark: string; @@ -367,7 +395,7 @@ export interface TipGroupElement { adminRemark: string; createGroup: null; memberAdd?: { - showType: 1; + showType: MemberAddShowType; otherAdd: null; otherAddByOtherQRCode: null; otherAddByYourQRCode: null; From cd212abd5ffa148fe90116ca6f9086840a1a87db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 14:10:52 +0800 Subject: [PATCH 041/418] fix: TipGroupElementType --- src/core/entities/msg.ts | 17 +++++++++++++---- src/onebot/api/group.ts | 6 +++--- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/core/entities/msg.ts b/src/core/entities/msg.ts index f8bfeb09..4a6ae872 100644 --- a/src/core/entities/msg.ts +++ b/src/core/entities/msg.ts @@ -361,9 +361,17 @@ export interface TipAioOpGrayTipElement { * 群提示元素类型枚举 */ export enum TipGroupElementType { - memberIncrease = 1, - kicked = 3, // 被移出群 - ban = 8 + KUNKNOWN = 0, + KMEMBERADD = 1, + KDISBANDED = 2, + KQUITTE = 3, + KCREATED = 4, + KGROUPNAMEMODIFIED = 5, + KBLOCK = 6, + KUNBLOCK = 7, + KSHUTUP = 8, + KBERECYCLED = 9, + KDISBANDORBERECYCLED = 10 } /** @@ -380,11 +388,12 @@ export enum MemberAddShowType { K_YOU_ALREADY_MEMBER = 8, K_YOU_INVITE_OTHER = 7, } + /** * 群提示元素接口 */ export interface TipGroupElement { - type: TipGroupElementType; // 1表示有人加入群; 自己加入群也会收到这个 + type: TipGroupElementType; role: 0; groupName: string; memberUid: string; diff --git a/src/onebot/api/group.ts b/src/onebot/api/group.ts index c8124f8d..1fcccd79 100644 --- a/src/onebot/api/group.ts +++ b/src/onebot/api/group.ts @@ -50,13 +50,13 @@ export class OneBotGroupApi { for (const element of msg.elements) { if (element.grayTipElement?.groupElement) { const groupElement = element.grayTipElement.groupElement; - if (groupElement.type == TipGroupElementType.memberIncrease) { + if (groupElement.type == TipGroupElementType.KMEMBERADD) { const MemberIncreaseEvent = await this.obContext.apis.GroupApi.parseGroupMemberIncreaseEvent(msg.peerUid, element.grayTipElement); if (MemberIncreaseEvent) return MemberIncreaseEvent; - } else if (groupElement.type === TipGroupElementType.ban) { + } else if (groupElement.type === TipGroupElementType.KSHUTUP) { const BanEvent = await this.obContext.apis.GroupApi.parseGroupBanEvent(msg.peerUid, element.grayTipElement); if (BanEvent) return BanEvent; - } else if (groupElement.type == TipGroupElementType.kicked) { + } else if (groupElement.type == TipGroupElementType.KQUITTE) { this.core.apis.GroupApi.quitGroup(msg.peerUid).then(); try { const KickEvent = await this.obContext.apis.GroupApi.parseGroupKickEvent(msg.peerUid, element.grayTipElement); From 7ce95bca04b2472ec4284388e909e443e605700e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 14:15:22 +0800 Subject: [PATCH 042/418] feat: NTGroupMemberRole --- src/core/apis/group.ts | 4 ++-- src/core/entities/contact.ts | 1 - src/core/entities/group.ts | 15 +++++++-------- src/core/entities/msg.ts | 6 +++--- src/core/entities/notify.ts | 2 +- src/onebot/action/group/SetGroupAdmin.ts | 4 ++-- src/onebot/index.ts | 4 ++-- 7 files changed, 17 insertions(+), 19 deletions(-) diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index ab4f0fa5..9dbad8d9 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -2,7 +2,7 @@ import { GeneralCallResult, Group, GroupMember, - GroupMemberRole, + NTGroupMemberRole, GroupRequestOperateTypes, InstanceContext, KickMemberV2Req, @@ -457,7 +457,7 @@ export class NTQQGroupApi { return this.context.session.getGroupService().modifyMemberCardName(groupQQ, memberUid, cardName); } - async setMemberRole(groupQQ: string, memberUid: string, role: GroupMemberRole) { + async setMemberRole(groupQQ: string, memberUid: string, role: NTGroupMemberRole) { return this.context.session.getGroupService().modifyMemberRole(groupQQ, memberUid, role); } diff --git a/src/core/entities/contact.ts b/src/core/entities/contact.ts index ab13af92..7ab61df8 100644 --- a/src/core/entities/contact.ts +++ b/src/core/entities/contact.ts @@ -1,4 +1,3 @@ - export interface FSABRecentContactParams { anchorPointContact: { contactId: string; diff --git a/src/core/entities/group.ts b/src/core/entities/group.ts index 7885bbe3..f960b203 100644 --- a/src/core/entities/group.ts +++ b/src/core/entities/group.ts @@ -113,14 +113,13 @@ export interface Group { memberUid: string; }; } - -// 群成员角色类型 -export enum GroupMemberRole { - normal = 2, - admin = 3, - owner = 4 +export enum NTGroupMemberRole { + KUNSPECIFIED = 0, + KSTRANGER = 1, + KMEMBER = 2, + KADMIN = 3, + KOWNER = 4 } - export interface GroupMember { memberRealLevel: number | undefined; memberSpecialTitle?: string; @@ -131,7 +130,7 @@ export interface GroupMember { nick: string; qid: string; remark: string; - role: GroupMemberRole; + role: NTGroupMemberRole; shutUpTime: number; // 禁言时间(S) uid: string; uin: string; diff --git a/src/core/entities/msg.ts b/src/core/entities/msg.ts index 4a6ae872..a7f37af3 100644 --- a/src/core/entities/msg.ts +++ b/src/core/entities/msg.ts @@ -1,4 +1,4 @@ -import { GroupMemberRole } from '@/core'; +import { NTGroupMemberRole } from '@/core'; import { ActionBarElement, ArkElement, AvRecordElement, CalendarElement, FaceBubbleElement, FaceElement, FileElement, GiphyElement, GrayTipElement, MarketFaceElement, PicElement, PttElement, RecommendedMsgElement, ReplyElement, ShareLocationElement, StructLongMsgElement, TaskTopMsgElement, TextElement, TofuRecordElement, VideoElement, YoloGameResultElement } from './element'; /** @@ -420,13 +420,13 @@ export interface TipGroupElement { uid: string; card: string; name: string; - role: GroupMemberRole + role: NTGroupMemberRole }; member: { uid: string card: string; name: string; - role: GroupMemberRole + role: NTGroupMemberRole } }; } diff --git a/src/core/entities/notify.ts b/src/core/entities/notify.ts index dbf3f63b..f9c7dd64 100644 --- a/src/core/entities/notify.ts +++ b/src/core/entities/notify.ts @@ -135,7 +135,7 @@ export interface FriendRequest { isDecide: boolean; friendUid: string; reqType: BuddyReqType, - reqTime: string; // 时间戳;秒 + reqTime: string; // 时间戳 秒 extWords: string; // 申请人填写的验证消息 isUnread: boolean; friendNick: string; diff --git a/src/onebot/action/group/SetGroupAdmin.ts b/src/onebot/action/group/SetGroupAdmin.ts index 899aa843..d1980380 100644 --- a/src/onebot/action/group/SetGroupAdmin.ts +++ b/src/onebot/action/group/SetGroupAdmin.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { GroupMemberRole } from '@/core/entities'; +import { NTGroupMemberRole } from '@/core/entities'; import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -23,7 +23,7 @@ export default class SetGroupAdmin extends OneBotAction { const enable = typeof payload.enable === 'string' ? payload.enable === 'true' : !!payload.enable; const uid = await this.core.apis.UserApi.getUidByUinV2(payload.user_id.toString()); if (!uid) throw new Error('get Uid Error'); - await this.core.apis.GroupApi.setMemberRole(payload.group_id.toString(), uid, enable ? GroupMemberRole.admin : GroupMemberRole.normal); + await this.core.apis.GroupApi.setMemberRole(payload.group_id.toString(), uid, enable ? NTGroupMemberRole.KADMIN : NTGroupMemberRole.KMEMBER); return null; } } diff --git a/src/onebot/index.ts b/src/onebot/index.ts index 1fb7264b..c9938ef5 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -2,7 +2,7 @@ import { BuddyReqType, ChatType, DataSource, - GroupMemberRole, + NTGroupMemberRole, GroupNotifyMsgStatus, GroupNotifyMsgType, InstanceContext, @@ -524,7 +524,7 @@ export class NapCatOneBot11Adapter { this.core, parseInt(groupCode), parseInt(member.uin), - member.role === GroupMemberRole.admin ? 'set' : 'unset' + member.role === NTGroupMemberRole.KADMIN ? 'set' : 'unset' ); this.networkManager .emitEvent(groupAdminNoticeEvent) From b8165242f07bb8cf6b3f6169a752346477fe19b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 14:21:14 +0800 Subject: [PATCH 043/418] feat: NTSex --- src/core/entities/group.ts | 2 +- src/core/entities/user.ts | 13 +++++++------ src/onebot/helper/data.ts | 11 ++++++----- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/core/entities/group.ts b/src/core/entities/group.ts index f960b203..0e853e31 100644 --- a/src/core/entities/group.ts +++ b/src/core/entities/group.ts @@ -1,4 +1,4 @@ -import { QQLevel, Sex } from './user'; +import { QQLevel, NTSex } from './user'; export interface KickMemberInfo { optFlag: number; diff --git a/src/core/entities/user.ts b/src/core/entities/user.ts index f3f0a06d..69c93fa9 100644 --- a/src/core/entities/user.ts +++ b/src/core/entities/user.ts @@ -1,8 +1,9 @@ // 性别枚举 -export enum Sex { - male = 1, - female = 2, - unknown = 255, +export enum NTSex { + GENDER_UNKOWN = 0, + GENDER_MALE = 1, + GENDER_FEMALE = 2, + GENDER_PRIVACY = 255, } // 好友分类类型 @@ -226,7 +227,7 @@ export interface UserDetailInfoListenerArg { export interface ModifyProfileParams { nick: string; longNick: string; - sex: Sex; + sex: NTSex; birthday: { birthday_year: string, birthday_month: string, birthday_day: string }; location: any; } @@ -259,7 +260,7 @@ export interface User { avatarUrl?: string; longNick?: string; remark?: string; - sex?: Sex; + sex?: NTSex; age?: number; qqLevel?: QQLevel; qid?: string; diff --git a/src/onebot/helper/data.ts b/src/onebot/helper/data.ts index ef65978e..f96895f9 100644 --- a/src/onebot/helper/data.ts +++ b/src/onebot/helper/data.ts @@ -1,5 +1,5 @@ import { calcQQLevel, FileNapCatOneBotUUID } from '@/common/helper'; -import { FriendV2, Group, GroupFileInfoUpdateParamType, GroupMember, SelfInfo, Sex } from '@/core'; +import { FriendV2, Group, GroupFileInfoUpdateParamType, GroupMember, SelfInfo, NTSex } from '@/core'; import { OB11Group, OB11GroupFile, @@ -37,12 +37,13 @@ export class OB11Construct { }[role]; } - static sex(sex?: Sex): OB11UserSex { + static sex(sex?: NTSex): OB11UserSex { if (!sex) return OB11UserSex.unknown; return { - [Sex.male]: OB11UserSex.male, - [Sex.female]: OB11UserSex.female, - [Sex.unknown]: OB11UserSex.unknown, + [NTSex.GENDER_MALE]: OB11UserSex.male, + [NTSex.GENDER_FEMALE]: OB11UserSex.female, + [NTSex.GENDER_UNKOWN]: OB11UserSex.unknown, + [NTSex.GENDER_PRIVACY]: OB11UserSex.unknown, }[sex] || OB11UserSex.unknown; } From d982bcdad58a152a020b9929151ef62bcfc22301 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 14:21:46 +0800 Subject: [PATCH 044/418] fix: typo --- src/core/entities/group.ts | 2 +- src/core/services/NodeIKernelGroupService.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/entities/group.ts b/src/core/entities/group.ts index 0e853e31..77c5e4a3 100644 --- a/src/core/entities/group.ts +++ b/src/core/entities/group.ts @@ -135,7 +135,7 @@ export interface GroupMember { uid: string; uin: string; isRobot: boolean; - sex?: Sex; + sex?: NTSex; age?: number; qqLevel?: QQLevel; isChangeRole: boolean; diff --git a/src/core/services/NodeIKernelGroupService.ts b/src/core/services/NodeIKernelGroupService.ts index d5684800..4c9ee0f1 100644 --- a/src/core/services/NodeIKernelGroupService.ts +++ b/src/core/services/NodeIKernelGroupService.ts @@ -4,7 +4,7 @@ import { GroupExtParam, GroupInfoSource, GroupMember, - GroupMemberRole, + NTGroupMemberRole, GroupNotifyMsgType, GroupRequestOperateTypes, KickMemberV2Req, @@ -137,7 +137,7 @@ export interface NodeIKernelGroupService { kickMember(groupCode: string, memberUids: string[], refuseForever: boolean, kickReason: string): Promise; - modifyMemberRole(groupCode: string, uid: string, role: GroupMemberRole): void; + modifyMemberRole(groupCode: string, uid: string, role: NTGroupMemberRole): void; modifyMemberCardName(groupCode: string, uid: string, cardName: string): void; From 52c68a3bfb788d36a4a67dc0d4e6785ced73d582 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 14:27:11 +0800 Subject: [PATCH 045/418] fix: NTGroupRequestOperateTypes --- src/core/apis/group.ts | 4 ++-- src/core/entities/notify.ts | 9 ++++++--- src/core/services/NodeIKernelGroupService.ts | 6 +++--- src/onebot/api/quick-action.ts | 4 ++-- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index 9dbad8d9..a51b04f3 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -3,7 +3,7 @@ import { Group, GroupMember, NTGroupMemberRole, - GroupRequestOperateTypes, + NTGroupRequestOperateTypes, InstanceContext, KickMemberV2Req, MemberExtSourceType, @@ -417,7 +417,7 @@ export class NTQQGroupApi { return this.context.session.getGroupService().uploadGroupBulletinPic(GroupCode, _Pskey, imageurl); } - async handleGroupRequest(flag: string, operateType: GroupRequestOperateTypes, reason?: string) { + async handleGroupRequest(flag: string, operateType: NTGroupRequestOperateTypes, reason?: string) { const flagitem = flag.split('|'); const groupCode = flagitem[0]; const seq = flagitem[1]; diff --git a/src/core/entities/notify.ts b/src/core/entities/notify.ts index f9c7dd64..62e94ffd 100644 --- a/src/core/entities/notify.ts +++ b/src/core/entities/notify.ts @@ -107,9 +107,12 @@ export interface GroupNotify { warningTips: string; } -export enum GroupRequestOperateTypes { - approve = 1, - reject = 2 +export enum NTGroupRequestOperateTypes { + KUNSPECIFIED = 0, + KAGREE = 1, + KREFUSE = 2, + KIGNORE = 3, + KDELETE = 4 } export enum BuddyReqType { diff --git a/src/core/services/NodeIKernelGroupService.ts b/src/core/services/NodeIKernelGroupService.ts index 4c9ee0f1..9f3efc09 100644 --- a/src/core/services/NodeIKernelGroupService.ts +++ b/src/core/services/NodeIKernelGroupService.ts @@ -6,7 +6,7 @@ import { GroupMember, NTGroupMemberRole, GroupNotifyMsgType, - GroupRequestOperateTypes, + NTGroupRequestOperateTypes, KickMemberV2Req, } from '@/core/entities'; import { GeneralCallResult } from '@/core/services/common'; @@ -198,9 +198,9 @@ export interface NodeIKernelGroupService { operateSysNotify( doubt: boolean, operateMsg: { - operateType: GroupRequestOperateTypes, // 2 拒绝 + operateType: NTGroupRequestOperateTypes, targetMsg: { - seq: string, // 通知序列号 + seq: string, type: GroupNotifyMsgType, groupCode: string, postscript: string diff --git a/src/onebot/api/quick-action.ts b/src/onebot/api/quick-action.ts index 6434b26f..e661d9df 100644 --- a/src/onebot/api/quick-action.ts +++ b/src/onebot/api/quick-action.ts @@ -10,7 +10,7 @@ import { QuickActionGroupMessage, QuickActionGroupRequest, } from '@/onebot'; -import { GroupRequestOperateTypes, NapCatCore, Peer } from '@/core'; +import { NTGroupRequestOperateTypes, NapCatCore, Peer } from '@/core'; import { OB11FriendRequestEvent } from '@/onebot/event/request/OB11FriendRequest'; import { OB11GroupRequestEvent } from '@/onebot/event/request/OB11GroupRequest'; import { ContextMode, createContext, normalize } from '@/onebot/action/msg/SendMsg'; @@ -86,7 +86,7 @@ export class OneBotQuickActionApi { if (!isNull(quickAction.approve)) { this.core.apis.GroupApi.handleGroupRequest( request.flag, - quickAction.approve ? GroupRequestOperateTypes.approve : GroupRequestOperateTypes.reject, + quickAction.approve ? NTGroupRequestOperateTypes.KAGREE : NTGroupRequestOperateTypes.KREFUSE, quickAction.reason, ).catch(this.core.context.logger.logError.bind(this.core.context.logger)); } From 24bc9f35b2c134a91d479356708a36e3241ee299 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 14:28:04 +0800 Subject: [PATCH 046/418] fix: NTGroupRequestOperateTypes --- src/onebot/action/group/SetGroupAddRequest.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/onebot/action/group/SetGroupAddRequest.ts b/src/onebot/action/group/SetGroupAddRequest.ts index ce63539d..ce60d278 100644 --- a/src/onebot/action/group/SetGroupAddRequest.ts +++ b/src/onebot/action/group/SetGroupAddRequest.ts @@ -1,5 +1,5 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { GroupRequestOperateTypes } from '@/core/entities'; +import { NTGroupRequestOperateTypes } from '@/core/entities'; import { ActionName } from '@/onebot/action/router'; import { FromSchema, JSONSchema } from 'json-schema-to-ts'; @@ -23,7 +23,7 @@ export default class SetGroupAddRequest extends OneBotAction { const flag = payload.flag.toString(); const approve = payload.approve?.toString() !== 'false'; await this.core.apis.GroupApi.handleGroupRequest(flag, - approve ? GroupRequestOperateTypes.approve : GroupRequestOperateTypes.reject, + approve ? NTGroupRequestOperateTypes.KAGREE : NTGroupRequestOperateTypes.KREFUSE, payload.reason ?? ' ', ); return null; From bbb4ad7d95514e40f0f8da935f72e82bb7e1f89c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 14:30:21 +0800 Subject: [PATCH 047/418] rename: project --- src/core/adapters/NodeIDependsAdapter.ts | 2 +- src/core/apis/file.ts | 2 +- src/core/apis/friend.ts | 2 +- src/core/apis/msg.ts | 2 +- src/core/apis/user.ts | 2 +- src/core/index.ts | 4 ++-- src/core/listeners/NodeIKernelBuddyListener.ts | 2 +- src/core/listeners/NodeIKernelGroupListener.ts | 2 +- src/core/listeners/NodeIKernelMsgListener.ts | 2 +- src/core/listeners/NodeIKernelProfileListener.ts | 2 +- src/core/services/NodeIKernelBuddyService.ts | 2 +- src/core/services/NodeIKernelGroupService.ts | 2 +- src/core/services/NodeIKernelMsgService.ts | 4 ++-- src/core/services/NodeIKernelRecentContactService.ts | 4 ++-- src/core/services/NodeIKernelRichMediaService.ts | 2 +- src/core/services/NodeIKernelSearchService.ts | 2 +- src/core/services/NodeIkernelTestPerformanceService.ts | 2 +- src/core/{entities => types}/adapter.ts | 0 src/core/{entities => types}/cache.ts | 0 src/core/{entities => types}/constant.ts | 0 src/core/{entities => types}/contact.ts | 0 src/core/{entities => types}/element.ts | 0 src/core/{entities => types}/group.ts | 0 src/core/{entities => types}/index.ts | 0 src/core/{entities => types}/msg.ts | 0 src/core/{entities => types}/notify.ts | 0 src/core/{entities => types}/sign.ts | 0 src/core/{entities => types}/system.ts | 0 src/core/{entities => types}/user.ts | 0 src/core/{entities => types}/webapi.ts | 0 src/framework/napcat.ts | 2 +- src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts | 2 +- src/onebot/action/go-cqhttp/GetGroupHonorInfo.ts | 2 +- src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts | 2 +- src/onebot/action/go-cqhttp/UploadGroupFile.ts | 2 +- src/onebot/action/go-cqhttp/UploadPrivateFile.ts | 2 +- src/onebot/action/group/SetGroupAddRequest.ts | 2 +- src/onebot/action/group/SetGroupAdmin.ts | 2 +- src/onebot/action/msg/ForwardSingleMsg.ts | 2 +- src/onebot/action/msg/MarkMsgAsRead.ts | 2 +- src/shell/napcat.ts | 2 +- 41 files changed, 31 insertions(+), 31 deletions(-) rename src/core/{entities => types}/adapter.ts (100%) rename src/core/{entities => types}/cache.ts (100%) rename src/core/{entities => types}/constant.ts (100%) rename src/core/{entities => types}/contact.ts (100%) rename src/core/{entities => types}/element.ts (100%) rename src/core/{entities => types}/group.ts (100%) rename src/core/{entities => types}/index.ts (100%) rename src/core/{entities => types}/msg.ts (100%) rename src/core/{entities => types}/notify.ts (100%) rename src/core/{entities => types}/sign.ts (100%) rename src/core/{entities => types}/system.ts (100%) rename src/core/{entities => types}/user.ts (100%) rename src/core/{entities => types}/webapi.ts (100%) diff --git a/src/core/adapters/NodeIDependsAdapter.ts b/src/core/adapters/NodeIDependsAdapter.ts index 72723f56..897b31e0 100644 --- a/src/core/adapters/NodeIDependsAdapter.ts +++ b/src/core/adapters/NodeIDependsAdapter.ts @@ -1,4 +1,4 @@ -import { MsfChangeReasonType, MsfStatusType } from "../entities/adapter"; +import { MsfChangeReasonType, MsfStatusType } from "../types/adapter"; export class NodeIDependsAdapter { onMSFStatusChange(statusType: MsfStatusType, changeReasonType: MsfChangeReasonType) { diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index fbcf9d08..9f722170 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -12,7 +12,7 @@ import { SendPicElement, SendPttElement, SendVideoElement, -} from '@/core/entities'; +} from '@/core/types'; import path from 'path'; import fs from 'fs'; import fsPromises from 'fs/promises'; diff --git a/src/core/apis/friend.ts b/src/core/apis/friend.ts index c05102b5..eff2fcd1 100644 --- a/src/core/apis/friend.ts +++ b/src/core/apis/friend.ts @@ -1,4 +1,4 @@ -import { FriendV2 } from '@/core/entities'; +import { FriendV2 } from '@/core/types'; import { BuddyListReqType, InstanceContext, NapCatCore } from '@/core'; import { LimitedHashTable } from '@/common/message-unique'; diff --git a/src/core/apis/msg.ts b/src/core/apis/msg.ts index 8d575043..239ce18f 100644 --- a/src/core/apis/msg.ts +++ b/src/core/apis/msg.ts @@ -1,4 +1,4 @@ -import { ChatType, GetFileListParam, Peer, RawMessage, SendMessageElement, SendStatusType } from '@/core/entities'; +import { ChatType, GetFileListParam, Peer, RawMessage, SendMessageElement, SendStatusType } from '@/core/types'; import { GroupFileInfoUpdateItem, InstanceContext, NapCatCore } from '@/core'; import { GeneralCallResult } from '@/core/services/common'; diff --git a/src/core/apis/user.ts b/src/core/apis/user.ts index de985b3e..48ad0cfd 100644 --- a/src/core/apis/user.ts +++ b/src/core/apis/user.ts @@ -1,4 +1,4 @@ -import { ModifyProfileParams, User, UserDetailSource } from '@/core/entities'; +import { ModifyProfileParams, User, UserDetailSource } from '@/core/types'; import { RequestUtil } from '@/common/request'; import { InstanceContext, NapCatCore, ProfileBizType } from '..'; import { solveAsyncProblem } from '@/common/helper'; diff --git a/src/core/index.ts b/src/core/index.ts index 123aa9f6..7faa4027 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -24,14 +24,14 @@ import path from 'node:path'; import fs from 'node:fs'; import { hostname, systemName, systemVersion } from '@/common/system'; import { NTEventWrapper } from '@/common/event'; -import { DataSource, GroupMember, KickedOffLineInfo, SelfInfo, SelfStatusInfo } from '@/core/entities'; +import { DataSource, GroupMember, KickedOffLineInfo, SelfInfo, SelfStatusInfo } from '@/core/types'; import { NapCatConfigLoader } from '@/core/helper/config'; import os from 'node:os'; import { NodeIKernelGroupListener, NodeIKernelMsgListener, NodeIKernelProfileListener } from '@/core/listeners'; import { proxiedListenerOf } from '@/common/proxy-handler'; import { NTQQPacketApi } from './apis/packet'; export * from './wrapper'; -export * from './entities'; +export * from './types'; export * from './services'; export * from './listeners'; diff --git a/src/core/listeners/NodeIKernelBuddyListener.ts b/src/core/listeners/NodeIKernelBuddyListener.ts index 94cce080..5dcfe243 100644 --- a/src/core/listeners/NodeIKernelBuddyListener.ts +++ b/src/core/listeners/NodeIKernelBuddyListener.ts @@ -1,4 +1,4 @@ -import { BuddyCategoryType, FriendRequestNotify } from '@/core/entities'; +import { BuddyCategoryType, FriendRequestNotify } from '@/core/types'; export type OnBuddyChangeParams = BuddyCategoryType[]; diff --git a/src/core/listeners/NodeIKernelGroupListener.ts b/src/core/listeners/NodeIKernelGroupListener.ts index eada28ab..962e2410 100644 --- a/src/core/listeners/NodeIKernelGroupListener.ts +++ b/src/core/listeners/NodeIKernelGroupListener.ts @@ -1,4 +1,4 @@ -import { DataSource, Group, GroupListUpdateType, GroupMember, GroupNotify, ShutUpGroupMember } from '@/core/entities'; +import { DataSource, Group, GroupListUpdateType, GroupMember, GroupNotify, ShutUpGroupMember } from '@/core/types'; export class NodeIKernelGroupListener { onGroupListInited(listEmpty: boolean): any { } diff --git a/src/core/listeners/NodeIKernelMsgListener.ts b/src/core/listeners/NodeIKernelMsgListener.ts index f0ebdb37..bdfcd0a5 100644 --- a/src/core/listeners/NodeIKernelMsgListener.ts +++ b/src/core/listeners/NodeIKernelMsgListener.ts @@ -1,4 +1,4 @@ -import { ChatType, KickedOffLineInfo, RawMessage } from '@/core/entities'; +import { ChatType, KickedOffLineInfo, RawMessage } from '@/core/types'; import { CommonFileInfo } from '@/core'; export interface OnRichMediaDownloadCompleteParams { diff --git a/src/core/listeners/NodeIKernelProfileListener.ts b/src/core/listeners/NodeIKernelProfileListener.ts index 4b8fad1c..5ba11be0 100644 --- a/src/core/listeners/NodeIKernelProfileListener.ts +++ b/src/core/listeners/NodeIKernelProfileListener.ts @@ -1,4 +1,4 @@ -import { User, UserDetailInfoListenerArg } from '@/core/entities'; +import { User, UserDetailInfoListenerArg } from '@/core/types'; export class NodeIKernelProfileListener { onUserDetailInfoChanged(arg: UserDetailInfoListenerArg): void { diff --git a/src/core/services/NodeIKernelBuddyService.ts b/src/core/services/NodeIKernelBuddyService.ts index 0deef0d7..c4167690 100644 --- a/src/core/services/NodeIKernelBuddyService.ts +++ b/src/core/services/NodeIKernelBuddyService.ts @@ -1,6 +1,6 @@ import { GeneralCallResult } from '@/core/services/common'; import { NodeIKernelBuddyListener } from '@/core/listeners'; -import { BuddyListReqType } from '../entities/user'; +import { BuddyListReqType } from '../types/user'; export interface NodeIKernelBuddyService { getBuddyListV2(callFrom: string, reqType: BuddyListReqType): Promise Date: Thu, 21 Nov 2024 14:36:06 +0800 Subject: [PATCH 048/418] =?UTF-8?q?refactor:=20=E6=8C=81=E7=BB=AD=E9=87=8D?= =?UTF-8?q?=E6=9E=84project=E7=BB=93=E6=9E=84=E4=B8=8E=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/services/NodeIKernelRecentContactService.ts | 2 +- src/core/services/NodeIKernelRichMediaService.ts | 2 +- src/core/services/NodeIKernelSearchService.ts | 2 +- src/core/services/NodeIkernelTestPerformanceService.ts | 2 +- src/onebot/helper/data.ts | 2 +- src/onebot/network/active-http.ts | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core/services/NodeIKernelRecentContactService.ts b/src/core/services/NodeIKernelRecentContactService.ts index a3043496..1a5d672c 100644 --- a/src/core/services/NodeIKernelRecentContactService.ts +++ b/src/core/services/NodeIKernelRecentContactService.ts @@ -1,4 +1,4 @@ -import { ChatType, Peer } from '../types'; +import { ChatType, Peer } from '@/core/types'; import { NodeIKernelRecentContactListener } from '../listeners/NodeIKernelRecentContactListener'; import { GeneralCallResult } from './common'; import { FSABRecentContactParams } from '../types/contact'; diff --git a/src/core/services/NodeIKernelRichMediaService.ts b/src/core/services/NodeIKernelRichMediaService.ts index 32394c36..9bb00831 100644 --- a/src/core/services/NodeIKernelRichMediaService.ts +++ b/src/core/services/NodeIKernelRichMediaService.ts @@ -1,4 +1,4 @@ -import { GetFileListParam, MessageElement, Peer } from '../types'; +import { GetFileListParam, MessageElement, Peer } from '@/core/types'; import { GeneralCallResult } from './common'; export enum UrlFileDownloadType { diff --git a/src/core/services/NodeIKernelSearchService.ts b/src/core/services/NodeIKernelSearchService.ts index 04212323..dbdfb573 100644 --- a/src/core/services/NodeIKernelSearchService.ts +++ b/src/core/services/NodeIKernelSearchService.ts @@ -1,4 +1,4 @@ -import { ChatType } from '../types'; +import { ChatType } from '@/core/types'; import { GeneralCallResult } from './common'; export interface NodeIKernelSearchService { diff --git a/src/core/services/NodeIkernelTestPerformanceService.ts b/src/core/services/NodeIkernelTestPerformanceService.ts index ede4c1e7..4d978b26 100644 --- a/src/core/services/NodeIkernelTestPerformanceService.ts +++ b/src/core/services/NodeIkernelTestPerformanceService.ts @@ -1,4 +1,4 @@ -import { MessageElement, Peer } from '../types'; +import { MessageElement, Peer } from '@/core/types'; export interface NodeIkernelTestPerformanceService { diff --git a/src/onebot/helper/data.ts b/src/onebot/helper/data.ts index f96895f9..34a5cf45 100644 --- a/src/onebot/helper/data.ts +++ b/src/onebot/helper/data.ts @@ -8,7 +8,7 @@ import { OB11GroupMemberRole, OB11User, OB11UserSex, -} from '../types'; +} from '@/onebot/types'; export class OB11Construct { static selfInfo(selfInfo: SelfInfo): OB11User { return { diff --git a/src/onebot/network/active-http.ts b/src/onebot/network/active-http.ts index 622cba40..b4d6c5ef 100644 --- a/src/onebot/network/active-http.ts +++ b/src/onebot/network/active-http.ts @@ -1,7 +1,7 @@ import { IOB11NetworkAdapter, OB11EmitEventContent, OB11NetworkReloadType } from '@/onebot/network/index'; import { createHmac } from 'crypto'; import { LogWrapper } from '@/common/log'; -import { QuickAction, QuickActionEvent } from '../types'; +import { QuickAction, QuickActionEvent } from '@/onebot/types'; import { NapCatCore } from '@/core'; import { NapCatOneBot11Adapter } from '..'; import { RequestUtil } from '@/common/request'; From 381ee1c30e104f0a220671a0cd1893261e5c018b Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Thu, 21 Nov 2024 06:43:58 +0000 Subject: [PATCH 049/418] release: v4.1.13 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 547608eb..3aaba6a8 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.1.12", + "version": "4.1.13", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 826d4639..b8b6675d 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.1.12", + "version": "4.1.13", "scripts": { "build:framework": "npm run build:webui && vite build --mode framework || exit 1", "build:shell": "npm run build:webui && vite build --mode shell || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index 2283a05e..9de4f0fc 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.1.12'; +export const napCatVersion = '4.1.13'; From 6ca1ac21e47a1d63b22f3c3ef8439a3fdbd4ef30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 14:55:34 +0800 Subject: [PATCH 050/418] feat: support 29927 --- src/core/external/appid.json | 6 +++++- src/core/external/offset.json | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/core/external/appid.json b/src/core/external/appid.json index 59f630d7..05d12528 100644 --- a/src/core/external/appid.json +++ b/src/core/external/appid.json @@ -86,5 +86,9 @@ "6.9.59-29456": { "appid": 537249961, "qua": "V1_MAC_NQ_6.9.59_29456_GW_B" + }, + "9.9.16-29927": { + "appid": 537255812, + "qua": "V1_WIN_NQ_9.9.16_29927_GW_B" } -} +} \ No newline at end of file diff --git a/src/core/external/offset.json b/src/core/external/offset.json index 2744cf87..fe3822cb 100644 --- a/src/core/external/offset.json +++ b/src/core/external/offset.json @@ -82,5 +82,9 @@ "6.9.59-29456-arm64": { "send": "4005FE8", "recv": "4008800" + }, + "9.9.16-29927-x64": { + "send": "3869C50", + "recv": "386E084" } -} +} \ No newline at end of file From f4c08d93f4c2f556ebf524bd0415efa986e45ae6 Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Thu, 21 Nov 2024 06:58:07 +0000 Subject: [PATCH 051/418] release: v4.1.14 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 3aaba6a8..fa5d25e3 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.1.13", + "version": "4.1.14", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index b8b6675d..ca6789e5 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.1.13", + "version": "4.1.14", "scripts": { "build:framework": "npm run build:webui && vite build --mode framework || exit 1", "build:shell": "npm run build:webui && vite build --mode shell || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index 9de4f0fc..1ba33aec 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.1.13'; +export const napCatVersion = '4.1.14'; From 63254b7e55fb9c92b5809040dffcc64d1ad885ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 15:07:36 +0800 Subject: [PATCH 052/418] fix: readme thanks --- README.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 048bd9e1..df8843af 100644 --- a/README.md +++ b/README.md @@ -45,12 +45,8 @@ NapCatQQ 是现代化的基于 NTQQ 的 Bot 协议端实现 --- -## 延缓Native模块与NapCat对新版QQ适配 -为未来持续与高效的使用Native模块 模块代码转为完全非Git仓库的本地保存源码 并进行相关重构 - -同时为了保证稳定 NapCat 本体通常会在3 Week+的周期进行新版本适配 - -因此此时推荐使用release指定版本 +## 特殊感谢 +[LLOneBot](https://github.com/LLOneBot/LLOneBot) 相关的开发曾参与本项目 ## 开源附加 From 30bd372d45c170bcd2b7a2fbec2ec904d50b49bb Mon Sep 17 00:00:00 2001 From: pk5ls20 Date: Thu, 21 Nov 2024 18:10:01 +0800 Subject: [PATCH 053/418] feat: version 29927 --- src/core/external/appid.json | 10 +++++++++- src/core/external/offset.json | 18 +++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/core/external/appid.json b/src/core/external/appid.json index 05d12528..c1284c54 100644 --- a/src/core/external/appid.json +++ b/src/core/external/appid.json @@ -90,5 +90,13 @@ "9.9.16-29927": { "appid": 537255812, "qua": "V1_WIN_NQ_9.9.16_29927_GW_B" + }, + "3.2.13-29927": { + "appid": 537255847, + "qua": "V1_LNX_NQ_3.2.13_29927_GW_B" + }, + "6.9.61-29927": { + "appid": 537255836, + "qua": "V1_MAC_NQ_6.9.61_29927_GW_B" } -} \ No newline at end of file +} diff --git a/src/core/external/offset.json b/src/core/external/offset.json index fe3822cb..f6dabbb7 100644 --- a/src/core/external/offset.json +++ b/src/core/external/offset.json @@ -86,5 +86,21 @@ "9.9.16-29927-x64": { "send": "3869C50", "recv": "386E084" + }, + "3.2.13-29927-x64": { + "send": "A1913A0", + "recv": "A194CA0" + }, + "3.2.13-29927-arm64": { + "send": "6F1C7E0", + "recv": "6F20018" + }, + "6.9.61-29927-x64": { + "send": "44FCC60", + "recv": "44FF4CC" + }, + "6.9.61-29927-arm64": { + "send": "4038740", + "recv": "403AF58" } -} \ No newline at end of file +} From 6d83921e20b7cca0e149878d885e68843777d6a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 21 Nov 2024 19:37:11 +0800 Subject: [PATCH 054/418] =?UTF-8?q?style:=20enum=E6=8F=90=E9=AB=98?= =?UTF-8?q?=E5=8F=AF=E8=AF=BB=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/types/adapter.ts | 14 +++---- src/core/types/group.ts | 12 +++--- src/core/types/notify.ts | 84 +++++++++++++++++++-------------------- src/core/types/user.ts | 14 +++---- 4 files changed, 62 insertions(+), 62 deletions(-) diff --git a/src/core/types/adapter.ts b/src/core/types/adapter.ts index 3f0113ea..5013be32 100644 --- a/src/core/types/adapter.ts +++ b/src/core/types/adapter.ts @@ -1,11 +1,11 @@ export enum MsfStatusType { - KUNKNOWN, - KDISCONNECTED, - KCONNECTED + KUNKNOWN = 0, + KDISCONNECTED = 1, + KCONNECTED = 2 } export enum MsfChangeReasonType { - KUNKNOWN, - KUSERLOGININ, - KUSERLOGINOUT, - KAUTO + KUNKNOWN = 0, + KUSERLOGININ = 1, + KUSERLOGINOUT = 2, + KAUTO = 3 } \ No newline at end of file diff --git a/src/core/types/group.ts b/src/core/types/group.ts index 77c5e4a3..18a96276 100644 --- a/src/core/types/group.ts +++ b/src/core/types/group.ts @@ -63,16 +63,16 @@ export interface KickMemberV2Req { // 数据来源类型 export enum DataSource { - LOCAL, - REMOTE + LOCAL = 0, + REMOTE = 1 } // 群列表更新类型 export enum GroupListUpdateType { - REFRESHALL, - GETALL, - MODIFIED, - REMOVE + REFRESHALL = 0, + GETALL = 1, + MODIFIED = 2, + REMOVE = 3 } export interface GroupMemberCache { diff --git a/src/core/types/notify.ts b/src/core/types/notify.ts index 62e94ffd..52a1bafc 100644 --- a/src/core/types/notify.ts +++ b/src/core/types/notify.ts @@ -1,20 +1,20 @@ export enum GroupNotifyMsgType { - UN_SPECIFIED, - INVITED_BY_MEMBER, - REFUSE_INVITED, - REFUSED_BY_ADMINI_STRATOR, - AGREED_TOJOIN_DIRECT,// 有人接受了邀请入群 - INVITED_NEED_ADMINI_STRATOR_PASS, - AGREED_TO_JOIN_BY_ADMINI_STRATOR, - REQUEST_JOIN_NEED_ADMINI_STRATOR_PASS, - SET_ADMIN, - KICK_MEMBER_NOTIFY_ADMIN, - KICK_MEMBER_NOTIFY_KICKED, - MEMBER_LEAVE_NOTIFY_ADMIN,// 主动退出 - CANCEL_ADMIN_NOTIFY_CANCELED, - CANCEL_ADMIN_NOTIFY_ADMIN,// 其他人取消管理员 - TRANSFER_GROUP_NOTIFY_OLDOWNER, - TRANSFER_GROUP_NOTIFY_ADMIN + UN_SPECIFIED = 0, + INVITED_BY_MEMBER = 1, + REFUSE_INVITED = 2, + REFUSED_BY_ADMINI_STRATOR = 3, + AGREED_TOJOIN_DIRECT = 4,// 有人接受了邀请入群 + INVITED_NEED_ADMINI_STRATOR_PASS = 5, + AGREED_TO_JOIN_BY_ADMINI_STRATOR = 6, + REQUEST_JOIN_NEED_ADMINI_STRATOR_PASS = 7, + SET_ADMIN = 8, + KICK_MEMBER_NOTIFY_ADMIN = 9, + KICK_MEMBER_NOTIFY_KICKED = 10, + MEMBER_LEAVE_NOTIFY_ADMIN = 11,// 主动退出 + CANCEL_ADMIN_NOTIFY_CANCELED = 12, + CANCEL_ADMIN_NOTIFY_ADMIN = 13,// 其他人取消管理员 + TRANSFER_GROUP_NOTIFY_OLDOWNER = 14, + TRANSFER_GROUP_NOTIFY_ADMIN = 15 } export interface GroupNotifies { @@ -24,24 +24,24 @@ export interface GroupNotifies { } export enum GroupNotifyMsgStatus { - KINIT,//初始化 - KUNHANDLE,//未处理 - KAGREED,//同意 - KREFUSED,//拒绝 - KIGNORED//忽略 + KINIT = 0,//初始化 + KUNHANDLE = 1,//未处理 + KAGREED = 2,//同意 + KREFUSED = 3,//拒绝 + KIGNORED = 4//忽略 } export enum GroupInviteStatus { - INIT, - WAIT_TO_APPROVE, - JOINED, - REFUSED_BY_ADMINI_STRATOR + INIT = 0, + WAIT_TO_APPROVE = 1, + JOINED = 2, + REFUSED_BY_ADMINI_STRATOR = 3 } export enum GroupInviteType { - BYBUDDY, - BYGROUPMEMBER, - BYDISCUSSMEMBER + BYBUDDY = 0, + BYGROUPMEMBER = 1, + BYDISCUSSMEMBER = 2 } export interface ShutUpGroupHonor { [key: string]: number; @@ -116,20 +116,20 @@ export enum NTGroupRequestOperateTypes { } export enum BuddyReqType { - KMEINITIATOR, - KPEERINITIATOR, - KMEAGREED, - KMEAGREEDANDADDED, - KPEERAGREED, - KPEERAGREEDANDADDED, - KPEERREFUSED, - KMEREFUSED, - KMEIGNORED, - KMEAGREEANYONE, - KMESETQUESTION, - KMEAGREEANDADDFAILED, - KMSGINFO, - KMEINITIATORWAITPEERCONFIRM + KMEINITIATOR = 0, + KPEERINITIATOR = 1, + KMEAGREED = 2, + KMEAGREEDANDADDED = 3, + KPEERAGREED = 4, + KPEERAGREEDANDADDED = 5, + KPEERREFUSED = 6, + KMEREFUSED = 7, + KMEIGNORED = 8, + KMEAGREEANYONE = 9, + KMESETQUESTION = 10, + KMEAGREEANDADDFAILED = 11, + KMSGINFO = 12, + KMEINITIATORWAITPEERCONFIRM = 13 } export interface FriendRequest { diff --git a/src/core/types/user.ts b/src/core/types/user.ts index 69c93fa9..67d015e6 100644 --- a/src/core/types/user.ts +++ b/src/core/types/user.ts @@ -322,8 +322,8 @@ export type Friend = User; // 业务键枚举 export enum BizKey { - KPRIVILEGEICON, - KPHOTOWALL + KPRIVILEGEICON = 0, + KPHOTOWALL = 1 } // 根据UIN获取用户详细信息 @@ -347,9 +347,9 @@ export enum UserDetailSource { // 个人资料业务类型枚举 export enum ProfileBizType { - KALL, - KBASEEXTEND, - KVAS, - KQZONE, - KOTHER + KALL = 0, + KBASEEXTEND = 1, + KVAS = 2, + KQZONE = 3, + KOTHER = 4 } \ No newline at end of file From b3b02e781a03dc64d4c05539f389348c5a8f6797 Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Thu, 21 Nov 2024 14:52:41 +0000 Subject: [PATCH 055/418] release: v4.1.15 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index fa5d25e3..4ed3c177 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.1.14", + "version": "4.1.15", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index ca6789e5..95c733b9 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.1.14", + "version": "4.1.15", "scripts": { "build:framework": "npm run build:webui && vite build --mode framework || exit 1", "build:shell": "npm run build:webui && vite build --mode shell || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index 1ba33aec..77007054 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.1.14'; +export const napCatVersion = '4.1.15'; From 3e63f509bc7c751fc65a5e3a860c448037e079b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Fri, 22 Nov 2024 14:45:14 +0800 Subject: [PATCH 056/418] =?UTF-8?q?fix:=20=E8=BF=9B=E4=B8=80=E6=AD=A5?= =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=96=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/types/graytip.ts | 74 +++++++++++++++++++++++++++++++++++++++ src/core/types/index.ts | 3 +- src/onebot/api/group.ts | 5 +-- 3 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 src/core/types/graytip.ts diff --git a/src/core/types/graytip.ts b/src/core/types/graytip.ts new file mode 100644 index 00000000..4814919f --- /dev/null +++ b/src/core/types/graytip.ts @@ -0,0 +1,74 @@ +export enum JsonGrayBusiId { + AIO_AV_C2C_NOTICE = 2021, + AIO_AV_GROUP_NOTICE = 2022, + AIO_C2C_DONT_DISTURB = 2100, + AIO_CRM_FLAGS_TIPS = 2050, + AIO_GROUP_ESSENCE_MSG_TIP = 2401, + AIO_NUDGE_CUSTOM_GUIDE = 2041, + AIO_PUSH_GUIDE_GRAY_TIPS = 2701, + AIO_RECALL_MSGCUSTOM_WORDINGGUIDE = 2000, + AIO_ROBOT_SAFETY_TIP = 2201, + AIO_ZPLAN_EMOTICON_GUIDE = 2301, + AIO_ZPLAN_SCENE_LINKAGE = 2302, + AIO_ZPLAN_SEND_MEME = 2300, + DISBAND_DISCUSSION_GRAY_TIP_ID = 2603, + FILE_SENDING_SIZE_4GB_LIMIT = 3003, + GROUP_AIO_CONFIGURABLE_GRAY_TIPS = 2407, + GROUP_AIO_HOME_SCHOOL_WELCOME_GRAY_TIP_ID = 2404, + GROUP_AIO_MSG_FREQUENCY_GRAY_TIP_ID = 2406, + GROUP_AIO_SHUTUP_GRAY_TIP_ID = 2402, + GROUP_AIO_TEMPORARY_GRAY_TIP_ID = 2405, + GROUP_AIO_UNREAD_MSG_AI_SUMMARY = 2408, + GROUP_AIO_UPLOAD_PERMISSIONS_GRAY_TIP_ID = 2403, + LITE_ACTION = 86, + ONLINE_FILE_CANCEL_RECV_ON_RECVING = 4, + ONLINE_FILE_GO_OFFLINE = 11, + ONLINE_FILE_GO_OFFLINE_ALL = 12, + ONLINE_FILE_RECV_BY_MOBILE = 13, + ONLINE_FILE_RECV_ERROR = 10, + ONLINE_FILE_REFUSE_ALL_RECV = 7, + ONLINE_FILE_REFUSE_ALL_RECV_ON_RECVING = 8, + ONLINE_FILE_REFUSE_RECV = 3, + ONLINE_FILE_SEND_ERROR = 9, + ONLINE_FILE_STOP_ALL_SEND = 5, + ONLINE_FILE_STOP_ALL_SEND_ON_SENDING = 6, + ONLINE_FILE_STOP_SEND = 1, + ONLINE_FILE_STOP_SEND_ON_SENDING = 2, + ONLINE_GROUP_HOME_WORK = 51, + PTT_AUTO_CHANGE_GUIDE = 2060, + QCIRCLE_SHOW_FULE_TIPS = 2601, + QWALLET_GRAY_TIP_ID = 2602, + RED_BAG = 81, + RELATION_C2C_GROUP_AIO_SETUP_GROUP_AND_REMARK = 1005, + RELATION_C2C_LOVER_BONUS = 1003, + RELATION_C2C_MEMBER_ADD = 1017, + RELATION_C2C_REACTIVE_DEGRADE_MSG = 1019, + RELATION_C2C_REACTIVE_UPGRADE_MSG = 1018, + RELATION_C2C_SAY_HELLO = 1004, + RELATION_CHAIN_BLACKED = 1000, + RELATION_CHAIN_MATCH_FRIEND = 1007, + RELATION_CREATE_GROUP_GRAY_TIP_ID = 1009, + RELATION_EMOJIEGG_SHOW = 1001, + RELATION_EMOJIEGG_WILL_DEGRADE = 1002, + RELATION_FRIEND_CLONE_INFO = 1006, + RELATION_GROUP_BATCH_ADD_FRIEND = 1020, + RELATION_GROUP_MEMBER_ADD = 1022, + RELATION_GROUP_MEMBER_ADD_WITH_MODIFY_NAME = 1015, + RELATION_GROUP_MEMBER_ADD_WITH_WELCOME = 1016, + RELATION_GROUP_MEMBER_RECOMMEND = 1021, + RELATION_GROUP_SHUT_UP = 1014, + RELATION_LIMIT_TMP_CONVERSATION_SET = 1011, + RELATION_NEARBY_GOTO_VERIFY = 1008, + RELATION_ONEWAY_FRIEND_GRAY_TIP_ID = 1012, + RELATION_ONEWAY_FRIEND_NEW_GRAY_TIP_ID = 1013, + RELATION_YQT = 1010, + TROOP_ADD_FRIEND_ACTIVE = 19264, + TROOP_ADD_FRIEND_HOT_CHAT = 19265, + TROOP_ADD_FRIEND_NEW_MEMBER = 19267, + TROOP_ADD_FRIEND_REPLY_OR_AT = 19266, + TROOP_BREAK_ICE = 10405, + TROOP_FLAME_IGNITED = 19273, + UI_RESERVE_100000_110000 = 100000, + VAS_FILE_UPLOAD_OVER_1G = 3002, + VAS_FILE_UPLOAD_OVER_LIMIT = 3001, +} diff --git a/src/core/types/index.ts b/src/core/types/index.ts index d6a32581..dffa91b9 100644 --- a/src/core/types/index.ts +++ b/src/core/types/index.ts @@ -7,4 +7,5 @@ export * from './system'; export * from './webapi'; export * from './sign'; export * from './element'; -export * from './constant'; \ No newline at end of file +export * from './constant'; +export * from './graytip'; \ No newline at end of file diff --git a/src/onebot/api/group.ts b/src/onebot/api/group.ts index 1fcccd79..351f3c57 100644 --- a/src/onebot/api/group.ts +++ b/src/onebot/api/group.ts @@ -1,6 +1,7 @@ import { ChatType, GrayTipElement, + JsonGrayBusiId, NapCatCore, NTGrayTipElementSubTypeV2, RawMessage, @@ -115,7 +116,7 @@ export class OneBotGroupApi { ); } } - if (element.grayTipElement.jsonGrayTipElement.busiId == 2401) { + if (element.grayTipElement.jsonGrayTipElement.busiId == JsonGrayBusiId.AIO_GROUP_ESSENCE_MSG_TIP) { const searchParams = new URL(json.items[0].jp).searchParams; const msgSeq = searchParams.get('msgSeq')!; const Group = searchParams.get('groupCode'); @@ -138,7 +139,7 @@ export class OneBotGroupApi { ); // 获取MsgSeq+Peer可获取具体消息 } - if (element.grayTipElement.jsonGrayTipElement.busiId == 2407) { + if (element.grayTipElement.jsonGrayTipElement.busiId == JsonGrayBusiId.GROUP_AIO_CONFIGURABLE_GRAY_TIPS) { const type = json.items[json.items.length - 1]?.txt; if (type === "头衔") { const memberUin = json.items[1].param[0]; From 6fa7a973ba2da91a5f637704600d49bb32f77bbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Fri, 22 Nov 2024 15:08:26 +0800 Subject: [PATCH 057/418] =?UTF-8?q?style:=20@=E6=90=9C=E5=AF=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/adapters/NodeIDependsAdapter.ts | 2 +- src/core/apis/file.ts | 2 +- src/core/services/NodeIKernelBuddyService.ts | 2 +- src/core/services/NodeIKernelMsgService.ts | 2 +- src/core/services/NodeIKernelRecentContactService.ts | 6 +++--- src/core/services/NodeIO3MiscService.ts | 2 +- src/onebot/action/extends/SetGroupSign.ts | 2 +- src/onebot/action/go-cqhttp/SendForwardMsg.ts | 4 ++-- src/onebot/action/go-cqhttp/UploadPrivateFile.ts | 2 +- src/onebot/action/group/SendGroupMsg.ts | 6 +++--- src/onebot/action/msg/SendPrivateMsg.ts | 4 ++-- src/onebot/action/packet/GetPacketStatus.ts | 2 +- src/onebot/api/friend.ts | 3 +-- src/onebot/api/group.ts | 8 ++++---- src/onebot/api/user.ts | 2 +- src/onebot/event/message/OB11BaseMessageEvent.ts | 2 +- src/onebot/event/request/OB11FriendRequest.ts | 4 ++-- src/onebot/event/request/OB11GroupRequest.ts | 4 ++-- src/onebot/network/active-http.ts | 4 ++-- src/onebot/network/active-websocket.ts | 6 +++--- src/onebot/network/index.ts | 2 +- src/onebot/network/passive-http.ts | 2 +- src/onebot/network/passive-websocket.ts | 8 ++++---- src/onebot/types/quick.ts | 6 +++--- src/webui/src/api/BaseInfo.ts | 1 - 25 files changed, 43 insertions(+), 45 deletions(-) diff --git a/src/core/adapters/NodeIDependsAdapter.ts b/src/core/adapters/NodeIDependsAdapter.ts index 897b31e0..8af142c5 100644 --- a/src/core/adapters/NodeIDependsAdapter.ts +++ b/src/core/adapters/NodeIDependsAdapter.ts @@ -1,4 +1,4 @@ -import { MsfChangeReasonType, MsfStatusType } from "../types/adapter"; +import { MsfChangeReasonType, MsfStatusType } from "@/core/types/adapter"; export class NodeIDependsAdapter { onMSFStatusChange(statusType: MsfStatusType, changeReasonType: MsfChangeReasonType) { diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index 9f722170..5040ebc7 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -20,7 +20,7 @@ import { InstanceContext, NapCatCore, SearchResultItem } from '@/core'; import * as fileType from 'file-type'; import imageSize from 'image-size'; import { ISizeCalculationResult } from 'image-size/dist/types/interface'; -import { RkeyManager } from '../helper/rkey'; +import { RkeyManager } from '@/core/helper/rkey'; import { calculateFileMD5, isGIF } from '@/common/file'; import pathLib from 'node:path'; import { defaultVideoThumbB64, getVideoInfo } from '@/common/video'; diff --git a/src/core/services/NodeIKernelBuddyService.ts b/src/core/services/NodeIKernelBuddyService.ts index c4167690..69dcfb05 100644 --- a/src/core/services/NodeIKernelBuddyService.ts +++ b/src/core/services/NodeIKernelBuddyService.ts @@ -1,6 +1,6 @@ import { GeneralCallResult } from '@/core/services/common'; import { NodeIKernelBuddyListener } from '@/core/listeners'; -import { BuddyListReqType } from '../types/user'; +import { BuddyListReqType } from '@/core/types/user'; export interface NodeIKernelBuddyService { getBuddyListV2(callFrom: string, reqType: BuddyListReqType): Promise extends OneBotAction { diff --git a/src/onebot/api/friend.ts b/src/onebot/api/friend.ts index 329e59b1..a8db7682 100644 --- a/src/onebot/api/friend.ts +++ b/src/onebot/api/friend.ts @@ -1,7 +1,6 @@ import { GrayTipElement, NapCatCore } from '@/core'; - import { NapCatOneBot11Adapter } from '@/onebot'; -import { OB11FriendPokeEvent } from '../event/notice/OB11PokeEvent'; +import { OB11FriendPokeEvent } from '@/onebot/event/notice/OB11PokeEvent'; export class OneBotFriendApi { obContext: NapCatOneBot11Adapter; diff --git a/src/onebot/api/group.ts b/src/onebot/api/group.ts index 351f3c57..bd3300d4 100644 --- a/src/onebot/api/group.ts +++ b/src/onebot/api/group.ts @@ -8,11 +8,11 @@ import { TipGroupElementType, } from '@/core'; import { NapCatOneBot11Adapter } from '@/onebot'; -import { OB11GroupBanEvent } from '../event/notice/OB11GroupBanEvent'; -import { OB11GroupIncreaseEvent } from '../event/notice/OB11GroupIncreaseEvent'; -import { OB11GroupDecreaseEvent } from '../event/notice/OB11GroupDecreaseEvent'; +import { OB11GroupBanEvent } from '@/onebot/event/notice/OB11GroupBanEvent'; +import { OB11GroupIncreaseEvent } from '@/onebot/event/notice/OB11GroupIncreaseEvent'; +import { OB11GroupDecreaseEvent } from '@/onebot/event/notice/OB11GroupDecreaseEvent'; import fastXmlParser from 'fast-xml-parser'; -import { OB11GroupMsgEmojiLikeEvent } from '../event/notice/OB11MsgEmojiLikeEvent'; +import { OB11GroupMsgEmojiLikeEvent } from '@/onebot/event/notice/OB11MsgEmojiLikeEvent'; import { MessageUnique } from '@/common/message-unique'; import { OB11GroupCardEvent } from '@/onebot/event/notice/OB11GroupCardEvent'; import { OB11GroupUploadNoticeEvent } from '@/onebot/event/notice/OB11GroupUploadNoticeEvent'; diff --git a/src/onebot/api/user.ts b/src/onebot/api/user.ts index d22add6a..eeb1fcc2 100644 --- a/src/onebot/api/user.ts +++ b/src/onebot/api/user.ts @@ -1,6 +1,6 @@ import { NapCatCore } from '@/core'; import { NapCatOneBot11Adapter } from '@/onebot'; -import { OB11ProfileLikeEvent } from '../event/notice/OB11ProfileLikeEvent'; +import { OB11ProfileLikeEvent } from '@/onebot/event/notice/OB11ProfileLikeEvent'; import { decodeProfileLikeTip } from "@/core/helper/adaptDecoder"; export class OneBotUserApi { diff --git a/src/onebot/event/message/OB11BaseMessageEvent.ts b/src/onebot/event/message/OB11BaseMessageEvent.ts index 89bfed05..f2f1d139 100644 --- a/src/onebot/event/message/OB11BaseMessageEvent.ts +++ b/src/onebot/event/message/OB11BaseMessageEvent.ts @@ -1,4 +1,4 @@ -import { EventType, OneBotEvent } from '../OneBotEvent'; +import { EventType, OneBotEvent } from '@/onebot/event/OneBotEvent'; export abstract class OB11BaseMessageEvent extends OneBotEvent { post_type = EventType.MESSAGE; diff --git a/src/onebot/event/request/OB11FriendRequest.ts b/src/onebot/event/request/OB11FriendRequest.ts index 41f3505a..660d2b1a 100644 --- a/src/onebot/event/request/OB11FriendRequest.ts +++ b/src/onebot/event/request/OB11FriendRequest.ts @@ -1,5 +1,5 @@ -import { OB11BaseNoticeEvent } from '../notice/OB11BaseNoticeEvent'; -import { EventType } from '../OneBotEvent'; +import { OB11BaseNoticeEvent } from '@/onebot/event/notice/OB11BaseNoticeEvent'; +import { EventType } from '@/onebot/event/OneBotEvent'; import { NapCatCore } from '@/core'; export class OB11FriendRequestEvent extends OB11BaseNoticeEvent { diff --git a/src/onebot/event/request/OB11GroupRequest.ts b/src/onebot/event/request/OB11GroupRequest.ts index 1576be0e..de1ca026 100644 --- a/src/onebot/event/request/OB11GroupRequest.ts +++ b/src/onebot/event/request/OB11GroupRequest.ts @@ -1,5 +1,5 @@ -import { OB11GroupNoticeEvent } from '../notice/OB11GroupNoticeEvent'; -import { EventType } from '../OneBotEvent'; +import { OB11GroupNoticeEvent } from '@/onebot/event/notice/OB11GroupNoticeEvent'; +import { EventType } from '@/onebot/event/OneBotEvent'; import { NapCatCore } from '@/core'; export class OB11GroupRequestEvent extends OB11GroupNoticeEvent { diff --git a/src/onebot/network/active-http.ts b/src/onebot/network/active-http.ts index b4d6c5ef..2b4d549d 100644 --- a/src/onebot/network/active-http.ts +++ b/src/onebot/network/active-http.ts @@ -5,8 +5,8 @@ import { QuickAction, QuickActionEvent } from '@/onebot/types'; import { NapCatCore } from '@/core'; import { NapCatOneBot11Adapter } from '..'; import { RequestUtil } from '@/common/request'; -import { HttpClientConfig } from '../config/config'; -import { ActionMap } from '../action'; +import { HttpClientConfig } from '@/onebot/config/config'; +import { ActionMap } from '@/onebot/action'; export class OB11ActiveHttpAdapter implements IOB11NetworkAdapter { logger: LogWrapper; diff --git a/src/onebot/network/active-websocket.ts b/src/onebot/network/active-websocket.ts index c8c9435e..d41bd7f7 100644 --- a/src/onebot/network/active-websocket.ts +++ b/src/onebot/network/active-websocket.ts @@ -1,13 +1,13 @@ import { IOB11NetworkAdapter, OB11EmitEventContent, OB11NetworkReloadType } from '@/onebot/network/index'; import { WebSocket } from 'ws'; -import { OB11HeartbeatEvent } from '../event/meta/OB11HeartbeatEvent'; +import { OB11HeartbeatEvent } from '@/onebot/event/meta/OB11HeartbeatEvent'; import { NapCatCore } from '@/core'; import { ActionName } from '@/onebot/action/router'; import { OB11Response } from '@/onebot/action/OneBotAction'; import { LogWrapper } from '@/common/log'; import { ActionMap } from '@/onebot/action'; -import { LifeCycleSubType, OB11LifeCycleEvent } from '../event/meta/OB11LifeCycleEvent'; -import { WebsocketClientConfig } from '../config/config'; +import { LifeCycleSubType, OB11LifeCycleEvent } from '@/onebot/event/meta/OB11LifeCycleEvent'; +import { WebsocketClientConfig } from '@/onebot/config/config'; export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { isEnable: boolean = false; diff --git a/src/onebot/network/index.ts b/src/onebot/network/index.ts index be019fd7..d7f46c59 100644 --- a/src/onebot/network/index.ts +++ b/src/onebot/network/index.ts @@ -1,7 +1,7 @@ import { OneBotEvent } from '@/onebot/event/OneBotEvent'; import { OB11Message } from '@/onebot'; import { ActionMap } from '@/onebot/action'; -import { NetworkConfigAdapter } from '../config/config'; +import { NetworkConfigAdapter } from '@/onebot/config/config'; export type OB11EmitEventContent = OneBotEvent | OB11Message; export enum OB11NetworkReloadType { diff --git a/src/onebot/network/passive-http.ts b/src/onebot/network/passive-http.ts index 464312c1..80d862bd 100644 --- a/src/onebot/network/passive-http.ts +++ b/src/onebot/network/passive-http.ts @@ -5,7 +5,7 @@ import { NapCatCore } from '@/core'; import { OB11Response } from '@/onebot/action/OneBotAction'; import { ActionMap } from '@/onebot/action'; import cors from 'cors'; -import { HttpServerConfig } from '../config/config'; +import { HttpServerConfig } from '@/onebot/config/config'; export class OB11PassiveHttpAdapter implements IOB11NetworkAdapter { private app: Express | undefined; diff --git a/src/onebot/network/passive-websocket.ts b/src/onebot/network/passive-websocket.ts index 1459f04a..cb7d89fe 100644 --- a/src/onebot/network/passive-websocket.ts +++ b/src/onebot/network/passive-websocket.ts @@ -3,14 +3,14 @@ import urlParse from 'url'; import { WebSocket, WebSocketServer } from 'ws'; import { Mutex } from 'async-mutex'; import { OB11Response } from '@/onebot/action/OneBotAction'; -import { ActionName } from '../action/router'; +import { ActionName } from '@/onebot/action/router'; import { NapCatCore } from '@/core'; import { LogWrapper } from '@/common/log'; -import { OB11HeartbeatEvent } from '../event/meta/OB11HeartbeatEvent'; +import { OB11HeartbeatEvent } from '@/onebot/event/meta/OB11HeartbeatEvent'; import { IncomingMessage } from 'http'; import { ActionMap } from '@/onebot/action'; -import { LifeCycleSubType, OB11LifeCycleEvent } from '../event/meta/OB11LifeCycleEvent'; -import { WebsocketServerConfig } from '../config/config'; +import { LifeCycleSubType, OB11LifeCycleEvent } from '@/onebot/event/meta/OB11LifeCycleEvent'; +import { WebsocketServerConfig } from '@/onebot/config/config'; export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { wsServer: WebSocketServer; diff --git a/src/onebot/types/quick.ts b/src/onebot/types/quick.ts index b0fcd1ca..7c0f9dd0 100644 --- a/src/onebot/types/quick.ts +++ b/src/onebot/types/quick.ts @@ -1,6 +1,6 @@ -import { OB11BaseMetaEvent } from '../event/meta/OB11BaseMetaEvent'; -import { OB11BaseNoticeEvent } from '../event/notice/OB11BaseNoticeEvent'; -import { OB11Message } from './message'; +import { OB11BaseMetaEvent } from '@/onebot/event/meta/OB11BaseMetaEvent'; +import { OB11BaseNoticeEvent } from '@/onebot/event/notice/OB11BaseNoticeEvent'; +import { OB11Message } from '@/onebot/types/message'; export type QuickActionEvent = OB11Message | OB11BaseMetaEvent | OB11BaseNoticeEvent; export type PostEventType = OB11Message | OB11BaseMetaEvent | OB11BaseNoticeEvent; diff --git a/src/webui/src/api/BaseInfo.ts b/src/webui/src/api/BaseInfo.ts index d7e9a825..53ea87a0 100644 --- a/src/webui/src/api/BaseInfo.ts +++ b/src/webui/src/api/BaseInfo.ts @@ -1,5 +1,4 @@ import { RequestHandler } from 'express'; -import { WebUiDataRuntime } from '../helper/Data'; export const LogFileListHandler: RequestHandler = async (req, res) => { res.send({ From 515c1af676451c4ad6babadbcb7a05b5804ce591 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Fri, 22 Nov 2024 15:33:52 +0800 Subject: [PATCH 058/418] =?UTF-8?q?refactor:=20filetype=20=E8=AF=86?= =?UTF-8?q?=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/file.ts | 8 -------- src/core/apis/file.ts | 5 +++-- src/core/helper/msg.ts | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 10 deletions(-) create mode 100644 src/core/helper/msg.ts diff --git a/src/common/file.ts b/src/common/file.ts index 3166aa64..5fa19f05 100644 --- a/src/common/file.ts +++ b/src/common/file.ts @@ -19,14 +19,6 @@ type Uri2LocalRes = { path: string } -export function isGIF(path: string) { - const buffer = Buffer.alloc(4); - const fd = fs.openSync(path, 'r'); - fs.readSync(fd, buffer, 0, 4, 0); - fs.closeSync(fd); - return buffer.toString() === 'GIF8'; -} - // 定义一个异步函数来检查文件是否存在 export function checkFileExist(path: string, timeout: number = 3000): Promise { return new Promise((resolve, reject) => { diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index 5040ebc7..4b54f8e5 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -21,12 +21,13 @@ import * as fileType from 'file-type'; import imageSize from 'image-size'; import { ISizeCalculationResult } from 'image-size/dist/types/interface'; import { RkeyManager } from '@/core/helper/rkey'; -import { calculateFileMD5, isGIF } from '@/common/file'; +import { calculateFileMD5 } from '@/common/file'; import pathLib from 'node:path'; import { defaultVideoThumbB64, getVideoInfo } from '@/common/video'; import ffmpeg from 'fluent-ffmpeg'; import { encodeSilk } from '@/common/audio'; import { MessageContext } from '@/onebot/api'; +import { getFileTypeForSendType } from '../helper/msg'; export class NTQQFileApi { context: InstanceContext; @@ -130,7 +131,7 @@ export class NTQQFileApi { fileName: fileName, sourcePath: path, original: true, - picType: isGIF(picPath) ? PicType.NEWPIC_GIF : PicType.NEWPIC_JPEG, + picType: await getFileTypeForSendType(picPath), picSubType: subType, fileUuid: '', fileSubId: '', diff --git a/src/core/helper/msg.ts b/src/core/helper/msg.ts new file mode 100644 index 00000000..dd910bef --- /dev/null +++ b/src/core/helper/msg.ts @@ -0,0 +1,14 @@ +import * as fileType from 'file-type'; +import { PicType } from '../types'; +export async function getFileTypeForSendType(picPath: string): Promise { + const fileTypeResult = (await fileType.fileTypeFromFile(picPath))?.ext ?? 'jpg'; + const picTypeMap: { [key: string]: PicType } = { + 'webp': PicType.NEWPIC_WEBP, + 'gif': PicType.NEWPIC_GIF, + 'png': PicType.NEWPIC_APNG, + 'jpg': PicType.NEWPIC_JPEG, + 'jpeg': PicType.NEWPIC_JPEG, + 'bmp': PicType.NEWPIC_BMP, + }; + return picTypeMap[fileTypeResult] ?? PicType.NEWPIC_JPEG; +} \ No newline at end of file From e7e8763f1c6e9e27829cfa947100cdb8ed553085 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Fri, 22 Nov 2024 15:58:40 +0800 Subject: [PATCH 059/418] fix: GetProfileLike --- src/core/apis/user.ts | 17 +++----------- src/onebot/action/extends/GetProfileLike.ts | 25 ++++++++++++++++----- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/src/core/apis/user.ts b/src/core/apis/user.ts index 48ad0cfd..2e4a96cd 100644 --- a/src/core/apis/user.ts +++ b/src/core/apis/user.ts @@ -18,30 +18,19 @@ export class NTQQUserApi { async getStatusByUid(uid: string) { return this.context.session.getProfileService().getStatus(uid); } - async getProfileLike(uid: string, start: number, count: number) { + // 默认获取自己的 type = 2 获取别人 type = 1 + async getProfileLike(uid: string, start: number, count: number, type: number = 2) { return this.context.session.getProfileLikeService().getBuddyProfileLike({ friendUids: [uid], basic: 1, vote: 1, favorite: 0, userProfile: 1, - type: 2, + type: type, start: start, limit: count, }); } - async fetchOtherProfileLike(uid: string) { - return this.context.session.getProfileLikeService().getBuddyProfileLike({ - friendUids: [uid], - basic: 1, - vote: 1, - favorite: 0, - userProfile: 0, - type: 1, - start: 0, - limit: 20, - }); - } async setLongNick(longNick: string) { return this.context.session.getProfileService().setLongNick(longNick); } diff --git a/src/onebot/action/extends/GetProfileLike.ts b/src/onebot/action/extends/GetProfileLike.ts index 78112a9a..f77a4060 100644 --- a/src/onebot/action/extends/GetProfileLike.ts +++ b/src/onebot/action/extends/GetProfileLike.ts @@ -1,18 +1,31 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; +import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -interface Payload { - start: number, - count: number -} +const SchemaData = { + type: 'object', + properties: { + user_id: { type: ['number', 'string'] }, + start: { type: ['number', 'string'] }, + count: { type: ['number', 'string'] }, + type: { type: ['number', 'string'] }, + }, +} as const satisfies JSONSchema; + +type Payload = FromSchema; export class GetProfileLike extends OneBotAction { actionName = ActionName.GetProfileLike; - + payloadSchema = SchemaData; async _handle(payload: Payload) { const start = payload.start ? Number(payload.start) : 0; const count = payload.count ? Number(payload.count) : 10; - const ret = await this.core.apis.UserApi.getProfileLike(this.core.selfInfo.uid, start, count); + const type = payload.count ? Number(payload.count) : 2; + const user_uid = + this.core.selfInfo.uin === payload.user_id || !payload.user_id ? + this.core.selfInfo.uid : + await this.core.apis.UserApi.getUidByUinV2(payload.user_id.toString()); + const ret = await this.core.apis.UserApi.getProfileLike(user_uid ?? this.core.selfInfo.uid, start, count, type); const listdata = ret.info.userLikeInfos[0].voteInfo.userInfos; for (const item of listdata) { item.uin = parseInt((await this.core.apis.UserApi.getUinByUidV2(item.uid)) || ''); From b6ec1aaa9bed4199f252a81c46ec7062a6790838 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Fri, 22 Nov 2024 20:15:55 +0800 Subject: [PATCH 060/418] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=E5=AE=9A?= =?UTF-8?q?=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/types/msg.ts | 10 ++++++---- src/onebot/api/msg.ts | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/core/types/msg.ts b/src/core/types/msg.ts index a7f37af3..3e064069 100644 --- a/src/core/types/msg.ts +++ b/src/core/types/msg.ts @@ -264,10 +264,12 @@ export enum NTGrayTipElementSubTypeV2 { * 表情类型枚举 */ export enum FaceType { - normal = 1, // 小黄脸 - normal2 = 2, // 新小黄脸 - dice = 3, // 骰子 - poke = 5 // 拍一拍 + Unknown = 0, + OldFace = 1, // 老表情 + Normal = 2, // 常规表情 + AniSticke = 3, // 动画贴纸 + Lottie = 4,// 新格式表情 + Poke = 5 // 可变Poke } /** diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index f5bf48e5..fdf04c2f 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -547,7 +547,7 @@ export class OneBotMsgApi { elementId: '', faceElement: { faceIndex: FaceIndex.dice, - faceType: FaceType.dice, + faceType: FaceType.AniSticke, faceText: '[骰子]', packId: '1', stickerId: '33', From 9e94d98cfb501dfcde76bea584bbdc3ca3327873 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Fri, 22 Nov 2024 20:24:45 +0800 Subject: [PATCH 061/418] rename&docs: face --- src/core/types/msg.ts | 10 +++++++--- src/onebot/api/msg.ts | 8 ++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/core/types/msg.ts b/src/core/types/msg.ts index 3e064069..4021da58 100644 --- a/src/core/types/msg.ts +++ b/src/core/types/msg.ts @@ -1,6 +1,10 @@ import { NTGroupMemberRole } from '@/core'; import { ActionBarElement, ArkElement, AvRecordElement, CalendarElement, FaceBubbleElement, FaceElement, FileElement, GiphyElement, GrayTipElement, MarketFaceElement, PicElement, PttElement, RecommendedMsgElement, ReplyElement, ShareLocationElement, StructLongMsgElement, TaskTopMsgElement, TextElement, TofuRecordElement, VideoElement, YoloGameResultElement } from './element'; +/* + * 2024/11/22 Refactor Mlikiowa + */ + /** * 表示对等方的信息 */ @@ -127,7 +131,7 @@ export enum PicSubType { KRELATED = 7 } /** - * 消息@类型枚举 + * 消息AT类型枚举 */ export enum NTMsgAtType { ATTYPEALL = 1, @@ -290,8 +294,8 @@ export enum PokeType { * 表情索引枚举 */ export enum FaceIndex { - dice = 358, - rps = 359 + DICE = 358, + RPS = 359 } /** diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index fdf04c2f..4894e13a 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -144,14 +144,14 @@ export class OneBotMsgApi { faceElement: async element => { const faceIndex = element.faceIndex; - if (faceIndex === FaceIndex.dice) { + if (faceIndex === FaceIndex.DICE) { return { type: OB11MessageDataType.dice, data: { result: element.resultId!, }, }; - } else if (faceIndex === FaceIndex.rps) { + } else if (faceIndex === FaceIndex.RPS) { return { type: OB11MessageDataType.rps, data: { @@ -546,7 +546,7 @@ export class OneBotMsgApi { elementType: ElementType.FACE, elementId: '', faceElement: { - faceIndex: FaceIndex.dice, + faceIndex: FaceIndex.DICE, faceType: FaceType.AniSticke, faceText: '[骰子]', packId: '1', @@ -562,7 +562,7 @@ export class OneBotMsgApi { elementType: ElementType.FACE, elementId: '', faceElement: { - faceIndex: FaceIndex.rps, + faceIndex: FaceIndex.RPS, faceText: '[包剪锤]', faceType: 3, packId: '1', From 8353d535890d70c62888c5bbc1f914cd99cfdcc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Fri, 22 Nov 2024 20:50:51 +0800 Subject: [PATCH 062/418] feat: baseEmoji Service --- src/core/packet/message/element.ts | 3 +- .../services/NodeIKernelBaseEmojiService.ts | 17 ++++++ src/core/types/element.ts | 7 ++- src/core/types/emoji.ts | 59 +++++++++++++++++++ src/core/types/index.ts | 3 +- src/core/types/msg.ts | 12 ---- src/onebot/api/msg.ts | 6 +- 7 files changed, 87 insertions(+), 20 deletions(-) create mode 100644 src/core/services/NodeIKernelBaseEmojiService.ts create mode 100644 src/core/types/emoji.ts diff --git a/src/core/packet/message/element.ts b/src/core/packet/message/element.ts index dd66ea37..43a0a767 100644 --- a/src/core/packet/message/element.ts +++ b/src/core/packet/message/element.ts @@ -14,6 +14,7 @@ import { GroupFileExtra } from "@/core/packet/transformer/proto"; import { + BaseEmojiType, NTMsgAtType, PicType, SendArkElement, @@ -162,7 +163,7 @@ export class PacketMsgFaceElement extends IPacketMsgElement { constructor(element: SendFaceElement) { super(element); this.faceId = element.faceElement.faceIndex; - this.isLargeFace = element.faceElement.faceType === 3; + this.isLargeFace = element.faceElement.faceType === BaseEmojiType.CHAIN_SUPER_EMOJI; } buildElement(): NapProtoEncodeStructType[] { diff --git a/src/core/services/NodeIKernelBaseEmojiService.ts b/src/core/services/NodeIKernelBaseEmojiService.ts new file mode 100644 index 00000000..45ce4255 --- /dev/null +++ b/src/core/services/NodeIKernelBaseEmojiService.ts @@ -0,0 +1,17 @@ +import { DownloadBaseEmojiByIdReq, DownloadBaseEmojiByUrlReq, GetBaseEmojiPathReq, PullSysEmojisReq } from '../types'; + +export interface NodeIKernelBaseEmojiService { + removeKernelBaseEmojiListener(listenerId: number): void; + + addKernelBaseEmojiListener(listener: unknown): number; + + isBaseEmojiPathExist(args: Array): unknown; + + fetchFullSysEmojis(pullSysEmojisReq: PullSysEmojisReq): unknown; + + getBaseEmojiPathByIds(getBaseEmojiPathReqs: Array): unknown; + + downloadBaseEmojiByIdWithUrl(downloadBaseEmojiByUrlReq: DownloadBaseEmojiByUrlReq): unknown; + + downloadBaseEmojiById(downloadBaseEmojiByIdReq: DownloadBaseEmojiByIdReq): unknown; +} \ No newline at end of file diff --git a/src/core/types/element.ts b/src/core/types/element.ts index 30542b92..9e8a6ab6 100644 --- a/src/core/types/element.ts +++ b/src/core/types/element.ts @@ -1,4 +1,5 @@ -import { ElementType, FaceType, MessageElement, NTGrayTipElementSubTypeV2, PicSubType, PicType, TipAioOpGrayTipElement, TipGroupElement, NTVideoType } from "./msg"; +import { BaseEmojiType } from "./emoji"; +import { ElementType, MessageElement, NTGrayTipElementSubTypeV2, PicSubType, PicType, TipAioOpGrayTipElement, TipGroupElement, NTVideoType } from "./msg"; type ElementFullBase = Omit; @@ -30,7 +31,7 @@ export interface TextElement { export interface FaceElement { faceIndex: number; - faceType: FaceType; + faceType: BaseEmojiType; faceText?: string; packId?: string; stickerId?: string; @@ -253,7 +254,7 @@ export interface FaceBubbleElement { faceFlag: number; content: string; oldVersionStr: string; - faceType: number; + faceType: BaseEmojiType; others: string; yellowFaceInfo: { index: number; diff --git a/src/core/types/emoji.ts b/src/core/types/emoji.ts new file mode 100644 index 00000000..323cea2b --- /dev/null +++ b/src/core/types/emoji.ts @@ -0,0 +1,59 @@ +export enum PullMomentType { + REINSTALL = 0, + RESTART_FIRST_AIO = 1, + LOGIN_APP = 2, + SINGEL_PULL_NOTIFY = 3, + TRIGGER_SPECIFIC_EMOJI_RANDOM_RESULT = 4 +} + +export interface PullSysEmojisReq { + fetchAdvaceSource: boolean; + fetchBaseSource: boolean; + pullMoment: PullMomentType; + pullType: number; + refresh: boolean; + thresholdValue: number; +} + +export enum BaseEmojiType { + NORMAL_EMOJI = 0, + SUPER_EMOJI = 1, + RANDOM_SUPER_EMOJI = 2, + CHAIN_SUPER_EMOJI = 3, + EMOJI_EMOJI = 4 +} + +export interface GetBaseEmojiPathReq { + emojiId: string; + type: BaseEmojiType; +} +export enum EmojiPanelCategory { + OTHER_PANEL = 0, + NORMAL_PANEL = 1, + SUPER_PANEL = 2, + RED_HEART_PANEL = 3 +} + +export interface DownloadBaseEmojiInfo { + baseResDownloadUrl: string; + advancedResDownloadUrl: string; +} + +export interface DownloadBaseEmojiByUrlReq { + emojiId: string; + groupName: string; + panelCategory: EmojiPanelCategory; + downloadInfo: DownloadBaseEmojiInfo; +} +// public final class DownloadBaseEmojiByIdReq { +// public String groupName; +// public EmojiPanelCategory panelCategory; +// public String emojiId = ""; +// public String qzoneCode = ""; + +export interface DownloadBaseEmojiByIdReq { + emojiId: string; + groupName: string; + panelCategory: EmojiPanelCategory; + qzoneCode: string; +} \ No newline at end of file diff --git a/src/core/types/index.ts b/src/core/types/index.ts index dffa91b9..95958179 100644 --- a/src/core/types/index.ts +++ b/src/core/types/index.ts @@ -8,4 +8,5 @@ export * from './webapi'; export * from './sign'; export * from './element'; export * from './constant'; -export * from './graytip'; \ No newline at end of file +export * from './graytip'; +export * from './emoji'; \ No newline at end of file diff --git a/src/core/types/msg.ts b/src/core/types/msg.ts index 4021da58..12989dbe 100644 --- a/src/core/types/msg.ts +++ b/src/core/types/msg.ts @@ -264,18 +264,6 @@ export enum NTGrayTipElementSubTypeV2 { GRAYTIP_ELEMENT_SUBTYPE_XMLMSG = 12, } -/** - * 表情类型枚举 - */ -export enum FaceType { - Unknown = 0, - OldFace = 1, // 老表情 - Normal = 2, // 常规表情 - AniSticke = 3, // 动画贴纸 - Lottie = 4,// 新格式表情 - Poke = 5 // 可变Poke -} - /** * Poke 类型枚举 */ diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 4894e13a..8d51e8ab 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -7,7 +7,6 @@ import { CustomMusicSignPostData, ElementType, FaceIndex, - FaceType, IdMusicSignPostData, MessageElement, NapCatCore, @@ -16,6 +15,7 @@ import { RawMessage, SendMessageElement, SendTextElement, + BaseEmojiType, } from '@/core'; import faceConfig from '@/core/external/face_config.json'; import { NapCatOneBot11Adapter, OB11Message, OB11MessageData, OB11MessageDataType, OB11MessageFileBase, } from '@/onebot'; @@ -547,7 +547,7 @@ export class OneBotMsgApi { elementId: '', faceElement: { faceIndex: FaceIndex.DICE, - faceType: FaceType.AniSticke, + faceType: BaseEmojiType.CHAIN_SUPER_EMOJI, faceText: '[骰子]', packId: '1', stickerId: '33', @@ -564,7 +564,7 @@ export class OneBotMsgApi { faceElement: { faceIndex: FaceIndex.RPS, faceText: '[包剪锤]', - faceType: 3, + faceType: BaseEmojiType.CHAIN_SUPER_EMOJI, packId: '1', stickerId: '34', sourceType: 1, From 4277cb3f3c713ea5d73c698a2474f9f80d7b4f90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Fri, 22 Nov 2024 20:52:11 +0800 Subject: [PATCH 063/418] remove: docs --- src/core/types/emoji.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/core/types/emoji.ts b/src/core/types/emoji.ts index 323cea2b..51f1e8cc 100644 --- a/src/core/types/emoji.ts +++ b/src/core/types/emoji.ts @@ -45,11 +45,6 @@ export interface DownloadBaseEmojiByUrlReq { panelCategory: EmojiPanelCategory; downloadInfo: DownloadBaseEmojiInfo; } -// public final class DownloadBaseEmojiByIdReq { -// public String groupName; -// public EmojiPanelCategory panelCategory; -// public String emojiId = ""; -// public String qzoneCode = ""; export interface DownloadBaseEmojiByIdReq { emojiId: string; From 12a1681b42651cebad3065b89c06df0b32047e0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Fri, 22 Nov 2024 21:39:16 +0800 Subject: [PATCH 064/418] fix: poke for base emoji --- src/core/types/emoji.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/core/types/emoji.ts b/src/core/types/emoji.ts index 51f1e8cc..8002eba3 100644 --- a/src/core/types/emoji.ts +++ b/src/core/types/emoji.ts @@ -20,7 +20,8 @@ export enum BaseEmojiType { SUPER_EMOJI = 1, RANDOM_SUPER_EMOJI = 2, CHAIN_SUPER_EMOJI = 3, - EMOJI_EMOJI = 4 + EMOJI_EMOJI = 4, + VAS_POKE = 5 } export interface GetBaseEmojiPathReq { @@ -51,4 +52,4 @@ export interface DownloadBaseEmojiByIdReq { groupName: string; panelCategory: EmojiPanelCategory; qzoneCode: string; -} \ No newline at end of file +} From 90b54435b566b6faad09d1d8e8d70f68966f06fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Fri, 22 Nov 2024 22:04:57 +0800 Subject: [PATCH 065/418] fix: typo --- src/core/packet/message/element.ts | 3 ++- src/core/types/element.ts | 7 +++---- src/core/types/msg.ts | 12 ++++++++++++ src/onebot/api/msg.ts | 5 +++-- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/core/packet/message/element.ts b/src/core/packet/message/element.ts index 43a0a767..c0cfa412 100644 --- a/src/core/packet/message/element.ts +++ b/src/core/packet/message/element.ts @@ -15,6 +15,7 @@ import { } from "@/core/packet/transformer/proto"; import { BaseEmojiType, + FaceType, NTMsgAtType, PicType, SendArkElement, @@ -163,7 +164,7 @@ export class PacketMsgFaceElement extends IPacketMsgElement { constructor(element: SendFaceElement) { super(element); this.faceId = element.faceElement.faceIndex; - this.isLargeFace = element.faceElement.faceType === BaseEmojiType.CHAIN_SUPER_EMOJI; + this.isLargeFace = element.faceElement.faceType === FaceType.AniSticke; } buildElement(): NapProtoEncodeStructType[] { diff --git a/src/core/types/element.ts b/src/core/types/element.ts index 9e8a6ab6..6211650b 100644 --- a/src/core/types/element.ts +++ b/src/core/types/element.ts @@ -1,5 +1,4 @@ -import { BaseEmojiType } from "./emoji"; -import { ElementType, MessageElement, NTGrayTipElementSubTypeV2, PicSubType, PicType, TipAioOpGrayTipElement, TipGroupElement, NTVideoType } from "./msg"; +import { ElementType, MessageElement, NTGrayTipElementSubTypeV2, PicSubType, PicType, TipAioOpGrayTipElement, TipGroupElement, NTVideoType, FaceType } from "./msg"; type ElementFullBase = Omit; @@ -31,7 +30,7 @@ export interface TextElement { export interface FaceElement { faceIndex: number; - faceType: BaseEmojiType; + faceType: FaceType; faceText?: string; packId?: string; stickerId?: string; @@ -254,7 +253,7 @@ export interface FaceBubbleElement { faceFlag: number; content: string; oldVersionStr: string; - faceType: BaseEmojiType; + faceType: FaceType; others: string; yellowFaceInfo: { index: number; diff --git a/src/core/types/msg.ts b/src/core/types/msg.ts index 12989dbe..bc310f74 100644 --- a/src/core/types/msg.ts +++ b/src/core/types/msg.ts @@ -526,4 +526,16 @@ export interface MsgReqType { includeSelf: boolean, includeDeleteMsg: boolean, extraCnt: number +} + +/** + * 表情类型枚举 + */ +export enum FaceType { + Unknown = 0, + OldFace = 1, // 老表情 + Normal = 2, // 常规表情 + AniSticke = 3, // 动画贴纸 + Lottie = 4,// 新格式表情 + Poke = 5 // 可变Poke } \ No newline at end of file diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 8d51e8ab..83f792bb 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -16,6 +16,7 @@ import { SendMessageElement, SendTextElement, BaseEmojiType, + FaceType, } from '@/core'; import faceConfig from '@/core/external/face_config.json'; import { NapCatOneBot11Adapter, OB11Message, OB11MessageData, OB11MessageDataType, OB11MessageFileBase, } from '@/onebot'; @@ -547,7 +548,7 @@ export class OneBotMsgApi { elementId: '', faceElement: { faceIndex: FaceIndex.DICE, - faceType: BaseEmojiType.CHAIN_SUPER_EMOJI, + faceType: FaceType.AniSticke, faceText: '[骰子]', packId: '1', stickerId: '33', @@ -564,7 +565,7 @@ export class OneBotMsgApi { faceElement: { faceIndex: FaceIndex.RPS, faceText: '[包剪锤]', - faceType: BaseEmojiType.CHAIN_SUPER_EMOJI, + faceType: FaceType.AniSticke, packId: '1', stickerId: '34', sourceType: 1, From b0242ccb6239a4366e7101326ac86f81134c0e26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Fri, 22 Nov 2024 22:08:46 +0800 Subject: [PATCH 066/418] fix: typo --- src/core/types/emoji.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/core/types/emoji.ts b/src/core/types/emoji.ts index 8002eba3..1ed4a001 100644 --- a/src/core/types/emoji.ts +++ b/src/core/types/emoji.ts @@ -20,8 +20,7 @@ export enum BaseEmojiType { SUPER_EMOJI = 1, RANDOM_SUPER_EMOJI = 2, CHAIN_SUPER_EMOJI = 3, - EMOJI_EMOJI = 4, - VAS_POKE = 5 + EMOJI_EMOJI = 4 } export interface GetBaseEmojiPathReq { From c6a459a111aa963bf68e68c236f366a0a13b1631 Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Sat, 23 Nov 2024 10:27:40 +0000 Subject: [PATCH 067/418] release: v4.1.16 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 4ed3c177..94f05622 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.1.15", + "version": "4.1.16", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 95c733b9..b4f0698c 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.1.15", + "version": "4.1.16", "scripts": { "build:framework": "npm run build:webui && vite build --mode framework || exit 1", "build:shell": "npm run build:webui && vite build --mode shell || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index 77007054..28af2d58 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.1.15'; +export const napCatVersion = '4.1.16'; From 962d3c064f21403f7786d02c5fb686c148bdf5d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sat, 23 Nov 2024 18:52:53 +0800 Subject: [PATCH 068/418] update: Limited Redistribution License --- LICENSE | 210 ++++---------------------------------------------------- 1 file changed, 14 insertions(+), 196 deletions(-) diff --git a/LICENSE b/LICENSE index 261eeb9e..a79f4f97 100644 --- a/LICENSE +++ b/LICENSE @@ -1,201 +1,19 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ +Limited Redistribution License for NapCat - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +Copyright © 2024 Mlikiowa - 1. Definitions. +1. Usage and Reproduction: + - Unauthorized use, reproduction, modification, or distribution of this code is prohibited without explicit permission from the main author of the NapCat repository. + +2. Redistribution: + - Redistribution of this code is permitted, provided that the full text of this license is included, and the source and copyright information is clearly stated. + - Minor modifications and extensions are allowed for redistribution purposes, but the modified code must not be publicly released. - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. +3. Non-Commercial Use: + - This code is not to be used for any commercial purposes. - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. +4. Additional Permissions: + - Any rights not explicitly addressed in this license must be requested from and granted by the main author of the NapCat repository. - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +5. Disclaimer: + - This code is provided "as is," without any express or implied warranties, including but not limited to the implied warranties of merchantability and fitness for a particular purpose. In no event shall the author be liable for any damages or other liability arising from, out of, or in connection with the use or distribution of this code. From 54f805b6e45aa461f5afe7110976a968627e3bdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 24 Nov 2024 12:17:23 +0800 Subject: [PATCH 069/418] fix: #538 --- napcat.webui/src/pages/OtherConfig.vue | 5 +++ src/onebot/api/msg.ts | 58 +++++++++++++++----------- src/onebot/config/config.ts | 7 +++- src/onebot/index.ts | 2 +- src/onebot/types/message.ts | 2 +- 5 files changed, 46 insertions(+), 28 deletions(-) diff --git a/napcat.webui/src/pages/OtherConfig.vue b/napcat.webui/src/pages/OtherConfig.vue index 685c2dd5..730f2568 100644 --- a/napcat.webui/src/pages/OtherConfig.vue +++ b/napcat.webui/src/pages/OtherConfig.vue @@ -11,6 +11,9 @@ + + +
保存 @@ -28,6 +31,7 @@ import { QQLoginManager } from '@/backend/shell'; const otherConfig = ref>({ musicSignUrl: '', enableLocalFile2Url: false, + parseMultMsg: true }); const getOB11Config = async (): Promise => { @@ -68,6 +72,7 @@ const saveConfig = async () => { if (userConfig) { userConfig.musicSignUrl = otherConfig.value.musicSignUrl || ''; userConfig.enableLocalFile2Url = otherConfig.value.enableLocalFile2Url ?? false; + userConfig.parseMultMsg = otherConfig.value.parseMultMsg ?? true; const success = await setOB11Config(userConfig); if (success) { MessagePlugin.success('配置保存成功'); diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 83f792bb..06a057eb 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -19,7 +19,7 @@ import { FaceType, } from '@/core'; import faceConfig from '@/core/external/face_config.json'; -import { NapCatOneBot11Adapter, OB11Message, OB11MessageData, OB11MessageDataType, OB11MessageFileBase, } from '@/onebot'; +import { NapCatOneBot11Adapter, OB11Message, OB11MessageData, OB11MessageDataType, OB11MessageFileBase, OB11MessageForward, } from '@/onebot'; import { OB11Construct } from '@/onebot/helper/data'; import { EventType } from '@/onebot/event/OneBotEvent'; import { encodeCQCode } from '@/onebot/helper/cqcode'; @@ -37,21 +37,26 @@ type RawToOb11Converters = { element: Exclude, msg: RawMessage, elementWrapper: MessageElement, + context: RecvMessageContext ) => PromiseLike } type Ob11ToRawConverters = { [Key in OB11MessageDataType]: ( sendMsg: Extract, - context: MessageContext, + context: SendMessageContext, ) => Promise } -export type MessageContext = { +export type SendMessageContext = { deleteAfterSentFiles: string[], peer: Peer } +export type RecvMessageContext = { + parseMultMsg: boolean +} + function keyCanBeParsed(key: string, parser: RawToOb11Converters): key is keyof RawToOb11Converters { return key in parser; } @@ -338,12 +343,7 @@ export class OneBotMsgApi { }; }, - multiForwardMsgElement: async (_, msg) => { - // const message_data: OB11MessageForward = { - // data: {} as any, - // type: OB11MessageDataType.forward, - // }; - // message_data.data.id = msg.msgId; + multiForwardMsgElement: async (_, msg, wrapper, context) => { const parentMsgPeer = msg.parentMsgPeer ?? { chatType: msg.chatType, guildId: '', @@ -359,21 +359,23 @@ export class OneBotMsgApi { //拉取下级消息 if (!multiMsgs) return null; //拉取失败则跳过 - - return { + let ret = { type: OB11MessageDataType.forward, data: { - id: msg.msgId, - content: (await Promise.all(multiMsgs.map( - async multiMsgItem => { - multiMsgItem.parentMsgPeer = parentMsgPeer; - multiMsgItem.parentMsgIdList = msg.parentMsgIdList; - multiMsgItem.id = MessageUnique.createUniqueMsgId(parentMsgPeer, multiMsgItem.msgId); //该ID仅用查看 无法调用 - return await this.parseMessage(multiMsgItem, 'array'); - }, - ))).filter(item => item !== undefined), + id: msg.msgId }, - }; + } as OB11MessageForward; + if (context.parseMultMsg) { + ret.data.content = (await Promise.all(multiMsgs.map( + async multiMsgItem => { + multiMsgItem.parentMsgPeer = parentMsgPeer; + multiMsgItem.parentMsgIdList = msg.parentMsgIdList; + multiMsgItem.id = MessageUnique.createUniqueMsgId(parentMsgPeer, multiMsgItem.msgId); //该ID仅用查看 无法调用 + return await this.parseMessage(multiMsgItem, 'array', context.parseMultMsg); + }, + ))).filter(item => item !== undefined) + } + return ret; }, arkElement: async (element) => { @@ -695,15 +697,17 @@ export class OneBotMsgApi { async parseMessage( msg: RawMessage, messagePostFormat: string, + parseMultMsg: boolean = true ) { if (messagePostFormat === 'string') { - return (await this.parseMessageV2(msg))?.stringMsg; + return (await this.parseMessageV2(msg, parseMultMsg))?.stringMsg; } - return (await this.parseMessageV2(msg))?.arrayMsg; + return (await this.parseMessageV2(msg, parseMultMsg))?.arrayMsg; } async parseMessageV2( msg: RawMessage, + parseMultMsg: boolean = true ) { if (msg.senderUin == '0' || msg.senderUin == '') return; if (msg.peerUin == '0' || msg.peerUin == '') return; @@ -767,11 +771,15 @@ export class OneBotMsgApi { element: Exclude, msg: RawMessage, elementWrapper: MessageElement, + context: RecvMessageContext ) => PromiseLike; const parsedElement = await converters?.( element[key], msg, element, + { + parseMultMsg: parseMultMsg + } ); // 对于 face 类型的消息,检查是否存在 if (key === 'faceElement' && !parsedElement) { @@ -819,7 +827,7 @@ export class OneBotMsgApi { } const converter = this.ob11ToRawConverters[sendMsg.type] as ( sendMsg: Extract, - context: MessageContext, + context: SendMessageContext, ) => Promise; const callResult = converter( sendMsg, @@ -878,7 +886,7 @@ export class OneBotMsgApi { private async handleOb11FileLikeMessage( { data: inputdata }: OB11MessageFileBase, - { deleteAfterSentFiles }: MessageContext, + { deleteAfterSentFiles }: SendMessageContext, ) { const realUri = inputdata.url || inputdata.file || inputdata.path || ''; if (realUri.length === 0) { diff --git a/src/onebot/config/config.ts b/src/onebot/config/config.ts index 2a70dea0..daccc0ca 100644 --- a/src/onebot/config/config.ts +++ b/src/onebot/config/config.ts @@ -103,6 +103,7 @@ export interface OneBotConfig { network: NetworkConfig; // 网络配置 musicSignUrl: string; // 音乐签名地址 enableLocalFile2Url: boolean; + parseMultMsg: boolean; } const createDefaultConfig = (config: T): T => config; @@ -116,6 +117,7 @@ export const defaultOneBotConfigs = createDefaultConfig({ }, musicSignUrl: '', enableLocalFile2Url: false, + parseMultMsg: true }); export const mergeNetworkDefaultConfig = { @@ -149,9 +151,12 @@ export function mergeOneBotConfigs( if (userConfig.musicSignUrl !== undefined) { mergedConfig.musicSignUrl = userConfig.musicSignUrl; } - if(userConfig.enableLocalFile2Url !== undefined) { + if (userConfig.enableLocalFile2Url !== undefined) { mergedConfig.enableLocalFile2Url = userConfig.enableLocalFile2Url; } + if (userConfig.enableLocalFile2Url !== undefined) { + mergedConfig.enableLocalFile2Url = true; + } return mergedConfig; } diff --git a/src/onebot/index.ts b/src/onebot/index.ts index c9938ef5..cc0cf24d 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -551,7 +551,7 @@ export class NapCatOneBot11Adapter { } private async handleMsg(message: RawMessage, network: Array) { try { - const ob11Msg = await this.apis.MsgApi.parseMessageV2(message); + const ob11Msg = await this.apis.MsgApi.parseMessageV2(message, this.configLoader.configData.parseMultMsg); if (ob11Msg) { const isSelfMsg = this.isSelfMessage(ob11Msg); this.context.logger.logDebug('转化为 OB11Message', ob11Msg); diff --git a/src/onebot/types/message.ts b/src/onebot/types/message.ts index 8dcbb03b..12a7aa9e 100644 --- a/src/onebot/types/message.ts +++ b/src/onebot/types/message.ts @@ -236,7 +236,7 @@ export interface OB11MessageForward { type: OB11MessageDataType.forward; data: { id: string; - content: OB11Message[]; + content?: OB11Message[]; }; } From 7158f25f37c4d72348634c04b6a3d8ed78f1e7e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 24 Nov 2024 12:18:16 +0800 Subject: [PATCH 070/418] fix: error --- src/onebot/action/go-cqhttp/GetForwardMsg.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/onebot/action/go-cqhttp/GetForwardMsg.ts b/src/onebot/action/go-cqhttp/GetForwardMsg.ts index 7f5338fe..4e902c04 100644 --- a/src/onebot/action/go-cqhttp/GetForwardMsg.ts +++ b/src/onebot/action/go-cqhttp/GetForwardMsg.ts @@ -41,7 +41,7 @@ export class GoCQHTTPGetForwardMsgAction extends OneBotAction { for (const msgdata of message.message) { if ((msgdata as OB11MessageData).type === OB11MessageDataType.forward) { const newNode = this.createTemplateNode(message); - newNode.data.message = await this.parseForward((msgdata as OB11MessageForward).data.content); + newNode.data.message = await this.parseForward((msgdata as OB11MessageForward).data.content ?? []); templateNode.data.message.push(newNode); } else { From 3c09ff13d0e4185ae308811dce789c60291df06b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 24 Nov 2024 12:23:42 +0800 Subject: [PATCH 071/418] fix: check config --- src/onebot/config/config.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/onebot/config/config.ts b/src/onebot/config/config.ts index daccc0ca..e31626fd 100644 --- a/src/onebot/config/config.ts +++ b/src/onebot/config/config.ts @@ -154,8 +154,8 @@ export function mergeOneBotConfigs( if (userConfig.enableLocalFile2Url !== undefined) { mergedConfig.enableLocalFile2Url = userConfig.enableLocalFile2Url; } - if (userConfig.enableLocalFile2Url !== undefined) { - mergedConfig.enableLocalFile2Url = true; + if (userConfig.parseMultMsg !== undefined) { + mergedConfig.parseMultMsg = userConfig.parseMultMsg; } return mergedConfig; } From f0dcef79816be62bf198752eb8cf41429fb93852 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 24 Nov 2024 12:26:44 +0800 Subject: [PATCH 072/418] =?UTF-8?q?fix:=20by=20ai=20=E7=AE=80=E5=8C=96?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/onebot/api/msg.ts | 65 ++++++++++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 25 deletions(-) diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 06a057eb..9418a203 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -349,33 +349,20 @@ export class OneBotMsgApi { guildId: '', peerUid: msg.peerUid, }; - //判断是否在合并消息内 - msg.parentMsgIdList = msg.parentMsgIdList ?? []; - //首次列表不存在则开始创建 - msg.parentMsgIdList.push(msg.msgId); - //let parentMsgId = msg.parentMsgIdList[msg.parentMsgIdList.length - 2 < 0 ? 0 : msg.parentMsgIdList.length - 2]; - //加入自身MsgId - const multiMsgs = (await this.core.apis.MsgApi.getMultiMsg(parentMsgPeer, msg.parentMsgIdList[0], msg.msgId))?.msgList; - //拉取下级消息 + const multiMsgs = await this.getMultiMessages(msg, parentMsgPeer); + // 拉取失败则跳过 if (!multiMsgs) return null; - //拉取失败则跳过 - let ret = { + const forward: OB11MessageForward = { type: OB11MessageDataType.forward, - data: { - id: msg.msgId - }, - } as OB11MessageForward; - if (context.parseMultMsg) { - ret.data.content = (await Promise.all(multiMsgs.map( - async multiMsgItem => { - multiMsgItem.parentMsgPeer = parentMsgPeer; - multiMsgItem.parentMsgIdList = msg.parentMsgIdList; - multiMsgItem.id = MessageUnique.createUniqueMsgId(parentMsgPeer, multiMsgItem.msgId); //该ID仅用查看 无法调用 - return await this.parseMessage(multiMsgItem, 'array', context.parseMultMsg); - }, - ))).filter(item => item !== undefined) - } - return ret; + data: { id: msg.msgId } + }; + if (!context.parseMultMsg) return forward; + forward.data.content = await this.parseMultiMessageContent( + multiMsgs, + parentMsgPeer, + msg.parentMsgIdList + ); + return forward; }, arkElement: async (element) => { @@ -694,6 +681,34 @@ export class OneBotMsgApi { } } + private async getMultiMessages(msg: RawMessage, parentMsgPeer: Peer) { + //判断是否在合并消息内 + msg.parentMsgIdList = msg.parentMsgIdList ?? []; + //首次列表不存在则开始创建 + msg.parentMsgIdList.push(msg.msgId); + //拉取下级消息 + return (await this.core.apis.MsgApi.getMultiMsg( + parentMsgPeer, + msg.parentMsgIdList[0], + msg.msgId + ))?.msgList; + } + + private async parseMultiMessageContent( + multiMsgs: RawMessage[], + parentMsgPeer: Peer, + parentMsgIdList: string[] + ) { + const parsed = await Promise.all(multiMsgs.map(async msg => { + msg.parentMsgPeer = parentMsgPeer; + msg.parentMsgIdList = parentMsgIdList; + msg.id = MessageUnique.createUniqueMsgId(parentMsgPeer, msg.msgId); + //该ID仅用查看 无法调用 + return await this.parseMessage(msg, 'array', true); + })); + return parsed.filter(item => item !== undefined); + } + async parseMessage( msg: RawMessage, messagePostFormat: string, From 40f79ee8161f883919cd030a04e34b411ef668c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 24 Nov 2024 12:43:28 +0800 Subject: [PATCH 073/418] fix: error handle --- src/onebot/action/OneBotAction.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/onebot/action/OneBotAction.ts b/src/onebot/action/OneBotAction.ts index ae5c8e7b..967d186a 100644 --- a/src/onebot/action/OneBotAction.ts +++ b/src/onebot/action/OneBotAction.ts @@ -1,7 +1,6 @@ import { ActionName, BaseCheckResult } from './router'; import Ajv, { ErrorObject, ValidateFunction } from 'ajv'; import { NapCatCore } from '@/core'; -import { isNull } from '@/common/helper'; import { NapCatOneBot11Adapter, OB11Return } from '@/onebot'; export class OB11Response { @@ -66,7 +65,7 @@ export abstract class OneBotAction { return OB11Response.ok(resData); } catch (e: any) { this.core.context.logger.logError('发生错误', e); - return OB11Response.error(e?.toString() || e?.stack?.toString() || '未知错误,可能操作超时', 200); + return OB11Response.error((e as Error).message.toString() || e?.stack?.toString() || '未知错误,可能操作超时', 200); } } @@ -80,7 +79,7 @@ export abstract class OneBotAction { return OB11Response.ok(resData, echo); } catch (e: any) { this.core.context.logger.logError('发生错误', e); - return OB11Response.error(e.toString() || e.stack?.toString(), 1200, echo); + return OB11Response.error((e as Error).message.toString() || e.stack?.toString(), 1200, echo); } } From e521740a44c826e9a85dc4e587a6373616451b13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 24 Nov 2024 12:49:37 +0800 Subject: [PATCH 074/418] fix: error --- napcat.webui/src/pages/OtherConfig.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/napcat.webui/src/pages/OtherConfig.vue b/napcat.webui/src/pages/OtherConfig.vue index 730f2568..5fff6ff9 100644 --- a/napcat.webui/src/pages/OtherConfig.vue +++ b/napcat.webui/src/pages/OtherConfig.vue @@ -60,6 +60,7 @@ const loadConfig = async () => { if (userConfig) { otherConfig.value.musicSignUrl = userConfig.musicSignUrl; otherConfig.value.enableLocalFile2Url = userConfig.enableLocalFile2Url; + otherConfig.value.parseMultMsg = userConfig.parseMultMsg; } } catch (error) { console.error('Error loading config:', error); From 152be29739b676813de82bd8d49e9b326c4f8e7d Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Sun, 24 Nov 2024 04:53:06 +0000 Subject: [PATCH 075/418] release: v4.1.18 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 94f05622..df5397bc 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.1.16", + "version": "4.1.18", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index b4f0698c..b4f5ac4a 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.1.16", + "version": "4.1.18", "scripts": { "build:framework": "npm run build:webui && vite build --mode framework || exit 1", "build:shell": "npm run build:webui && vite build --mode shell || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index 28af2d58..393551b6 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.1.16'; +export const napCatVersion = '4.1.18'; From 3fbed815a5d3e50937c9bc5570304f9225651460 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BA=B8=E5=87=A4=E5=AD=A4=E5=87=B0?= <3100542635@qq.com> Date: Mon, 25 Nov 2024 02:17:48 +0800 Subject: [PATCH 076/418] =?UTF-8?q?=E4=BF=AE=E6=94=B9webui?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- napcat.webui/index.html | 14 +- napcat.webui/package.json | 2 +- napcat.webui/public/logo_webui.png | Bin 0 -> 205619 bytes napcat.webui/src/App.vue | 116 +++- napcat.webui/src/assets/logo_webui.png | Bin 0 -> 205619 bytes napcat.webui/src/components/Dashboard.vue | 34 +- napcat.webui/src/components/QQLogin.vue | 77 +-- napcat.webui/src/components/WebUiLogin.vue | 42 +- napcat.webui/src/components/webui/Nav.vue | 74 ++- napcat.webui/src/main.ts | 17 +- napcat.webui/src/pages/NetWork.vue | 550 +++++++++++++----- napcat.webui/src/pages/OtherConfig.vue | 92 +-- .../src/pages/network/EmptyStateComponent.vue | 22 - .../src/pages/network/HttpClientComponent.vue | 72 +-- .../src/pages/network/HttpServerComponent.vue | 84 +-- .../network/WebsocketClientComponent.vue | 78 +-- .../network/WebsocketServerComponent.vue | 91 ++- napcat.webui/src/ts/event-bus.ts | 3 + 18 files changed, 847 insertions(+), 521 deletions(-) create mode 100644 napcat.webui/public/logo_webui.png create mode 100644 napcat.webui/src/assets/logo_webui.png delete mode 100644 napcat.webui/src/pages/network/EmptyStateComponent.vue create mode 100644 napcat.webui/src/ts/event-bus.ts diff --git a/napcat.webui/index.html b/napcat.webui/index.html index 1f07d8e5..de5376cf 100644 --- a/napcat.webui/index.html +++ b/napcat.webui/index.html @@ -1,13 +1,13 @@ - + - + NapCat WebUI - - -
- - + + +
+ + diff --git a/napcat.webui/package.json b/napcat.webui/package.json index 5b0739d4..f6b8c6e7 100644 --- a/napcat.webui/package.json +++ b/napcat.webui/package.json @@ -14,7 +14,7 @@ "qrcode": "^1.5.4", "tdesign-icons-vue-next": "^0.3.3", "tdesign-vue-next": "^1.10.3", - "vue": "^3.5.12", + "vue": "^3.5.13", "vue-router": "^4.4.5" }, "devDependencies": { diff --git a/napcat.webui/public/logo_webui.png b/napcat.webui/public/logo_webui.png new file mode 100644 index 0000000000000000000000000000000000000000..03aa7f5ba973f4835cedd22beae4f188fea452b8 GIT binary patch literal 205619 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
}_E^-Nvuk}7;R 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

`KvQlHFgXg|l~ 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 -

+
+
+ + + + + + + + + + + +
- + + diff --git a/napcat.webui/src/assets/logo_webui.png b/napcat.webui/src/assets/logo_webui.png new file mode 100644 index 0000000000000000000000000000000000000000..03aa7f5ba973f4835cedd22beae4f188fea452b8 GIT binary patch literal 205619 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
}_E^-Nvuk}7;R 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

`KvQlHFgXg|l~ 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 -

- -
- + +
+
-
+ + + + diff --git a/napcat.webui/src/components/WebUiLogin.vue b/napcat.webui/src/components/WebUiLogin.vue index 956f3d60..553a2bef 100644 --- a/napcat.webui/src/components/WebUiLogin.vue +++ b/napcat.webui/src/components/WebUiLogin.vue @@ -1,20 +1,22 @@ diff --git a/napcat.webui/src/components/webui/Nav.vue b/napcat.webui/src/components/webui/Nav.vue index ddf489bd..f12df5a7 100644 --- a/napcat.webui/src/components/webui/Nav.vue +++ b/napcat.webui/src/components/webui/Nav.vue @@ -1,16 +1,25 @@ diff --git a/napcat.webui/src/pages/OtherConfig.vue b/napcat.webui/src/pages/OtherConfig.vue index 5fff6ff9..b978cf11 100644 --- a/napcat.webui/src/pages/OtherConfig.vue +++ b/napcat.webui/src/pages/OtherConfig.vue @@ -1,25 +1,24 @@ diff --git a/napcat.webui/src/pages/network/EmptyStateComponent.vue b/napcat.webui/src/pages/network/EmptyStateComponent.vue deleted file mode 100644 index 29fb8e9b..00000000 --- a/napcat.webui/src/pages/network/EmptyStateComponent.vue +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/napcat.webui/src/pages/network/HttpClientComponent.vue b/napcat.webui/src/pages/network/HttpClientComponent.vue index 71cd8d14..7d275b90 100644 --- a/napcat.webui/src/pages/network/HttpClientComponent.vue +++ b/napcat.webui/src/pages/network/HttpClientComponent.vue @@ -1,28 +1,25 @@ @@ -36,33 +33,16 @@ const props = defineProps<{ const messageFormatOptions = ref([ { label: 'Array', value: 'array' }, - { label: 'String', value: 'string' }, + { label: 'String', value: 'string' } ]); -watch( - () => props.config.messagePostFormat, - (newValue) => { - if (newValue !== 'array' && newValue !== 'string') { - props.config.messagePostFormat = 'array'; - } +watch(() => props.config.messagePostFormat, (newValue) => { + if (newValue !== 'array' && newValue !== 'string') { + props.config.messagePostFormat = 'array'; } -); +}); diff --git a/napcat.webui/src/pages/network/HttpServerComponent.vue b/napcat.webui/src/pages/network/HttpServerComponent.vue index 5e61b253..607e528d 100644 --- a/napcat.webui/src/pages/network/HttpServerComponent.vue +++ b/napcat.webui/src/pages/network/HttpServerComponent.vue @@ -1,34 +1,31 @@ @@ -42,33 +39,16 @@ const props = defineProps<{ const messageFormatOptions = ref([ { label: 'Array', value: 'array' }, - { label: 'String', value: 'string' }, + { label: 'String', value: 'string' } ]); -watch( - () => props.config.messagePostFormat, - (newValue) => { - if (newValue !== 'array' && newValue !== 'string') { - props.config.messagePostFormat = 'array'; - } +watch(() => props.config.messagePostFormat, (newValue) => { + if (newValue !== 'array' && newValue !== 'string') { + props.config.messagePostFormat = 'array'; } -); +}); diff --git a/napcat.webui/src/pages/network/WebsocketClientComponent.vue b/napcat.webui/src/pages/network/WebsocketClientComponent.vue index d7c2f657..fc05eb9f 100644 --- a/napcat.webui/src/pages/network/WebsocketClientComponent.vue +++ b/napcat.webui/src/pages/network/WebsocketClientComponent.vue @@ -1,31 +1,28 @@ @@ -39,33 +36,16 @@ const props = defineProps<{ const messageFormatOptions = ref([ { label: 'Array', value: 'array' }, - { label: 'String', value: 'string' }, + { label: 'String', value: 'string' } ]); -watch( - () => props.config.messagePostFormat, - (newValue) => { - if (newValue !== 'array' && newValue !== 'string') { - props.config.messagePostFormat = 'array'; - } +watch(() => props.config.messagePostFormat, (newValue) => { + if (newValue !== 'array' && newValue !== 'string') { + props.config.messagePostFormat = 'array'; } -); +}); diff --git a/napcat.webui/src/pages/network/WebsocketServerComponent.vue b/napcat.webui/src/pages/network/WebsocketServerComponent.vue index 88830ffa..c6c1a740 100644 --- a/napcat.webui/src/pages/network/WebsocketServerComponent.vue +++ b/napcat.webui/src/pages/network/WebsocketServerComponent.vue @@ -1,37 +1,34 @@ @@ -45,33 +42,15 @@ const props = defineProps<{ const messageFormatOptions = ref([ { label: 'Array', value: 'array' }, - { label: 'String', value: 'string' }, + { label: 'String', value: 'string' } ]); -watch( - () => props.config.messagePostFormat, - (newValue) => { - if (newValue !== 'array' && newValue !== 'string') { - props.config.messagePostFormat = 'array'; - } +watch(() => props.config.messagePostFormat, (newValue) => { + if (newValue !== 'array' && newValue !== 'string') { + props.config.messagePostFormat = 'array'; } -); +}); diff --git a/napcat.webui/src/ts/event-bus.ts b/napcat.webui/src/ts/event-bus.ts new file mode 100644 index 00000000..b4efb6ee --- /dev/null +++ b/napcat.webui/src/ts/event-bus.ts @@ -0,0 +1,3 @@ +import mitt from "mitt" +const emitter = mitt(); +export default emitter; From da965e7b39e9d6626749952b88225a6125be03d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Mon, 25 Nov 2024 13:01:42 +0800 Subject: [PATCH 077/418] =?UTF-8?q?fix:=20qrcode=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- napcat.webui/src/backend/shell.ts | 20 ++++++++++++ napcat.webui/src/components/QQLogin.vue | 43 +++++++++++-------------- src/webui/src/api/QQLogin.ts | 1 + 3 files changed, 39 insertions(+), 25 deletions(-) diff --git a/napcat.webui/src/backend/shell.ts b/napcat.webui/src/backend/shell.ts index efc7f013..0819e0b8 100644 --- a/napcat.webui/src/backend/shell.ts +++ b/napcat.webui/src/backend/shell.ts @@ -74,6 +74,26 @@ export class QQLoginManager { } return false; } + public async checkQQLoginStatusWithQrcode(): Promise<{ qrcodeurl: string, isLogin: string } | undefined> { + try { + const QQLoginResponse = await fetch(`${this.apiPrefix}/QQLogin/CheckLoginStatus`, { + method: 'POST', + headers: { + Authorization: 'Bearer ' + this.retCredential, + 'Content-Type': 'application/json', + }, + }); + if (QQLoginResponse.status == 200) { + const QQLoginResponseJson = await QQLoginResponse.json(); + if (QQLoginResponseJson.code == 0) { + return QQLoginResponseJson.data; + } + } + } catch (error) { + console.error('Error checking QQ login status:', error); + } + return undefined; + } public async checkWebUiLogined(): Promise { try { diff --git a/napcat.webui/src/components/QQLogin.vue b/napcat.webui/src/components/QQLogin.vue index 13d4b674..bd46608a 100644 --- a/napcat.webui/src/components/QQLogin.vue +++ b/napcat.webui/src/components/QQLogin.vue @@ -2,28 +2,14 @@
- - - + + + - - + + - - + +
@@ -40,11 +35,11 @@ enum ThemeMode { Auto = 'auto', } const themeLabelMap: Record = { - '浅色': ThemeMode.Light, - '深色': ThemeMode.Dark, - '自动': ThemeMode.Auto, + 浅色: ThemeMode.Light, + 深色: ThemeMode.Dark, + 自动: ThemeMode.Auto, }; -const show = ref(true) +const show = ref(true); const createSetThemeAttributeFunction = () => { let mediaQueryForAutoTheme: MediaQueryList | null = null; return (mode: ThemeMode | null) => { @@ -64,9 +59,9 @@ const createSetThemeAttributeFunction = () => { }; mediaQueryForAutoTheme.addEventListener('change', handleMediaChange); const event = new Event('change'); - Object.defineProperty(event,'matches', { + Object.defineProperty(event, 'matches', { value: mediaQueryForAutoTheme.matches, - writable: false + writable: false, }); mediaQueryForAutoTheme.dispatchEvent(event); onBeforeUnmount(() => { @@ -107,13 +102,11 @@ const haddingFbars = () => { }; onMounted(() => { initTheme(); - haddingFbars() + haddingFbars(); window.addEventListener('resize', haddingFbars); }); onUnmounted(() => { window.removeEventListener('resize', haddingFbars); }); - + diff --git a/napcat.webui/src/backend/shell.ts b/napcat.webui/src/backend/shell.ts index 0819e0b8..16c69eb1 100644 --- a/napcat.webui/src/backend/shell.ts +++ b/napcat.webui/src/backend/shell.ts @@ -74,7 +74,7 @@ export class QQLoginManager { } return false; } - public async checkQQLoginStatusWithQrcode(): Promise<{ qrcodeurl: string, isLogin: string } | undefined> { + public async checkQQLoginStatusWithQrcode(): Promise<{ qrcodeurl: string; isLogin: string } | undefined> { try { const QQLoginResponse = await fetch(`${this.apiPrefix}/QQLogin/CheckLoginStatus`, { method: 'POST', diff --git a/napcat.webui/src/components/Dashboard.vue b/napcat.webui/src/components/Dashboard.vue index 3f36a20d..f8870cdd 100644 --- a/napcat.webui/src/components/Dashboard.vue +++ b/napcat.webui/src/components/Dashboard.vue @@ -20,7 +20,6 @@ interface MenuItem { route: string; } - const menuItems = ref([ { value: 'item1', icon: 'dashboard', label: '基础信息', route: '/dashboard/basic-info' }, { value: 'item3', icon: 'wifi-1', label: '网络配置', route: '/dashboard/network-config' }, @@ -28,9 +27,9 @@ const menuItems = ref([ { value: 'item5', icon: 'system-log', label: '日志查看', route: '/dashboard/log-view' }, { value: 'item6', icon: 'info-circle', label: '关于我们', route: '/dashboard/about-us' }, ]); -const menuRef=ref(null) +const menuRef = ref(null); emitter.on('sendMenu', (event) => { - emitter.emit('sendWidth',menuRef.value.offsetWidth); + emitter.emit('sendWidth', menuRef.value.offsetWidth); localStorage.setItem('menuWidth', menuRef.value.offsetWidth); }); onMounted(() => { @@ -39,7 +38,6 @@ onMounted(() => { diff --git a/napcat.webui/src/pages/network/HttpClientComponent.vue b/napcat.webui/src/pages/network/HttpClientComponent.vue index 7d275b90..901baa44 100644 --- a/napcat.webui/src/pages/network/HttpClientComponent.vue +++ b/napcat.webui/src/pages/network/HttpClientComponent.vue @@ -4,7 +4,7 @@ - + @@ -33,16 +33,17 @@ const props = defineProps<{ const messageFormatOptions = ref([ { label: 'Array', value: 'array' }, - { label: 'String', value: 'string' } + { label: 'String', value: 'string' }, ]); -watch(() => props.config.messagePostFormat, (newValue) => { - if (newValue !== 'array' && newValue !== 'string') { - props.config.messagePostFormat = 'array'; +watch( + () => props.config.messagePostFormat, + (newValue) => { + if (newValue !== 'array' && newValue !== 'string') { + props.config.messagePostFormat = 'array'; + } } -}); +); - + diff --git a/napcat.webui/src/pages/network/HttpServerComponent.vue b/napcat.webui/src/pages/network/HttpServerComponent.vue index 607e528d..9988bcc0 100644 --- a/napcat.webui/src/pages/network/HttpServerComponent.vue +++ b/napcat.webui/src/pages/network/HttpServerComponent.vue @@ -1,7 +1,7 @@
-
类型:{{ item.type }}
-
-
地址:{{ item.host }}
-
地址:{{ item.url }}
-
-
端口:{{ item.port }}
-
- 心跳间隔:{{ item.heartInterval }} -
-
-
- 心跳间隔:{{ item.heartInterval }} -
-
-
Token:{{ item.token }}
-
-
消息格式:{{ item.messagePostFormat }}
-
-
-
-
状态:
- - {{ item.enable ? '启用' : '禁用' }} -
-
-
-
调试:
- - {{ item.debug ? '开启' : '关闭' }} -
-
-
-
-
WS :
- - {{ item.enableWebsocket ? '启用' : '禁用' }} -
-
-
-
跨域:
- - {{ item.enableCors ? '开启' : '关闭' }} -
-
-
-
上报自身消息:
- - {{ item.reportSelfMessage ? '开启' : '关闭' }} -
-
-
强制推送事件:
- - {{ item.enableForcePushEvent ? '开启' : '关闭' }} -
+ + {{ item.host }} + {{ item.url }} + :{{ item.port }} +
+ + + + + + +
+ {{ showToken ? item.token : '*******' }} + + +
+
+ {{ item.messagePostFormat }} +
+
+ + + + + {{ item.debug ? '开启' : '关闭' }} + + + + {{ item.enableWebsocket ? '启用' : '禁用' }} + + + + {{ item.enableCors ? '开启' : '关闭' }} + + + + {{ item.reportSelfMessage ? '开启' : '关闭' }} + + + + {{ item.enableForcePushEvent ? '开启' : '关闭' }} + + + +
@@ -155,7 +157,7 @@ From d4fb09fa8017200223af3d47695d1464bce4f8a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 27 Nov 2024 10:57:40 +0800 Subject: [PATCH 109/418] =?UTF-8?q?fix:=20=E7=AE=80=E5=8C=96=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- napcat.webui/src/pages/NetWork.vue | 40 ++++++------------------------ 1 file changed, 8 insertions(+), 32 deletions(-) diff --git a/napcat.webui/src/pages/NetWork.vue b/napcat.webui/src/pages/NetWork.vue index 060b8390..3d1ac097 100644 --- a/napcat.webui/src/pages/NetWork.vue +++ b/napcat.webui/src/pages/NetWork.vue @@ -147,7 +147,7 @@
@@ -161,17 +161,10 @@ import { AddIcon, DeleteIcon, Edit2Icon, ServerFilledIcon, CopyIcon, BrowseOffIc import { onMounted, onUnmounted, ref, resolveDynamicComponent } from 'vue'; import emitter from '@/ts/event-bus'; import { - HttpClientConfig, - httpClientDefaultConfigs, - HttpServerConfig, - httpServerDefaultConfigs, + mergeNetworkDefaultConfig, mergeOneBotConfigs, NetworkConfig, OneBotConfig, - WebsocketClientConfig, - websocketClientDefaultConfigs, - WebsocketServerConfig, - websocketServerDefaultConfigs, } from '../../../src/onebot/config/config'; import HttpServerComponent from '@/pages/network/HttpServerComponent.vue'; import HttpClientComponent from '@/pages/network/HttpClientComponent.vue'; @@ -194,19 +187,11 @@ const loadPage = ref(false); const visibleBody = ref(false); const newTab = ref<{ name: string; data: any; type: string }>({ name: '', data: {}, type: '' }); const dialogTitle = ref(''); -type ConfigKey = 'httpServers' | 'httpClients' | 'websocketServers' | 'websocketClients'; -type ConfigUnion = HttpClientConfig | HttpServerConfig | WebsocketServerConfig | WebsocketClientConfig; - -const defaultConfigs: Record = { - httpServers: httpServerDefaultConfigs, - httpClients: httpClientDefaultConfigs, - websocketServers: websocketServerDefaultConfigs, - websocketClients: websocketClientDefaultConfigs, -}; +type ComponentKey = keyof typeof mergeNetworkDefaultConfig; const componentMap: Record< - ConfigKey, + ComponentKey, | typeof HttpServerComponent | typeof HttpClientComponent | typeof WebsocketServerComponent @@ -217,7 +202,7 @@ const componentMap: Record< websocketServers: WebsocketServerComponent, websocketClients: WebsocketClientComponent, }; -type ComponentKey = keyof typeof componentMap; + //操作类型 const operateType = ref(''); //配置项索引 @@ -299,9 +284,9 @@ const delConfig = (item: any) => { const selectType = (key: string) => { cardConfig.value = WebConfg.value.get(key); }; -const onloadDefault = (key: ConfigKey) => { +const onloadDefault = (key: ComponentKey) => { console.log(key); - newTab.value.data = structuredClone(defaultConfigs[key]); + newTab.value.data = structuredClone(mergeNetworkDefaultConfig[key]); }; //检测重名 const checkName = (name: string) => { @@ -367,7 +352,7 @@ const getAllData = (data: NetworkConfig) => { cardConfig.value = []; WebConfg.value.set('all', []); Object.entries(data).forEach(([key, configs]) => { - if (key in defaultConfigs) { + if (key in mergeNetworkDefaultConfig) { networkConfig[key] = [...configs]; const newConfigsArray = configs.map((config: any) => ({ ...config, @@ -402,15 +387,6 @@ const copyText = (text: string) => { document.body.removeChild(input); MessagePlugin.success('复制成功'); }; -const getTime = (time: number) => { - if (time < 1000) { - return time + ' 毫秒'; - } else if (time < 60000) { - return (time / 1000).toFixed(2) + ' 秒'; - } else { - return (time / 60000).toFixed(2) + ' 分钟'; - } -}; const handleResize = () => { // 得根据卡片宽度改,懒得改了;先不管了 From 0fe4911d015631a1155f4aa7ce7c405e821e971e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 27 Nov 2024 11:29:03 +0800 Subject: [PATCH 110/418] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- napcat.webui/src/pages/NetWork.vue | 157 ++++++++++++++--------------- 1 file changed, 76 insertions(+), 81 deletions(-) diff --git a/napcat.webui/src/pages/NetWork.vue b/napcat.webui/src/pages/NetWork.vue index 3d1ac097..fc878b96 100644 --- a/napcat.webui/src/pages/NetWork.vue +++ b/napcat.webui/src/pages/NetWork.vue @@ -4,17 +4,11 @@ - 添加配置 + 添加配置
- + @@ -25,13 +19,8 @@
- +
- + {{ item.host }} {{ item.url }} @@ -55,52 +43,47 @@ - - + +
{{ showToken ? item.token : '*******' }} - - + +
-
+ {{ item.messagePostFormat }}
- + - {{ item.debug ? '开启' : '关闭' }} + {{ item.debug ? '开启' : '关闭' }} - + - {{ item.enableWebsocket ? '启用' : '禁用' }} + {{ item.enableWebsocket ? '启用' : '禁用' }} - {{ item.enableCors ? '开启' : '关闭' }} + {{ item.enableCors ? '开启' : '关闭' }} - + - {{ item.reportSelfMessage ? '开启' : '关闭' }} + {{ item.reportSelfMessage ? '开启' : '关闭' }} - - - {{ item.enableForcePushEvent ? '开启' : '关闭' }} + + + {{ item.enableForcePushEvent ? '开启' : '关闭' }} @@ -114,30 +97,16 @@
暂无网络配置
- +
- + - + HTTP 服务器 HTTP 客户端 @@ -146,10 +115,8 @@
- +
@@ -239,7 +206,7 @@ interface TypeChType { websocketServers: string; websocketClients: string; } -const typeCh: TypeChType = { +const typeCh: Record = { httpServers: 'HTTP 服务器', httpClients: 'HTTP 客户端', websocketServers: 'WebSocket 服务器', @@ -281,9 +248,11 @@ const delConfig = (item: any) => { operateType.value = 'delete'; saveConfig(); }; -const selectType = (key: string) => { + +const selectType = (key: ComponentKey) => { cardConfig.value = WebConfg.value.get(key); }; + const onloadDefault = (key: ComponentKey) => { console.log(key); newTab.value.data = structuredClone(mergeNetworkDefaultConfig[key]); @@ -347,16 +316,18 @@ const setOB11Config = async (config: OneBotConfig): Promise => { const loginManager = new QQLoginManager(storedCredential); return await loginManager.SetOB11Config(config); }; + //获取卡片数据 const getAllData = (data: NetworkConfig) => { cardConfig.value = []; WebConfg.value.set('all', []); - Object.entries(data).forEach(([key, configs]) => { + for (const key in data) { + const configs = data[key as keyof NetworkConfig]; if (key in mergeNetworkDefaultConfig) { networkConfig[key] = [...configs]; const newConfigsArray = configs.map((config: any) => ({ ...config, - type: typeCh[key], + type: typeCh[key as ComponentKey], })); WebConfg.value.set(key, newConfigsArray); const allConfigs = WebConfg.value.get('all'); @@ -366,8 +337,9 @@ const getAllData = (data: NetworkConfig) => { } cardConfig.value = WebConfg.value.get('all'); } - }); + } }; + const loadConfig = async () => { try { const userConfig = await getOB11Config(); @@ -378,12 +350,13 @@ const loadConfig = async () => { console.error('Error loading config:', error); } }; -const copyText = (text: string) => { + +const copyText = async (text: string) => { const input = document.createElement('input'); input.value = text; document.body.appendChild(input); input.select(); - document.execCommand('copy'); + await navigator.clipboard.writeText(text); document.body.removeChild(input); MessagePlugin.success('复制成功'); }; @@ -440,6 +413,7 @@ onUnmounted(() => { .setting { margin: 0 20px; } + .setting-box { display: grid; grid-template-columns: 1fr 1fr 1fr; @@ -450,19 +424,23 @@ onUnmounted(() => { .setting-card { width: 100%; } + .setting-content { width: 100%; text-align: left; } + .card-address svg { fill: var(--td-brand-color); margin-right: 10px; cursor: pointer; } + .setting-address { display: flex; margin-top: 2px; } + .local { flex: 5.5; margin-bottom: 1px; @@ -470,9 +448,11 @@ onUnmounted(() => { overflow: hidden; text-overflow: ellipsis; } + .none-box { flex: 0.5; } + .port { flex: 4; margin-top: 1px; @@ -480,23 +460,28 @@ onUnmounted(() => { overflow: hidden; text-overflow: ellipsis; } + .setting-status { display: flex; margin-top: 2px; } + .status-deBug { display: flex; flex: 4; } + .status-tag { display: flex; flex: 5.5; } + .token-view { display: flex; flex-direction: row; align-items: center; } + .token-view span { flex: 1; margin-right: 20%; @@ -512,6 +497,7 @@ onUnmounted(() => { .setting-box { grid-template-columns: 1fr; } + .setting-address { display: block; } @@ -520,6 +506,7 @@ onUnmounted(() => { .card-box { margin: 10px 20px 0 20px; } + .card-none { line-height: 200px; } @@ -527,10 +514,12 @@ onUnmounted(() => { .card-noneText { font-size: 16px; } + .dialog-body { max-height: 60vh; overflow-y: auto; } + ::-webkit-scrollbar { width: 0; background: transparent; @@ -540,25 +529,31 @@ onUnmounted(() => { .setting-card .t-card__title { text-align: left !important; } + .setting-card .t-card__description { margin-bottom: 0; font-size: 12px; } + .card-address .t-card__body { display: flex; flex-direction: row; align-items: center; } + .setting-base-info .t-descriptions__header { font-size: 15px; margin-bottom: 0; } + .setting-base-info .t-descriptions__label { padding: 0 var(--td-comp-paddingLR-l) !important; } -.setting-base-info tr > td:last-child { + +.setting-base-info tr>td:last-child { text-align: right; } + .info-coll .t-collapse-panel__wrapper .t-collapse-panel__content { padding: var(--td-comp-paddingTB-m) var(--td-comp-paddingLR-l); } From e9fcdc7d2eaf452c05d8f58ba6b7363923767a8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 27 Nov 2024 11:35:51 +0800 Subject: [PATCH 111/418] =?UTF-8?q?feat:=20=E7=AE=80=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- napcat.webui/src/pages/NetWork.vue | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/napcat.webui/src/pages/NetWork.vue b/napcat.webui/src/pages/NetWork.vue index fc878b96..ca0c8e8b 100644 --- a/napcat.webui/src/pages/NetWork.vue +++ b/napcat.webui/src/pages/NetWork.vue @@ -175,14 +175,7 @@ const operateType = ref(''); //配置项索引 const configIndex = ref(0); //保存时所用数据 -interface NetworkConfigType { - [key: string]: any; - websocketClients: any[]; - websocketServers: any[]; - httpClients: any[]; - httpServers: any[]; -} -const networkConfig: NetworkConfigType = { +const networkConfig: NetworkConfig & { [key: string]: any; } = { websocketClients: [], websocketServers: [], httpClients: [], @@ -199,22 +192,12 @@ const WebConfg = ref( ['websocketClients', []], ]) ); -interface TypeChType { - [key: string]: string; - httpServers: string; - httpClients: string; - websocketServers: string; - websocketClients: string; -} const typeCh: Record = { httpServers: 'HTTP 服务器', httpClients: 'HTTP 客户端', websocketServers: 'WebSocket 服务器', websocketClients: 'WebSocket 客户端', }; -const getKeyByValue = (obj: TypeChType, value: string): string | undefined => { - return Object.entries(obj).find(([_, v]) => v === value)?.[0]; -}; const cardConfig = ref([]); const getComponent = (type: ComponentKey) => { return componentMap[type]; @@ -229,7 +212,7 @@ const addConfig = () => { const editConfig = (item: any) => { dialogTitle.value = '修改配置'; - const type = getKeyByValue(typeCh, item.type); + const type = typeCh[item.type as ComponentKey] ?? ''; if (type) { newTab.value = { name: item.name, data: item, type: type }; } @@ -238,7 +221,7 @@ const editConfig = (item: any) => { visibleBody.value = true; }; const delConfig = (item: any) => { - const type = getKeyByValue(typeCh, item.type); + const type = typeCh[item.type as ComponentKey] ?? ''; if (type) { newTab.value = { name: item.name, data: item, type: type }; } From fd26d34e19a4766436af34092a567e633795d5d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 27 Nov 2024 12:20:30 +0800 Subject: [PATCH 112/418] fix --- napcat.webui/src/pages/NetWork.vue | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/napcat.webui/src/pages/NetWork.vue b/napcat.webui/src/pages/NetWork.vue index ca0c8e8b..db6f2afe 100644 --- a/napcat.webui/src/pages/NetWork.vue +++ b/napcat.webui/src/pages/NetWork.vue @@ -148,8 +148,8 @@ const cardWidth = ref(0); const cardHeight = ref(0); const mediumScreen = window.matchMedia('(min-width: 768px) and (max-width: 1024px)'); const largeScreen = window.matchMedia('(min-width: 1025px)'); -const headerBox = ref(null); -const setting = ref(null); +const headerBox = ref(null); +const setting = ref(null); const loadPage = ref(false); const visibleBody = ref(false); const newTab = ref<{ name: string; data: any; type: string }>({ name: '', data: {}, type: '' }); @@ -202,6 +202,9 @@ const cardConfig = ref([]); const getComponent = (type: ComponentKey) => { return componentMap[type]; }; +const getKeyByValue = (obj: typeof typeCh, value: string): string | undefined => { + return Object.entries(obj).find(([_, v]) => v === value)?.[0]; +}; const addConfig = () => { dialogTitle.value = '添加配置'; @@ -212,7 +215,7 @@ const addConfig = () => { const editConfig = (item: any) => { dialogTitle.value = '修改配置'; - const type = typeCh[item.type as ComponentKey] ?? ''; + const type = getKeyByValue(typeCh, item.type); if (type) { newTab.value = { name: item.name, data: item, type: type }; } @@ -221,7 +224,7 @@ const editConfig = (item: any) => { visibleBody.value = true; }; const delConfig = (item: any) => { - const type = typeCh[item.type as ComponentKey] ?? ''; + const type = getKeyByValue(typeCh, item.type); if (type) { newTab.value = { name: item.name, data: item, type: type }; } @@ -361,7 +364,7 @@ const handleResize = () => { } loadPage.value = true; setTimeout(() => { - cardHeight.value = window.innerHeight - headerBox.value.offsetHeight - setting.value.offsetHeight - 20; + cardHeight.value = window.innerHeight - (headerBox.value?.offsetHeight ?? 0) - (setting.value?.offsetHeight?? 0) - 20; }, 300); }; emitter.on('sendWidth', (width) => { From 788da4e4f1c59029a7cd03ec0a3b00b39fef1f77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 27 Nov 2024 12:25:37 +0800 Subject: [PATCH 113/418] style --- napcat.webui/src/pages/NetWork.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/napcat.webui/src/pages/NetWork.vue b/napcat.webui/src/pages/NetWork.vue index db6f2afe..7f067680 100644 --- a/napcat.webui/src/pages/NetWork.vue +++ b/napcat.webui/src/pages/NetWork.vue @@ -215,7 +215,7 @@ const addConfig = () => { const editConfig = (item: any) => { dialogTitle.value = '修改配置'; - const type = getKeyByValue(typeCh, item.type); + const type = getKeyByValue(typeCh, item.type); if (type) { newTab.value = { name: item.name, data: item, type: type }; } @@ -224,7 +224,7 @@ const editConfig = (item: any) => { visibleBody.value = true; }; const delConfig = (item: any) => { - const type = getKeyByValue(typeCh, item.type); + const type = getKeyByValue(typeCh, item.type); if (type) { newTab.value = { name: item.name, data: item, type: type }; } @@ -364,7 +364,7 @@ const handleResize = () => { } loadPage.value = true; setTimeout(() => { - cardHeight.value = window.innerHeight - (headerBox.value?.offsetHeight ?? 0) - (setting.value?.offsetHeight?? 0) - 20; + cardHeight.value = window.innerHeight - (headerBox.value?.offsetHeight ?? 0) - (setting.value?.offsetHeight ?? 0) - 20; }, 300); }; emitter.on('sendWidth', (width) => { From 6a3713e86c0fdc5f28b6d25b43f879537c6657bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 27 Nov 2024 12:35:10 +0800 Subject: [PATCH 114/418] fix: webui reload --- src/onebot/index.ts | 196 ++++++++++++++++++++++---------------------- 1 file changed, 98 insertions(+), 98 deletions(-) diff --git a/src/onebot/index.ts b/src/onebot/index.ts index 9e252d98..4964da34 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -195,6 +195,16 @@ export class NapCatOneBot11Adapter { nowConfig: NetworkConfigAdapter[], adapterClass: new (...args: any[]) => IOB11NetworkAdapter ): Promise { + // 比较旧的在新的找不到的回收 + for (const adapterConfig of prevConfig) { + const existingAdapter = nowConfig.find((e) => e.name === adapterConfig.name); + if (!existingAdapter) { + const existingAdapter = this.networkManager.findSomeAdapter(adapterConfig.name); + if (existingAdapter) { + await this.networkManager.closeSomeAdaterWhenOpen([existingAdapter]); + } + } + } // 通知新配置重载 删除关闭的 加入新开的 for (const adapterConfig of nowConfig) { const existingAdapter = this.networkManager.findSomeAdapter(adapterConfig.name); @@ -203,21 +213,11 @@ export class NapCatOneBot11Adapter { if (networkChange === OB11NetworkReloadType.NetWorkClose) { await this.networkManager.closeSomeAdaterWhenOpen([existingAdapter]); } - } else { + } else if(adapterConfig.enable) { const newAdapter = new adapterClass(adapterConfig.name, adapterConfig, this.core, this.actions); await this.networkManager.registerAdapterAndOpen(newAdapter); } } - // 比较旧的找不到的回收 - for (const adapterConfig of prevConfig) { - const existingAdapter = nowConfig.find((e) => e.name === adapterConfig.name); - if (!existingAdapter) { - const existingAdapter = this.networkManager.findSomeAdapter(adapterConfig.name); - if (existingAdapter) { - await this.networkManager.closeSomeAdaterWhenOpen([existingAdapter]); - } - } - } } private initMsgListener() { @@ -406,104 +406,104 @@ export class NapCatOneBot11Adapter { this.core.apis.GroupApi.getGroup(notify.group.groupCode) ); } - } else - // if ( - // notify.type == GroupNotifyMsgType.MEMBER_LEAVE_NOTIFY_ADMIN || - // notify.type == GroupNotifyMsgType.KICK_MEMBER_NOTIFY_ADMIN - // ) { - // this.context.logger.logDebug('有成员退出通知', notify); - // const member1Uin = await this.core.apis.UserApi.getUinByUidV2(notify.user1.uid); - // let operatorId = member1Uin; - // let subType: GroupDecreaseSubType = 'leave'; - // if (notify.user2.uid) { - // // 是被踢的 - // const member2Uin = await this.core.apis.UserApi.getUinByUidV2(notify.user2.uid); - // if (member2Uin) { - // operatorId = member2Uin; - // } - // subType = 'kick'; - // } - // const groupDecreaseEvent = new OB11GroupDecreaseEvent( - // this.core, - // parseInt(notify.group.groupCode), - // parseInt(member1Uin), - // parseInt(operatorId), - // subType - // ); - // this.networkManager - // .emitEvent(groupDecreaseEvent) - // .catch((e) => - // this.context.logger.logError.bind(this.context.logger)('处理群成员退出失败', e) - // ); - // // notify.status == 1 表示未处理 2表示处理完成 - // } else - if ( - [GroupNotifyMsgType.REQUEST_JOIN_NEED_ADMINI_STRATOR_PASS].includes(notify.type) && - notify.status == GroupNotifyMsgStatus.KUNHANDLE - ) { - this.context.logger.logDebug('有加群请求'); - try { - let requestUin = await this.core.apis.UserApi.getUinByUidV2(notify.user1.uid); - if (isNaN(parseInt(requestUin))) { - requestUin = (await this.core.apis.UserApi.getUserDetailInfo(notify.user1.uid)).uin; + } else + // if ( + // notify.type == GroupNotifyMsgType.MEMBER_LEAVE_NOTIFY_ADMIN || + // notify.type == GroupNotifyMsgType.KICK_MEMBER_NOTIFY_ADMIN + // ) { + // this.context.logger.logDebug('有成员退出通知', notify); + // const member1Uin = await this.core.apis.UserApi.getUinByUidV2(notify.user1.uid); + // let operatorId = member1Uin; + // let subType: GroupDecreaseSubType = 'leave'; + // if (notify.user2.uid) { + // // 是被踢的 + // const member2Uin = await this.core.apis.UserApi.getUinByUidV2(notify.user2.uid); + // if (member2Uin) { + // operatorId = member2Uin; + // } + // subType = 'kick'; + // } + // const groupDecreaseEvent = new OB11GroupDecreaseEvent( + // this.core, + // parseInt(notify.group.groupCode), + // parseInt(member1Uin), + // parseInt(operatorId), + // subType + // ); + // this.networkManager + // .emitEvent(groupDecreaseEvent) + // .catch((e) => + // this.context.logger.logError.bind(this.context.logger)('处理群成员退出失败', e) + // ); + // // notify.status == 1 表示未处理 2表示处理完成 + // } else + if ( + [GroupNotifyMsgType.REQUEST_JOIN_NEED_ADMINI_STRATOR_PASS].includes(notify.type) && + notify.status == GroupNotifyMsgStatus.KUNHANDLE + ) { + this.context.logger.logDebug('有加群请求'); + try { + let requestUin = await this.core.apis.UserApi.getUinByUidV2(notify.user1.uid); + if (isNaN(parseInt(requestUin))) { + requestUin = (await this.core.apis.UserApi.getUserDetailInfo(notify.user1.uid)).uin; + } + const groupRequestEvent = new OB11GroupRequestEvent( + this.core, + parseInt(notify.group.groupCode), + parseInt(requestUin), + 'add', + notify.postscript, + flag + ); + this.networkManager + .emitEvent(groupRequestEvent) + .catch((e) => + this.context.logger.logError.bind(this.context.logger)('处理加群请求失败', e) + ); + } catch (e) { + this.context.logger.logError.bind(this.context.logger)( + '获取加群人QQ号失败 Uid:', + notify.user1.uid, + e + ); } - const groupRequestEvent = new OB11GroupRequestEvent( + } else if ( + notify.type == GroupNotifyMsgType.INVITED_BY_MEMBER && + notify.status == GroupNotifyMsgStatus.KUNHANDLE + ) { + this.context.logger.logDebug(`收到邀请我加群通知:${notify}`); + const groupInviteEvent = new OB11GroupRequestEvent( this.core, parseInt(notify.group.groupCode), - parseInt(requestUin), + parseInt(await this.core.apis.UserApi.getUinByUidV2(notify.user2.uid)), + 'invite', + notify.postscript, + flag + ); + this.networkManager + .emitEvent(groupInviteEvent) + .catch((e) => + this.context.logger.logError.bind(this.context.logger)('处理邀请本人加群失败', e) + ); + } else if ( + notify.type == GroupNotifyMsgType.INVITED_NEED_ADMINI_STRATOR_PASS && + notify.status == GroupNotifyMsgStatus.KUNHANDLE + ) { + this.context.logger.logDebug(`收到群员邀请加群通知:${notify}`); + const groupInviteEvent = new OB11GroupRequestEvent( + this.core, + parseInt(notify.group.groupCode), + parseInt(await this.core.apis.UserApi.getUinByUidV2(notify.user1.uid)), 'add', notify.postscript, flag ); this.networkManager - .emitEvent(groupRequestEvent) + .emitEvent(groupInviteEvent) .catch((e) => - this.context.logger.logError.bind(this.context.logger)('处理加群请求失败', e) + this.context.logger.logError.bind(this.context.logger)('处理邀请本人加群失败', e) ); - } catch (e) { - this.context.logger.logError.bind(this.context.logger)( - '获取加群人QQ号失败 Uid:', - notify.user1.uid, - e - ); } - } else if ( - notify.type == GroupNotifyMsgType.INVITED_BY_MEMBER && - notify.status == GroupNotifyMsgStatus.KUNHANDLE - ) { - this.context.logger.logDebug(`收到邀请我加群通知:${notify}`); - const groupInviteEvent = new OB11GroupRequestEvent( - this.core, - parseInt(notify.group.groupCode), - parseInt(await this.core.apis.UserApi.getUinByUidV2(notify.user2.uid)), - 'invite', - notify.postscript, - flag - ); - this.networkManager - .emitEvent(groupInviteEvent) - .catch((e) => - this.context.logger.logError.bind(this.context.logger)('处理邀请本人加群失败', e) - ); - } else if ( - notify.type == GroupNotifyMsgType.INVITED_NEED_ADMINI_STRATOR_PASS && - notify.status == GroupNotifyMsgStatus.KUNHANDLE - ) { - this.context.logger.logDebug(`收到群员邀请加群通知:${notify}`); - const groupInviteEvent = new OB11GroupRequestEvent( - this.core, - parseInt(notify.group.groupCode), - parseInt(await this.core.apis.UserApi.getUinByUidV2(notify.user1.uid)), - 'add', - notify.postscript, - flag - ); - this.networkManager - .emitEvent(groupInviteEvent) - .catch((e) => - this.context.logger.logError.bind(this.context.logger)('处理邀请本人加群失败', e) - ); - } } } }; From 182cccfc71d1abe0335d3004818fadb6ff327d58 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Nov 2024 08:32:10 +0000 Subject: [PATCH 115/418] chore(deps-dev): bump vite from 5.4.11 to 6.0.1 Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.11 to 6.0.1. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/create-vite@6.0.1/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ab194dca..7d183235 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "json-schema-to-ts": "^3.1.1", "typescript": "^5.3.3", "typescript-eslint": "^8.13.0", - "vite": "^5.2.6", + "vite": "^6.0.1", "vite-plugin-cp": "^4.0.8", "vite-tsconfig-paths": "^5.1.0", "winston": "^3.17.0" From 1ea80f4447eaf3ba2631d5dca30965d0cb26987f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BA=B8=E5=87=A4=E5=AD=A4=E5=87=B0?= <3100542635@qq.com> Date: Wed, 27 Nov 2024 18:16:16 +0800 Subject: [PATCH 116/418] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8Dwebui=E5=B7=B2?= =?UTF-8?q?=E7=9F=A5bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- napcat.webui/src/App.vue | 6 +- napcat.webui/src/main.ts | 2 + napcat.webui/src/pages/NetWork.vue | 110 ++++++++++++++--------------- 3 files changed, 57 insertions(+), 61 deletions(-) diff --git a/napcat.webui/src/App.vue b/napcat.webui/src/App.vue index b9fb5e52..d26b9165 100644 --- a/napcat.webui/src/App.vue +++ b/napcat.webui/src/App.vue @@ -35,9 +35,9 @@ enum ThemeMode { Auto = 'auto', } const themeLabelMap: Record = { - 浅色: ThemeMode.Light, - 深色: ThemeMode.Dark, - 自动: ThemeMode.Auto, + "浅色": ThemeMode.Light, + "深色": ThemeMode.Dark, + "自动": ThemeMode.Auto, }; const show = ref(true); const createSetThemeAttributeFunction = () => { diff --git a/napcat.webui/src/main.ts b/napcat.webui/src/main.ts index 1155759a..0236749d 100644 --- a/napcat.webui/src/main.ts +++ b/napcat.webui/src/main.ts @@ -39,6 +39,7 @@ import { Footer as TFooter, Aside as TAside, Popconfirm as Tpopconfirm, + Empty as TEmpty, } from 'tdesign-vue-next'; import { router } from './router'; import 'tdesign-vue-next/es/style/index.css'; @@ -82,4 +83,5 @@ app.use(TContent); app.use(TFooter); app.use(TAside); app.use(Tpopconfirm); +app.use(TEmpty); app.mount('#app'); diff --git a/napcat.webui/src/pages/NetWork.vue b/napcat.webui/src/pages/NetWork.vue index 7f067680..3fce5bd1 100644 --- a/napcat.webui/src/pages/NetWork.vue +++ b/napcat.webui/src/pages/NetWork.vue @@ -35,25 +35,37 @@ 'var(--td-success-color)' : 'var(--td-error-color)') }"> - - {{ item.host }} - {{ item.url }} - :{{ item.port }} -
- +
+ + {{ item.host }}:{{ item.port }} + +
+
+ + {{ item.url }} + +
-
- {{ showToken ? item.token : '*******' }} - + {{ showToken ? item.token : '******' }} + -
+
+ + 点击查看 + + +
{{ item.messagePostFormat }}
@@ -61,7 +73,7 @@ - + {{ item.debug ? '开启' : '关闭' }} @@ -93,13 +105,13 @@
- -
暂无网络配置
+ +
-
+ :show-in-attached-element="true" placement="center" :on-confirm="saveConfig" class=".t-dialog__ctx .t-dialog--defaul"> +
@@ -354,7 +366,7 @@ const handleResize = () => { // } else { // infoOneCol.value= false // } - tabsWidth.value = window.innerWidth - 40 - menuWidth.value; + tabsWidth.value = window.innerWidth - 41 - menuWidth.value; if (mediumScreen.matches) { cardWidth.value = (tabsWidth.value - 20) / 2; } else if (largeScreen.matches) { @@ -364,7 +376,7 @@ const handleResize = () => { } loadPage.value = true; setTimeout(() => { - cardHeight.value = window.innerHeight - (headerBox.value?.offsetHeight ?? 0) - (setting.value?.offsetHeight ?? 0) - 20; + cardHeight.value = window.innerHeight - (headerBox.value?.offsetHeight ?? 0) - (setting.value?.offsetHeight ?? 0) - 21; }, 300); }; emitter.on('sendWidth', (width) => { @@ -409,70 +421,58 @@ onUnmounted(() => { .setting-card { width: 100%; + text-align: left; } .setting-content { width: 100%; - text-align: left; } .card-address svg { fill: var(--td-brand-color); - margin-right: 10px; cursor: pointer; } -.setting-address { +.local-box { display: flex; margin-top: 2px; } - +.local-icon{ + flex: 1; +} .local { - flex: 5.5; - margin-bottom: 1px; + flex: 6; + margin: 0 10px 0 10px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } -.none-box { - flex: 0.5; + +.copy-icon { + flex: 1; + cursor: pointer; + flex-direction: row; } -.port { - flex: 4; - margin-top: 1px; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.setting-status { - display: flex; - margin-top: 2px; -} - -.status-deBug { - display: flex; - flex: 4; -} - -.status-tag { - display: flex; - flex: 5.5; -} .token-view { display: flex; - flex-direction: row; align-items: center; } .token-view span { - flex: 1; - margin-right: 20%; + flex: 5; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +.browse-icon{ + flex: 2; +} +:global(.t-dialog__ctx .t-dialog--defaul) { + margin: 0 20px; } - @media (max-width: 1024px) { .setting-box { grid-template-columns: 1fr 1fr; @@ -484,9 +484,6 @@ onUnmounted(() => { grid-template-columns: 1fr; } - .setting-address { - display: block; - } } .card-box { @@ -494,12 +491,9 @@ onUnmounted(() => { } .card-none { - line-height: 200px; + line-height: 400px !important; } -.card-noneText { - font-size: 16px; -} .dialog-body { max-height: 60vh; From b53ebb6c2a1180f9eb0610d4aae9ec6b1d08d8b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 27 Nov 2024 18:34:33 +0800 Subject: [PATCH 117/418] refactor: parse local path --- src/common/file.ts | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/common/file.ts b/src/common/file.ts index 5fa19f05..487325ae 100644 --- a/src/common/file.ts +++ b/src/common/file.ts @@ -182,7 +182,6 @@ export enum FileUriType { } export async function checkUriType(Uri: string) { - const LocalFileRet = await solveProblem((uri: string) => { if (fs.existsSync(uri)) { return { Uri: uri, Type: FileUriType.Local }; @@ -200,14 +199,7 @@ export async function checkUriType(Uri: string) { return { Uri: uri, Type: FileUriType.Base64 }; } if (uri.startsWith('file://')) { - let filePath: string; - const pathname = decodeURIComponent(new URL(uri).pathname + new URL(uri).hash); - if (process.platform === 'win32') { - filePath = pathname.slice(1); - } else { - filePath = pathname; - } - + let filePath: string = uri.slice(7); return { Uri: filePath, Type: FileUriType.Local }; } if (uri.startsWith('data:')) { @@ -222,14 +214,16 @@ export async function checkUriType(Uri: string) { export async function uri2local(dir: string, uri: string, filename: string | undefined = undefined): Promise { const { Uri: HandledUri, Type: UriType } = await checkUriType(uri); + //解析失败 const tempName = randomUUID(); if (!filename) filename = randomUUID(); - //解析Http和Https协议 + //解析Http和Https协议 if (UriType == FileUriType.Unknown) { return { success: false, errMsg: `未知文件类型, uri= ${uri}`, fileName: '', ext: '', path: '' }; } + //解析File协议和本地文件 if (UriType == FileUriType.Local) { const fileExt = path.extname(HandledUri); @@ -241,8 +235,8 @@ export async function uri2local(dir: string, uri: string, filename: string | und fs.copyFileSync(HandledUri, filePath); return { success: true, errMsg: '', fileName: filename, ext: fileExt, path: filePath }; } + //接下来都要有文件名 - if (UriType == FileUriType.Remote) { const pathInfo = path.parse(decodeURIComponent(new URL(HandledUri).pathname)); if (pathInfo.name) { @@ -260,6 +254,7 @@ export async function uri2local(dir: string, uri: string, filename: string | und fs.writeFileSync(filePath, buffer, { flag: 'wx' }); return { success: true, errMsg: '', fileName: filename, ext: fileExt, path: filePath }; } + //解析Base64 if (UriType == FileUriType.Base64) { const base64 = HandledUri.replace(/^base64:\/\//, ''); From 38bdca2409186c6fadbc2e332a032a21368656fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 27 Nov 2024 18:51:54 +0800 Subject: [PATCH 118/418] fix: qrcode login --- napcat.webui/src/components/QQLogin.vue | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/napcat.webui/src/components/QQLogin.vue b/napcat.webui/src/components/QQLogin.vue index e1e4eccb..a5e27c72 100644 --- a/napcat.webui/src/components/QQLogin.vue +++ b/napcat.webui/src/components/QQLogin.vue @@ -58,6 +58,9 @@ let qrcodeUrl: string = ''; const selectAccount = async (accountName: string): Promise => { const { result, errMsg } = await qqLoginManager.setQuickLogin(accountName); if (result) { + if (heartBeatTimer) { + clearInterval(heartBeatTimer); + } await MessagePlugin.success('登录成功即将跳转'); await router.push({ path: '/dashboard/basic-info' }); } else { @@ -85,10 +88,11 @@ const HeartBeat = async (): Promise => { if (heartBeatTimer) { clearInterval(heartBeatTimer); } - //判断是否已经调转 - if (router.currentRoute.value.path !== '/dashboard/basic-info') { - return; - } + // //判断是否已经调转 + // if (router.currentRoute.value.path !== '/dashboard/basic-info') { + // return; + // } + await MessagePlugin.success('登录成功即将跳转'); await router.push({ path: '/dashboard/basic-info' }); } else if (isLogined?.qrcodeurl && qrcodeUrl !== isLogined.qrcodeurl) { qrcodeUrl = isLogined.qrcodeurl; From 900027a6b7142b5aed038c6ac8fcc2bfc072e7f7 Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Wed, 27 Nov 2024 10:55:36 +0000 Subject: [PATCH 119/418] release: v4.2.0 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 02ccb129..973d1075 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.1.21", + "version": "4.2.0", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 23b32f27..ded25dca 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.1.21", + "version": "4.2.0", "scripts": { "build:framework": "npm run build:webui && vite build --mode framework || exit 1", "build:shell": "npm run build:webui && vite build --mode shell || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index 7ad19fa9..7c6b7afe 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.1.21'; +export const napCatVersion = '4.2.0'; From 6e336fa78ef864d3344f66e938077b07deda5cf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 27 Nov 2024 19:07:01 +0800 Subject: [PATCH 120/418] =?UTF-8?q?fix:=20=E5=90=88=E5=B9=B6=E4=B8=A2?= =?UTF-8?q?=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- napcat.webui/src/pages/OtherConfig.vue | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/napcat.webui/src/pages/OtherConfig.vue b/napcat.webui/src/pages/OtherConfig.vue index 76bf7c84..69173147 100644 --- a/napcat.webui/src/pages/OtherConfig.vue +++ b/napcat.webui/src/pages/OtherConfig.vue @@ -12,6 +12,9 @@ + + +
保存 @@ -30,6 +33,7 @@ import { QQLoginManager } from '@/backend/shell'; const otherConfig = ref>({ musicSignUrl: '', enableLocalFile2Url: false, + parseMultMsg: true }); const labelAlign = ref(); @@ -59,6 +63,7 @@ const loadConfig = async () => { if (userConfig) { otherConfig.value.musicSignUrl = userConfig.musicSignUrl; otherConfig.value.enableLocalFile2Url = userConfig.enableLocalFile2Url; + otherConfig.value.parseMultMsg = userConfig.parseMultMsg; } } catch (error) { console.error('Error loading config:', error); @@ -71,6 +76,7 @@ const saveConfig = async () => { if (userConfig) { userConfig.musicSignUrl = otherConfig.value.musicSignUrl || ''; userConfig.enableLocalFile2Url = otherConfig.value.enableLocalFile2Url ?? false; + userConfig.parseMultMsg = otherConfig.value.parseMultMsg ?? true; const success = await setOB11Config(userConfig); if (success) { MessagePlugin.success('配置保存成功'); From f2ee97388299c8dcc56f446b01161a23c75f41e9 Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Wed, 27 Nov 2024 11:07:43 +0000 Subject: [PATCH 121/418] release: v4.2.1 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 973d1075..98ff61a9 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.0", + "version": "4.2.1", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index ded25dca..31fc7b96 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.0", + "version": "4.2.1", "scripts": { "build:framework": "npm run build:webui && vite build --mode framework || exit 1", "build:shell": "npm run build:webui && vite build --mode shell || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index 7c6b7afe..8ae0a888 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.0'; +export const napCatVersion = '4.2.1'; From 40e105994a04d0af40b8789815b5776568dc4eb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 27 Nov 2024 20:38:39 +0800 Subject: [PATCH 122/418] fix: pic size --- src/core/helper/msg.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/core/helper/msg.ts b/src/core/helper/msg.ts index dd910bef..e1d3992e 100644 --- a/src/core/helper/msg.ts +++ b/src/core/helper/msg.ts @@ -3,12 +3,12 @@ import { PicType } from '../types'; export async function getFileTypeForSendType(picPath: string): Promise { const fileTypeResult = (await fileType.fileTypeFromFile(picPath))?.ext ?? 'jpg'; const picTypeMap: { [key: string]: PicType } = { - 'webp': PicType.NEWPIC_WEBP, + //'webp': PicType.NEWPIC_WEBP, 'gif': PicType.NEWPIC_GIF, - 'png': PicType.NEWPIC_APNG, - 'jpg': PicType.NEWPIC_JPEG, - 'jpeg': PicType.NEWPIC_JPEG, - 'bmp': PicType.NEWPIC_BMP, + // 'png': PicType.NEWPIC_APNG, + // 'jpg': PicType.NEWPIC_JPEG, + // 'jpeg': PicType.NEWPIC_JPEG, + // 'bmp': PicType.NEWPIC_BMP, }; return picTypeMap[fileTypeResult] ?? PicType.NEWPIC_JPEG; } \ No newline at end of file From 3642c65e8c08f1368c553e778eb27450f93240dc Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Wed, 27 Nov 2024 12:39:03 +0000 Subject: [PATCH 123/418] release: v4.2.2 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 98ff61a9..24f2ea79 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.1", + "version": "4.2.2", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 31fc7b96..f9cc7072 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.1", + "version": "4.2.2", "scripts": { "build:framework": "npm run build:webui && vite build --mode framework || exit 1", "build:shell": "npm run build:webui && vite build --mode shell || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index 8ae0a888..cab945f8 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.1'; +export const napCatVersion = '4.2.2'; From 1dcf2ef0c6e19b2c365a597d3c3d4e0fb66db200 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 28 Nov 2024 09:53:50 +0800 Subject: [PATCH 124/418] fix: error handle --- src/onebot/index.ts | 43 +++++++++++++++++++++++++------------------ 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/src/onebot/index.ts b/src/onebot/index.ts index 4964da34..856e7821 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -213,7 +213,7 @@ export class NapCatOneBot11Adapter { if (networkChange === OB11NetworkReloadType.NetWorkClose) { await this.networkManager.closeSomeAdaterWhenOpen([existingAdapter]); } - } else if(adapterConfig.enable) { + } else if (adapterConfig.enable) { const newAdapter = new adapterClass(adapterConfig.name, adapterConfig, this.core, this.actions); await this.networkManager.registerAdapterAndOpen(newAdapter); } @@ -266,23 +266,30 @@ export class NapCatOneBot11Adapter { }; msgListener.onAddSendMsg = async (msg) => { - if (msg.sendStatus == SendStatusType.KSEND_STATUS_SENDING) { - await this.core.eventWrapper.registerListen('NodeIKernelMsgListener/onMsgInfoListUpdate', (msgList: RawMessage[]) => { - const report = msgList.find((e) => - e.senderUin == this.core.selfInfo.uin && e.sendStatus == SendStatusType.KSEND_STATUS_SUCCESS && e.msgId === msg.msgId - ); - return !!report; - }, 1, 300); - msg.id = MessageUnique.createUniqueMsgId( - { - chatType: msg.chatType, - peerUid: msg.peerUid, - guildId: '', - }, - msg.msgId - ); - //此时上报的seq不是对的 不过对onebot业务无影响 - this.emitMsg(msg); + try { + if (msg.sendStatus == SendStatusType.KSEND_STATUS_SENDING) { + const [updatemsgs] = await this.core.eventWrapper.registerListen('NodeIKernelMsgListener/onMsgInfoListUpdate', (msgList: RawMessage[]) => { + const report = msgList.find((e) => + e.senderUin == this.core.selfInfo.uin && e.sendStatus !== SendStatusType.KSEND_STATUS_SENDING && e.msgId === msg.msgId + ); + return !!report; + }, 1, 10 * 60 * 1000); + // 10分钟 超时 + const updatemsg = updatemsgs.find((e) => e.msgId === msg.msgId); + if (updatemsg?.sendStatus == SendStatusType.KSEND_STATUS_SUCCESS || updatemsg?.sendStatus == SendStatusType.KSEND_STATUS_SUCCESS_NOSEQ) { + updatemsg.id = MessageUnique.createUniqueMsgId( + { + chatType: updatemsg.chatType, + peerUid: updatemsg.peerUid, + guildId: '', + }, + updatemsg.msgId + ); + this.emitMsg(updatemsg); + } + } + } catch (error) { + this.context.logger.logError('处理发送消息失败', error); } }; msgListener.onMsgRecall = async (chatType: ChatType, uid: string, msgSeq: string) => { From 4576354c51f1f37c2fcd1a4e35edd930f3b58bc6 Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Thu, 28 Nov 2024 01:54:43 +0000 Subject: [PATCH 125/418] release: v4.2.3 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 24f2ea79..31d2ea43 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.2", + "version": "4.2.3", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index f9cc7072..ed03072d 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.2", + "version": "4.2.3", "scripts": { "build:framework": "npm run build:webui && vite build --mode framework || exit 1", "build:shell": "npm run build:webui && vite build --mode shell || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index cab945f8..b7ddce19 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.2'; +export const napCatVersion = '4.2.3'; From 9fcfb5493cbd8c0d413bb12ba8f499c96c9d9fef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 28 Nov 2024 10:27:04 +0800 Subject: [PATCH 126/418] fix: #571 --- src/onebot/api/msg.ts | 13 +++---------- src/onebot/api/user.ts | 2 +- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 610c7462..8036d33d 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -972,15 +972,6 @@ export class OneBotMsgApi { async parseSysMessage(msg: number[]) { // Todo Refactor - // const sysMsg = decodeSysMessage(Uint8Array.from(msg)); - // if (sysMsg.msgSpec.length === 0) { - // return; - // } - // const { msgType, subType, subSubType } = sysMsg.msgSpec[0]; - // if (msgType === 528 && subType === 39 && subSubType === 39) { - // if (!sysMsg.bodyWrapper) return; - // return await this.obContext.apis.UserApi.parseLikeEvent(sysMsg.bodyWrapper.wrappedBody); - // } let SysMessage = new NapProtoMsg(PushMsgBody).decode(Uint8Array.from(msg)); if (SysMessage.contentHead.type == 33 && SysMessage.body?.msgContent) { const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent); @@ -994,7 +985,6 @@ export class OneBotMsgApi { ); } else if (SysMessage.contentHead.type == 34 && SysMessage.body?.msgContent) { const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent); - // console.log(JSON.stringify(groupChange),JSON.stringify(SysMessage)); return new OB11GroupDecreaseEvent( this.core, groupChange.groupUin, @@ -1002,7 +992,10 @@ export class OneBotMsgApi { groupChange.operatorUid ? +await this.core.apis.UserApi.getUinByUidV2(groupChange.operatorUid) : 0, this.groupChangDecreseType2String(groupChange.decreaseType), ); + } else if (SysMessage.contentHead.type == 528 && SysMessage.contentHead.subType == 39 && SysMessage.body?.msgContent) { + return await this.obContext.apis.UserApi.parseLikeEvent(SysMessage.body?.msgContent); } + /* if (msgType === 732 && subType === 16 && subSubType === 16) { const greyTip = GreyTipWrapper.fromBinary(Uint8Array.from(sysMsg.bodyWrapper!.wrappedBody.slice(7))); diff --git a/src/onebot/api/user.ts b/src/onebot/api/user.ts index 68a7a295..ae8f43fe 100644 --- a/src/onebot/api/user.ts +++ b/src/onebot/api/user.ts @@ -13,7 +13,7 @@ export class OneBotUserApi { } async parseLikeEvent(wrappedBody: Uint8Array): Promise { - const likeTip = decodeProfileLikeTip(Uint8Array.from(wrappedBody)); + const likeTip = decodeProfileLikeTip(wrappedBody); if (likeTip?.msgType !== 0 || likeTip?.subType !== 203) return; this.core.context.logger.logDebug("收到点赞通知消息"); const likeMsg = likeTip.content.msg; From 2531b085383b94a16823b1599cee74381904bfaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 28 Nov 2024 10:41:51 +0800 Subject: [PATCH 127/418] =?UTF-8?q?refactor:=20=E6=8F=90=E9=AB=98=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E5=85=BC=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/file.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/common/file.ts b/src/common/file.ts index 487325ae..1d1f5a67 100644 --- a/src/common/file.ts +++ b/src/common/file.ts @@ -190,16 +190,18 @@ export async function checkUriType(Uri: string) { }, Uri); if (LocalFileRet) return LocalFileRet; const OtherFileRet = await solveProblem((uri: string) => { - //再判断是否是Http + // 再判断是否是Http if (uri.startsWith('http://') || uri.startsWith('https://')) { return { Uri: uri, Type: FileUriType.Remote }; } - //再判断是否是Base64 - if (uri.startsWith('base64://')) { + // 再判断是否是Base64 + if (uri.startsWith('base64:')) { return { Uri: uri, Type: FileUriType.Base64 }; } - if (uri.startsWith('file://')) { + if (uri.startsWith('file:')) { let filePath: string = uri.slice(7); + // file://C:\1.jpg + // file:///test/1.jpg return { Uri: filePath, Type: FileUriType.Local }; } if (uri.startsWith('data:')) { @@ -235,7 +237,7 @@ export async function uri2local(dir: string, uri: string, filename: string | und fs.copyFileSync(HandledUri, filePath); return { success: true, errMsg: '', fileName: filename, ext: fileExt, path: filePath }; } - + //接下来都要有文件名 if (UriType == FileUriType.Remote) { const pathInfo = path.parse(decodeURIComponent(new URL(HandledUri).pathname)); From 1dc2f7e5a2ee3eba827d92fcf9146deabed50c88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 28 Nov 2024 10:46:14 +0800 Subject: [PATCH 128/418] style: lint --- src/common/file.ts | 4 +-- src/core/apis/file.ts | 18 ++++++------- .../transformer/proto/message/message.ts | 2 +- src/onebot/api/group.ts | 2 +- src/onebot/api/msg.ts | 26 +++++++++---------- src/onebot/index.ts | 12 ++++----- src/onebot/network/passive-http.ts | 2 +- 7 files changed, 33 insertions(+), 33 deletions(-) diff --git a/src/common/file.ts b/src/common/file.ts index 1d1f5a67..bf644122 100644 --- a/src/common/file.ts +++ b/src/common/file.ts @@ -191,7 +191,7 @@ export async function checkUriType(Uri: string) { if (LocalFileRet) return LocalFileRet; const OtherFileRet = await solveProblem((uri: string) => { // 再判断是否是Http - if (uri.startsWith('http://') || uri.startsWith('https://')) { + if (uri.startsWith('http:') || uri.startsWith('https:')) { return { Uri: uri, Type: FileUriType.Remote }; } // 再判断是否是Base64 @@ -199,7 +199,7 @@ export async function checkUriType(Uri: string) { return { Uri: uri, Type: FileUriType.Base64 }; } if (uri.startsWith('file:')) { - let filePath: string = uri.slice(7); + const filePath: string = uri.slice(7); // file://C:\1.jpg // file:///test/1.jpg return { Uri: filePath, Type: FileUriType.Local }; diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index f5e9f52c..d8857371 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -41,7 +41,7 @@ export class NTQQFileApi { this.rkeyManager = new RkeyManager([ 'https://rkey.napneko.icu/rkeys' ], - this.context.logger + this.context.logger ); } @@ -307,18 +307,18 @@ export class NTQQFileApi { element.elementType === ElementType.FILE ) { switch (element.elementType) { - case ElementType.PIC: + case ElementType.PIC: element.picElement!.sourcePath = elementResults[elementIndex]; - break; - case ElementType.VIDEO: + break; + case ElementType.VIDEO: element.videoElement!.filePath = elementResults[elementIndex]; - break; - case ElementType.PTT: + break; + case ElementType.PTT: element.pttElement!.filePath = elementResults[elementIndex]; - break; - case ElementType.FILE: + break; + case ElementType.FILE: element.fileElement!.filePath = elementResults[elementIndex]; - break; + break; } elementIndex++; } diff --git a/src/core/packet/transformer/proto/message/message.ts b/src/core/packet/transformer/proto/message/message.ts index 1cb6ecfe..5453749f 100644 --- a/src/core/packet/transformer/proto/message/message.ts +++ b/src/core/packet/transformer/proto/message/message.ts @@ -62,7 +62,7 @@ export const GroupChange = { operatorUid: ProtoField(5, ScalarType.STRING, true), increaseType: ProtoField(6, ScalarType.UINT32), field7: ProtoField(7, ScalarType.BYTES, true), -} +}; export const PushMsgBody = { responseHead: ProtoField(1, () => ResponseHead), diff --git a/src/onebot/api/group.ts b/src/onebot/api/group.ts index faa8ee02..cf30726e 100644 --- a/src/onebot/api/group.ts +++ b/src/onebot/api/group.ts @@ -315,7 +315,7 @@ export class OneBotGroupApi { } else if (grayTipElement.jsonGrayTipElement.busiId == JsonGrayBusiId.AIO_GROUP_ESSENCE_MSG_TIP) { return await this.parseEssenceMsg(msg, grayTipElement.jsonGrayTipElement.jsonStr); } else { - return await this.parseOtherJsonEvent(msg, grayTipElement.jsonGrayTipElement.jsonStr, this.core.context) + return await this.parseOtherJsonEvent(msg, grayTipElement.jsonGrayTipElement.jsonStr, this.core.context); } } return undefined; diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 8036d33d..b286348b 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -673,7 +673,7 @@ export class OneBotMsgApi { if (grayTipElement.subElementType == NTGrayTipElementSubTypeV2.GRAYTIP_ELEMENT_SUBTYPE_JSON) { if (grayTipElement.jsonGrayTipElement.busiId == 1061) { const PokeEvent = await this.obContext.apis.FriendApi.parsePrivatePokeEvent(grayTipElement); - if (PokeEvent) { return PokeEvent }; + if (PokeEvent) { return PokeEvent; }; } else if (grayTipElement.jsonGrayTipElement.busiId == 19324 && msg.peerUid !== '') { return new OB11FriendAddNoticeEvent(this.core, Number(await this.core.apis.UserApi.getUinByUidV2(msg.peerUid))); } @@ -841,14 +841,14 @@ export class OneBotMsgApi { } private async convertArrayToStringMessage(originMsg: OB11Message): Promise { - let msg = structuredClone(originMsg); + const msg = structuredClone(originMsg); msg.message_format = 'string'; msg.message = msg.raw_message; return msg; } async importArrayTostringMsg(originMsg: OB11Message) { - let msg = structuredClone(originMsg); + const msg = structuredClone(originMsg); msg.message_format = 'string'; msg.message = msg.raw_message; return msg; @@ -924,7 +924,7 @@ export class OneBotMsgApi { fsPromise.unlink(file).then().catch(e => this.core.context.logger.logError.bind(this.core.context.logger)('发送消息删除文件失败', e)); } } catch (error) { - this.core.context.logger.logError.bind(this.core.context.logger)('发送消息删除文件失败', (error as Error).message) + this.core.context.logger.logError.bind(this.core.context.logger)('发送消息删除文件失败', (error as Error).message); } }); }, 60000); @@ -959,20 +959,20 @@ export class OneBotMsgApi { } groupChangDecreseType2String(type: number): GroupDecreaseSubType { switch (type) { - case 130: - return 'kick'; - case 131: - return 'leave'; - case 3: - return 'kick_me'; - default: - return 'kick'; + case 130: + return 'kick'; + case 131: + return 'leave'; + case 3: + return 'kick_me'; + default: + return 'kick'; } } async parseSysMessage(msg: number[]) { // Todo Refactor - let SysMessage = new NapProtoMsg(PushMsgBody).decode(Uint8Array.from(msg)); + const SysMessage = new NapProtoMsg(PushMsgBody).decode(Uint8Array.from(msg)); if (SysMessage.contentHead.type == 33 && SysMessage.body?.msgContent) { const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent); console.log(JSON.stringify(groupChange)); diff --git a/src/onebot/index.ts b/src/onebot/index.ts index 856e7821..9ffe9b07 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -298,10 +298,10 @@ export class NapCatOneBot11Adapter { peerUid: uid, guildId: '' }; - let msg = (await this.core.apis.MsgApi.queryMsgsWithFilterExWithSeq(peer, msgSeq)).msgList.find(e => e.msgType == NTMsgType.KMSGTYPEGRAYTIPS); - let element = msg?.elements[0]; + const msg = (await this.core.apis.MsgApi.queryMsgsWithFilterExWithSeq(peer, msgSeq)).msgList.find(e => e.msgType == NTMsgType.KMSGTYPEGRAYTIPS); + const element = msg?.elements[0]; if (msg && element) { - let recallEvent = await this.emitRecallMsg(msg, element); + const recallEvent = await this.emitRecallMsg(msg, element); try { if (recallEvent) { await this.networkManager.emitEvent(recallEvent); @@ -310,7 +310,7 @@ export class NapCatOneBot11Adapter { this.context.logger.logError('处理消息撤回失败', e); } } - } + }; msgListener.onKickedOffLine = async (kick) => { const event = new BotOfflineEvent(this.core, kick.tipsTitle, kick.tipsDesc); this.networkManager @@ -664,7 +664,7 @@ export class NapCatOneBot11Adapter { private async emitRecallMsg(message: RawMessage, element: MessageElement) { const peer: Peer = { chatType: message.chatType, peerUid: message.peerUid, guildId: '' }; - let oriMessageId = MessageUnique.getShortIdByMsgId(message.msgId) ?? MessageUnique.createUniqueMsgId(peer, message.msgId); + const oriMessageId = MessageUnique.getShortIdByMsgId(message.msgId) ?? MessageUnique.createUniqueMsgId(peer, message.msgId); if (message.chatType == ChatType.KCHATTYPEC2C) { return await this.emitFriendRecallMsg(message, oriMessageId, element); } else if (message.chatType == ChatType.KCHATTYPEGROUP) { @@ -684,7 +684,7 @@ export class NapCatOneBot11Adapter { private async emitGroupRecallMsg(message: RawMessage, oriMessageId: number, element: MessageElement) { const operatorUid = element.grayTipElement?.revokeElement.operatorUid; if (!operatorUid) return undefined; - let operatorId = message.senderUin ?? await this.core.apis.UserApi.getUinByUidV2(operatorUid); + const operatorId = message.senderUin ?? await this.core.apis.UserApi.getUinByUidV2(operatorUid); return new OB11GroupRecallNoticeEvent( this.core, +message.peerUin, diff --git a/src/onebot/network/passive-http.ts b/src/onebot/network/passive-http.ts index 80d862bd..4b18a1d3 100644 --- a/src/onebot/network/passive-http.ts +++ b/src/onebot/network/passive-http.ts @@ -102,7 +102,7 @@ export class OB11PassiveHttpAdapter implements IOB11NetworkAdapter { if (req.path === '' || req.path === '/') { const hello = OB11Response.ok({}); hello.message = 'NapCat4 Ss Running'; - return res.json(hello) + return res.json(hello); } const actionName = req.path.split('/')[1]; const action = this.actions.get(actionName); From 3bb12e3f452a08c1e7b58cff75339429d692c469 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 28 Nov 2024 10:56:57 +0800 Subject: [PATCH 129/418] fix: #572 --- src/common/file.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/common/file.ts b/src/common/file.ts index bf644122..4d6aff58 100644 --- a/src/common/file.ts +++ b/src/common/file.ts @@ -198,10 +198,19 @@ export async function checkUriType(Uri: string) { if (uri.startsWith('base64:')) { return { Uri: uri, Type: FileUriType.Base64 }; } + // 默认file:// if (uri.startsWith('file:')) { - const filePath: string = uri.slice(7); + // 兼容file:/// + // file:///C:/1.jpg + if (uri.startsWith('file:///') && process.platform === 'win32') { + const filePath: string = uri.slice(8); + return { Uri: filePath, Type: FileUriType.Local }; + } + // 处理默认规范 // file://C:\1.jpg // file:///test/1.jpg + const filePath: string = uri.slice(7); + return { Uri: filePath, Type: FileUriType.Local }; } if (uri.startsWith('data:')) { From 3261791e998e3fdefc8f158aea54fef70f3cb40c Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Thu, 28 Nov 2024 03:00:35 +0000 Subject: [PATCH 130/418] release: v4.2.4 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 31d2ea43..2dc5f193 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.3", + "version": "4.2.4", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index ed03072d..80b90360 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.3", + "version": "4.2.4", "scripts": { "build:framework": "npm run build:webui && vite build --mode framework || exit 1", "build:shell": "npm run build:webui && vite build --mode shell || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index b7ddce19..9815dba7 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.3'; +export const napCatVersion = '4.2.4'; From 1f9b5453cc4efbef8f8cc84e7633723f33c0544e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 28 Nov 2024 15:06:47 +0800 Subject: [PATCH 131/418] fix: #573 --- src/onebot/api/msg.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index b286348b..953bd6c4 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -959,14 +959,14 @@ export class OneBotMsgApi { } groupChangDecreseType2String(type: number): GroupDecreaseSubType { switch (type) { - case 130: - return 'kick'; - case 131: - return 'leave'; - case 3: - return 'kick_me'; - default: - return 'kick'; + case 130: + return 'leave'; + case 131: + return 'kick'; + case 3: + return 'kick_me'; + default: + return 'kick'; } } @@ -988,7 +988,7 @@ export class OneBotMsgApi { return new OB11GroupDecreaseEvent( this.core, groupChange.groupUin, - +this.core.selfInfo.uin, + groupChange.memberUid ? +await this.core.apis.UserApi.getUinByUidV2(groupChange.memberUid) : 0, groupChange.operatorUid ? +await this.core.apis.UserApi.getUinByUidV2(groupChange.operatorUid) : 0, this.groupChangDecreseType2String(groupChange.decreaseType), ); From b454d8c0f9cd53349ba8463d7c29faae969f9642 Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Thu, 28 Nov 2024 07:07:10 +0000 Subject: [PATCH 132/418] release: v4.2.5 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 2dc5f193..13be670e 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.4", + "version": "4.2.5", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 80b90360..770e5596 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.4", + "version": "4.2.5", "scripts": { "build:framework": "npm run build:webui && vite build --mode framework || exit 1", "build:shell": "npm run build:webui && vite build --mode shell || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index 9815dba7..65bdc51e 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.4'; +export const napCatVersion = '4.2.5'; From 2fe4da094ad2e0d9b6ee44355f07e42d69d1e607 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 28 Nov 2024 15:14:01 +0800 Subject: [PATCH 133/418] fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index df8843af..309364fd 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ NapCatQQ 是现代化的基于 NTQQ 的 Bot 协议端实现 ## 回家旅途 -[QQ Group](https://qm.qq.com/q/NWP25OeV0c) +[QQ Group](https://qm.qq.com/q/I6LU87a0Yq) ## 感谢他们 感谢 [Lagrange](https://github.com/LagrangeDev/Lagrange.Core) 对本项目的大力支持 参考部分代码 已获授权 From 06eba28b4c93f9810878a538cc057ada26da3fd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 28 Nov 2024 15:28:09 +0800 Subject: [PATCH 134/418] fux: #574 --- src/onebot/api/group.ts | 49 ++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/src/onebot/api/group.ts b/src/onebot/api/group.ts index cf30726e..52233c56 100644 --- a/src/onebot/api/group.ts +++ b/src/onebot/api/group.ts @@ -66,31 +66,31 @@ export class OneBotGroupApi { return undefined; } - async parseGroupIncreaseEvent(GroupCode: string, grayTipElement: GrayTipElement) { - this.core.context.logger.logDebug('收到新人被邀请进群消息', grayTipElement); - const xmlElement = grayTipElement.xmlElement; - if (xmlElement?.content) { - const regex = /jp="(\d+)"/g; + // async parseGroupIncreaseEvent(GroupCode: string, grayTipElement: GrayTipElement) { + // this.core.context.logger.logDebug('收到新人被邀请进群消息', grayTipElement); + // const xmlElement = grayTipElement.xmlElement; + // if (xmlElement?.content) { + // const regex = /jp="(\d+)"/g; - const matches = []; - let match = null; + // const matches = []; + // let match = null; - while ((match = regex.exec(xmlElement.content)) !== null) { - matches.push(match[1]); - } - if (matches.length === 2) { - const [inviter, invitee] = matches; - return new OB11GroupIncreaseEvent( - this.core, - parseInt(GroupCode), - parseInt(invitee), - parseInt(inviter), - 'invite', - ); - } - } - return undefined; - } + // while ((match = regex.exec(xmlElement.content)) !== null) { + // matches.push(match[1]); + // } + // if (matches.length === 2) { + // const [inviter, invitee] = matches; + // return new OB11GroupIncreaseEvent( + // this.core, + // parseInt(GroupCode), + // parseInt(invitee), + // parseInt(inviter), + // 'invite', + // ); + // } + // } + // return undefined; + // } // async parseGroupMemberIncreaseEvent(GroupCode: string, grayTipElement: GrayTipElement) { // const groupElement = grayTipElement?.groupElement; @@ -304,9 +304,8 @@ export class OneBotGroupApi { // 筛选出表情回应 事件 if (grayTipElement.xmlElement?.templId === '10382') { return await this.obContext.apis.GroupApi.parseGroupEmojiLikeEventByGrayTip(msg.peerUid, grayTipElement); - } else { - return await this.obContext.apis.GroupApi.parseGroupIncreaseEvent(msg.peerUid, grayTipElement); + //return await this.obContext.apis.GroupApi.parseGroupIncreaseEvent(msg.peerUid, grayTipElement); } } else if (grayTipElement.subElementType == NTGrayTipElementSubTypeV2.GRAYTIP_ELEMENT_SUBTYPE_JSON) { // 解析json事件 From e03905abaf37db6e5670714bfd42e161f665d339 Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Thu, 28 Nov 2024 07:28:33 +0000 Subject: [PATCH 135/418] release: v4.2.6 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 13be670e..daa5331b 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.5", + "version": "4.2.6", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 770e5596..363e478f 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.5", + "version": "4.2.6", "scripts": { "build:framework": "npm run build:webui && vite build --mode framework || exit 1", "build:shell": "npm run build:webui && vite build --mode shell || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index 65bdc51e..b7dc1d2f 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.5'; +export const napCatVersion = '4.2.6'; From 97cacb43835bfb040ab86a1df6771c004f19f7d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 28 Nov 2024 20:00:24 +0800 Subject: [PATCH 136/418] =?UTF-8?q?refactor:=20framework=E7=9A=84=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/framework/liteloader.cjs | 4 ++++ src/framework/preload.cjs | 9 +++++---- src/framework/renderer.js | 32 +++++++++++++++++--------------- 3 files changed, 26 insertions(+), 19 deletions(-) diff --git a/src/framework/liteloader.cjs b/src/framework/liteloader.cjs index c2b52594..96784924 100644 --- a/src/framework/liteloader.cjs +++ b/src/framework/liteloader.cjs @@ -1,6 +1,10 @@ //LiteLoader需要提供部分IPC接口,以便于其他插件调用 const { ipcMain } = require('electron'); const napcat = require('./napcat.cjs'); +const { shell } = require('electron'); ipcMain.handle('napcat_get_webtoken', async (event, arg) => { return napcat.NCgetWebUiUrl(); }); +ipcMain.on('open_external_url', (event, url) => { + shell.openExternal(url); +}); \ No newline at end of file diff --git a/src/framework/preload.cjs b/src/framework/preload.cjs index eef7e759..c24da2dc 100644 --- a/src/framework/preload.cjs +++ b/src/framework/preload.cjs @@ -1,10 +1,11 @@ -const { contextBridge } = require('electron'); -const { ipcRenderer } = require('electron'); - +const { contextBridge, ipcRenderer } = require('electron'); const napcat = { getWebUiUrl: async () => { return ipcRenderer.invoke('napcat_get_webtoken'); }, + openExternalUrl: async (url) => { + ipcRenderer.send('open_external_url', url); + } }; // 在window对象下导出只读对象 -contextBridge.exposeInMainWorld('napcat', napcat); +contextBridge.exposeInMainWorld('napcat', napcat); \ No newline at end of file diff --git a/src/framework/renderer.js b/src/framework/renderer.js index 8c447d25..97dc1fa6 100644 --- a/src/framework/renderer.js +++ b/src/framework/renderer.js @@ -1,27 +1,16 @@ export const onSettingWindowCreated = async (view) => { - - // view.style.width = "100%"; - // view.style.height = "100%"; - // //添加iframe - // const iframe = document.createElement("iframe"); - // iframe.src = await window.napcat.getWebUiUrl(); - // iframe.width = "100%"; - // iframe.height = "100%"; - // iframe.style.border = "none"; - // //去掉iframe滚动条 - // //iframe.scrolling = "no"; - // //有滚动条何尝不是一种美 - // view.appendChild(iframe); let webui = await window.napcat.getWebUiUrl(); view.innerHTML = ` - 打开配置页面 + 在QQ内打开配置页面 + 在默认浏览器打开配置页面
+ WebUi远程地址可以点击下方复制哦~ WebUi
@@ -32,5 +21,18 @@ export const onSettingWindowCreated = async (view) => { view.querySelector('.nc_openwebui').addEventListener('click', () => { window.open(webui, '_blank'); }); + view.querySelector('.nc_openwebui_ex').addEventListener('click', () => { + window.napcat.openExternalUrl(webui); + }); view.querySelector('.nc_webui').innerText = webui; -}; + + // 添加点击复制功能 + view.querySelector('.nc_webui').addEventListener('click', async () => { + try { + await navigator.clipboard.writeText(webui); + alert('WebUi URL 已复制到剪贴板'); + } catch (err) { + console.error('复制到剪贴板失败: ', err); + } + }); +}; \ No newline at end of file From 53c1d40bcf45392efa8495322ce7505aa284ddc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 28 Nov 2024 20:55:28 +0800 Subject: [PATCH 137/418] refactor: logger bind (#577) --- src/common/audio.ts | 2 +- src/common/config-base.ts | 15 ++++--- src/core/apis/file.ts | 19 ++++----- src/core/apis/group.ts | 2 +- src/core/apis/packet.ts | 2 +- src/core/helper/rkey.ts | 3 +- src/core/index.ts | 4 +- src/framework/napcat.ts | 2 +- src/onebot/action/go-cqhttp/QuickAction.ts | 2 +- src/onebot/action/msg/SendMsg.ts | 35 ++++++++-------- src/onebot/api/group.ts | 2 +- src/onebot/api/msg.ts | 48 +++++++++++----------- src/onebot/api/quick-action.ts | 15 ++++--- src/onebot/index.ts | 24 +++++------ src/onebot/network/active-http.ts | 6 +-- src/onebot/network/active-websocket.ts | 14 +++---- src/onebot/network/passive-websocket.ts | 12 +++--- src/shell/napcat.ts | 6 +-- src/webui/index.ts | 13 +++--- 19 files changed, 109 insertions(+), 117 deletions(-) diff --git a/src/common/audio.ts b/src/common/audio.ts index 284ff13a..ade00e69 100644 --- a/src/common/audio.ts +++ b/src/common/audio.ts @@ -96,7 +96,7 @@ export async function encodeSilk(filePath: string, TEMP_DIR: string, logger: Log }; } } catch (error: any) { - logger.logError.bind(logger)('convert silk failed', error.stack); + logger.logError('convert silk failed', error.stack); return {}; } } diff --git a/src/common/config-base.ts b/src/common/config-base.ts index 4593c78c..deead630 100644 --- a/src/common/config-base.ts +++ b/src/common/config-base.ts @@ -33,27 +33,27 @@ export abstract class ConfigBase { } read(copy_default: boolean = true): T { - const logger = this.core.context.logger; + const configPath = this.getConfigPath(this.core.selfInfo.uin); if (!fs.existsSync(configPath) && copy_default) { try { fs.writeFileSync(configPath, fs.readFileSync(this.getConfigPath(undefined), 'utf-8')); - logger.log(`[Core] [Config] 配置文件创建成功!\n`); + this.core.context.logger.log(`[Core] [Config] 配置文件创建成功!\n`); } catch (e: any) { - logger.logError.bind(logger)(`[Core] [Config] 创建配置文件时发生错误:`, e.message); + this.core.context.logger.logError(`[Core] [Config] 创建配置文件时发生错误:`, e.message); } } else if (!fs.existsSync(configPath) && !copy_default) { fs.writeFileSync(configPath, '{}'); } try { this.configData = JSON.parse(fs.readFileSync(configPath, 'utf-8')); - logger.logDebug(`[Core] [Config] 配置文件${configPath}加载`, this.configData); + this.core.context.logger.logDebug(`[Core] [Config] 配置文件${configPath}加载`, this.configData); return this.configData; } catch (e: any) { if (e instanceof SyntaxError) { - logger.logError.bind(logger)(`[Core] [Config] 配置文件格式错误,请检查配置文件:`, e.message); + this.core.context.logger.logError(`[Core] [Config] 配置文件格式错误,请检查配置文件:`, e.message); } else { - logger.logError.bind(logger)(`[Core] [Config] 读取配置文件时发生错误:`, e.message); + this.core.context.logger.logError(`[Core] [Config] 读取配置文件时发生错误:`, e.message); } return {} as T; } @@ -61,14 +61,13 @@ export abstract class ConfigBase { save(newConfigData: T = this.configData) { - const logger = this.core.context.logger; const selfInfo = this.core.selfInfo; this.configData = newConfigData; const configPath = this.getConfigPath(selfInfo.uin); try { fs.writeFileSync(configPath, JSON.stringify(newConfigData, this.getKeys(), 2)); } catch (e: any) { - logger.logError.bind(logger)(`保存配置文件 ${configPath} 时发生错误:`, e.message); + this.core.context.logger.logError(`保存配置文件 ${configPath} 时发生错误:`, e.message); } } } diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index d8857371..07860ca8 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -142,7 +142,6 @@ export class NTQQFileApi { } async createValidSendVideoElement(context: SendMessageContext, filePath: string, fileName: string = '', diyThumbPath: string = ''): Promise { - const logger = this.core.context.logger; let videoInfo = { width: 1920, height: 1080, @@ -152,9 +151,9 @@ export class NTQQFileApi { filePath, }; try { - videoInfo = await getVideoInfo(filePath, logger); + videoInfo = await getVideoInfo(filePath, this.context.logger); } catch (e) { - logger.logError.bind(logger)('获取视频信息失败,将使用默认值', e); + this.context.logger.logError('获取视频信息失败,将使用默认值', e); } let fileExt = 'mp4'; @@ -162,7 +161,7 @@ export class NTQQFileApi { const tempExt = (await fileType.fileTypeFromFile(filePath))?.ext; if (tempExt) fileExt = tempExt; } catch (e) { - this.context.logger.logError.bind(logger)('获取文件类型失败', e); + this.context.logger.logError('获取文件类型失败', e); } const newFilePath = filePath + '.' + fileExt; fs.copyFileSync(filePath, newFilePath); @@ -183,7 +182,7 @@ export class NTQQFileApi { ffmpeg(filePath) .on('error', (err) => { try { - logger.logDebug('获取视频封面失败,使用默认封面', err); + this.context.logger.logDebug('获取视频封面失败,使用默认封面', err); if (diyThumbPath) { fsPromises.copyFile(diyThumbPath, thumbPath).then(() => { resolve(thumbPath); @@ -193,7 +192,7 @@ export class NTQQFileApi { resolve(thumbPath); } } catch (error) { - logger.logError.bind(logger)('获取视频封面失败,使用默认封面失败', error); + this.context.logger.logError('获取视频封面失败,使用默认封面失败', error); } }) .screenshots({ @@ -230,6 +229,7 @@ export class NTQQFileApi { } async createValidSendPttElement(pttPath: string): Promise { + const { converted, path: silkPath, duration } = await encodeSilk(pttPath, this.core.NapCatTempPath, this.core.context.logger); if (!silkPath) { throw new Error('语音转换失败, 请检查语音文件是否正常'); @@ -239,8 +239,7 @@ export class NTQQFileApi { throw new Error('文件异常,大小为0'); } if (converted) { - fsPromises.unlink(silkPath).then().catch( - (e) => this.context.logger.logError.bind(this.context.logger)('删除临时文件失败', e) + fsPromises.unlink(silkPath).then().catch((e) => this.context.logger.logError('删除临时文件失败', e) ); } return { @@ -454,7 +453,7 @@ export class NTQQFileApi { } } } catch (error: any) { - this.context.logger.logError.bind(this.context.logger)('获取rkey失败', error.message); + this.context.logger.logError('获取rkey失败', error.message); } if (!rkeyData.online_rkey) { @@ -464,7 +463,7 @@ export class NTQQFileApi { rkeyData.private_rkey = tempRkeyData.private_rkey; rkeyData.online_rkey = tempRkeyData.expired_time > Date.now() / 1000; } catch (e) { - this.context.logger.logError.bind(this.context.logger)('获取rkey失败 Fallback Old Mode', e); + this.context.logger.logError('获取rkey失败 Fallback Old Mode', e); } } diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index a51b04f3..074155e9 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -27,7 +27,7 @@ export class NTQQGroupApi { this.core = core; } async initApi() { - this.initCache().then().catch(this.context.logger.logError.bind(this.context.logger)); + this.initCache().then().catch(e => this.context.logger.logError(e)); } async initCache() { this.groups = await this.getGroups(); diff --git a/src/core/apis/packet.ts b/src/core/apis/packet.ts index e29dcee9..358cea68 100644 --- a/src/core/apis/packet.ts +++ b/src/core/apis/packet.ts @@ -31,7 +31,7 @@ export class NTQQPacketApi { await this.InitSendPacket(this.context.basicInfoWrapper.getFullQQVesion()) .then() .catch((err) => { - this.logger.logError.bind(this.core.context.logger); + this.logger.logError(err); this.errStack.push(err); }); } diff --git a/src/core/helper/rkey.ts b/src/core/helper/rkey.ts index 89e4229f..4b952b44 100644 --- a/src/core/helper/rkey.ts +++ b/src/core/helper/rkey.ts @@ -27,7 +27,6 @@ export class RkeyManager { await this.refreshRkey(); } catch (e) { throw new Error(`获取rkey失败: ${e}`);//外抛 - //this.logger.logError.bind(this.logger)('获取rkey失败', e); } } return this.rkeyData; @@ -50,7 +49,7 @@ export class RkeyManager { expired_time: temp.expired_time }; } catch (e) { - this.logger.logError.bind(this.logger)(`[Rkey] Get Rkey ${url} Error `, e); + this.logger.logError(`[Rkey] Get Rkey ${url} Error `, e); //是否为最后一个url if (url === this.serverUrl[this.serverUrl.length - 1]) { throw new Error(`获取rkey失败: ${e}`);//外抛 diff --git a/src/core/index.ts b/src/core/index.ts index 7faa4027..3b318054 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -127,7 +127,7 @@ export class NapCatCore { await api.initApi(); } } - this.initNapCatCoreListeners().then().catch(this.context.logger.logError.bind(this.context.logger)); + this.initNapCatCoreListeners().then().catch((e) => this.context.logger.logError(e)); this.context.logger.setFileLogEnabled( this.configLoader.configData.fileLog, @@ -154,7 +154,7 @@ export class NapCatCore { const msgListener = new NodeIKernelMsgListener(); msgListener.onKickedOffLine = (Info: KickedOffLineInfo) => { // 下线通知 - this.context.logger.logError.bind(this.context.logger)('[KickedOffLine] [' + Info.tipsTitle + '] ' + Info.tipsDesc); + this.context.logger.logError('[KickedOffLine] [' + Info.tipsTitle + '] ' + Info.tipsDesc); this.selfInfo.online = false; }; msgListener.onRecvMsg = (msgs) => { diff --git a/src/framework/napcat.ts b/src/framework/napcat.ts index ad217b78..1dfb92b5 100644 --- a/src/framework/napcat.ts +++ b/src/framework/napcat.ts @@ -58,7 +58,7 @@ export async function NCoreInitFramework( await loaderObject.core.initCore(); //启动WebUi - InitWebUi(logger, pathWrapper).then().catch(logger.logError.bind(logger)); + InitWebUi(logger, pathWrapper).then().catch(e => logger.logError(e)); //初始化LLNC的Onebot实现 await new NapCatOneBot11Adapter(loaderObject.core, loaderObject.context, pathWrapper).InitOneBot(); } diff --git a/src/onebot/action/go-cqhttp/QuickAction.ts b/src/onebot/action/go-cqhttp/QuickAction.ts index d579eebe..30eacaf7 100644 --- a/src/onebot/action/go-cqhttp/QuickAction.ts +++ b/src/onebot/action/go-cqhttp/QuickAction.ts @@ -13,7 +13,7 @@ export class GoCQHTTPHandleQuickAction extends OneBotAction { async _handle(payload: Payload): Promise { this.obContext.apis.QuickActionApi .handleQuickOperation(payload.context, payload.operation) - .catch(this.core.context.logger.logError.bind(this.core.context.logger)); + .catch(e => this.core.context.logger.logError(e)); return null; } } diff --git a/src/onebot/action/msg/SendMsg.ts b/src/onebot/action/msg/SendMsg.ts index 1de705e3..ed83239a 100644 --- a/src/onebot/action/msg/SendMsg.ts +++ b/src/onebot/action/msg/SendMsg.ts @@ -162,11 +162,10 @@ export class SendMsg extends OneBotAction { finallySendElements: SendArkElement, res_id?: string } | null> { - const logger = this.core.context.logger; const packetMsg: PacketMsg[] = []; for (const node of messageNodes) { if (dp >= 3) { - logger.logWarn('转发消息深度超过3层,将停止解析!'); + this.core.context.logger.logWarn('转发消息深度超过3层,将停止解析!'); break; } if (!node.data.id) { @@ -191,29 +190,29 @@ export class SendMsg extends OneBotAction { time: Number(node.data.time) || Date.now(), msg: sendElements, }; - logger.logDebug(`handleForwardedNodesPacket[SendRaw] 开始转换 ${stringifyWithBigInt(packetMsgElements)}`); + this.core.context.logger.logDebug(`handleForwardedNodesPacket[SendRaw] 开始转换 ${stringifyWithBigInt(packetMsgElements)}`); const transformedMsg = this.core.apis.PacketApi.pkt.msgConverter.rawMsgWithSendMsgToPacketMsg(packetMsgElements); - logger.logDebug(`handleForwardedNodesPacket[SendRaw] 转换为 ${stringifyWithBigInt(transformedMsg)}`); + this.core.context.logger.logDebug(`handleForwardedNodesPacket[SendRaw] 转换为 ${stringifyWithBigInt(transformedMsg)}`); packetMsg.push(transformedMsg); } else if (node.data.id) { const id = node.data.id; const nodeMsg = MessageUnique.getMsgIdAndPeerByShortId(+id) || MessageUnique.getPeerByMsgId(id); if (!nodeMsg) { - logger.logError.bind(this.core.context.logger)('转发消息失败,未找到消息', id); + this.core.context.logger.logError('转发消息失败,未找到消息', id); continue; } const msg = (await this.core.apis.MsgApi.getMsgsByMsgId(nodeMsg.Peer, [nodeMsg.MsgId])).msgList[0]; - logger.logDebug(`handleForwardedNodesPacket[PureRaw] 开始转换 ${stringifyWithBigInt(msg)}`); + this.core.context.logger.logDebug(`handleForwardedNodesPacket[PureRaw] 开始转换 ${stringifyWithBigInt(msg)}`); await this.core.apis.FileApi.downloadRawMsgMedia([msg]); const transformedMsg = this.core.apis.PacketApi.pkt.msgConverter.rawMsgToPacketMsg(msg, msgPeer); - logger.logDebug(`handleForwardedNodesPacket[PureRaw] 转换为 ${stringifyWithBigInt(transformedMsg)}`); + this.core.context.logger.logDebug(`handleForwardedNodesPacket[PureRaw] 转换为 ${stringifyWithBigInt(transformedMsg)}`); packetMsg.push(transformedMsg); } else { - logger.logDebug(`handleForwardedNodesPacket 跳过元素 ${stringifyWithBigInt(node)}`); + this.core.context.logger.logDebug(`handleForwardedNodesPacket 跳过元素 ${stringifyWithBigInt(node)}`); } } if (packetMsg.length === 0) { - logger.logWarn('handleForwardedNodesPacket 元素为空!'); + this.core.context.logger.logWarn('handleForwardedNodesPacket 元素为空!'); return null; } const resid = await this.core.apis.PacketApi.pkt.operation.UploadForwardMsg(packetMsg, msgPeer.chatType === ChatType.KCHATTYPEGROUP ? +msgPeer.peerUid : 0); @@ -253,14 +252,13 @@ export class SendMsg extends OneBotAction { peerUid: this.core.selfInfo.uid, }; let nodeMsgIds: string[] = []; - const logger = this.core.context.logger; for (const messageNode of messageNodes) { const nodeId = messageNode.data.id; if (nodeId) { // 对Msgid和OB11ID混用情况兜底 const nodeMsg = MessageUnique.getMsgIdAndPeerByShortId(parseInt(nodeId)) || MessageUnique.getPeerByMsgId(nodeId); if (!nodeMsg) { - logger.logError.bind(this.core.context.logger)('转发消息失败,未找到消息', nodeId); + this.core.context.logger.logError('转发消息失败,未找到消息', nodeId); continue; } nodeMsgIds.push(nodeMsg.MsgId); @@ -272,7 +270,7 @@ export class SendMsg extends OneBotAction { const isNodeMsg = OB11Data.filter(e => e.type === OB11MessageDataType.node).length;//找到子转发消息 if (isNodeMsg !== 0) { if (isNodeMsg !== OB11Data.length) { - logger.logError.bind(this.core.context.logger)('子消息中包含非node消息 跳过不合法部分'); + this.core.context.logger.logError('子消息中包含非node消息 跳过不合法部分'); continue; } const nodeMsg = await this.handleForwardedNodes(selfPeer, OB11Data.filter(e => e.type === OB11MessageDataType.node)); @@ -309,7 +307,7 @@ export class SendMsg extends OneBotAction { } }); } catch (e: any) { - logger.logDebug('生成转发消息节点失败', e?.stack); + this.core.context.logger.logDebug('生成转发消息节点失败', e?.stack); } } } @@ -320,7 +318,7 @@ export class SendMsg extends OneBotAction { for (const msgId of nodeMsgIds) { const nodeMsgPeer = MessageUnique.getPeerByMsgId(msgId); if (!nodeMsgPeer) { - logger.logError.bind(this.core.context.logger)('转发消息失败,未找到消息', msgId); + this.core.context.logger.logError('转发消息失败,未找到消息', msgId); continue; } const nodeMsg = (await this.core.apis.MsgApi.getMsgsByMsgId(nodeMsgPeer.Peer, [msgId])).msgList[0]; @@ -346,12 +344,12 @@ export class SendMsg extends OneBotAction { } if (retMsgIds.length === 0) throw Error('转发消息失败,生成节点为空'); try { - logger.logDebug('开发转发', srcPeer, destPeer, retMsgIds); + this.core.context.logger.logDebug('开发转发', srcPeer, destPeer, retMsgIds); return { message: await this.core.apis.MsgApi.multiForwardMsg(srcPeer!, destPeer, retMsgIds) }; } catch (e: any) { - logger.logError.bind(this.core.context.logger)('forward failed', e?.stack); + this.core.context.logger.logError('forward failed', e?.stack); return { message: null }; @@ -363,7 +361,6 @@ export class SendMsg extends OneBotAction { chatType: ChatType.KCHATTYPEC2C, peerUid: this.core.selfInfo.uid, }; - const logger = this.core.context.logger; //msg 为待克隆消息 const sendElements: SendMessageElement[] = []; @@ -372,12 +369,12 @@ export class SendMsg extends OneBotAction { } if (sendElements.length === 0) { - logger.logDebug('需要clone的消息无法解析,将会忽略掉', msg); + this.core.context.logger.logDebug('需要clone的消息无法解析,将会忽略掉', msg); } try { return await this.core.apis.MsgApi.sendMsg(selfPeer, sendElements, true); } catch (e: any) { - logger.logError.bind(this.core.context.logger)(e?.stack, '克隆转发消息失败,将忽略本条消息', msg); + this.core.context.logger.logError(e?.stack, '克隆转发消息失败,将忽略本条消息', msg); } } } diff --git a/src/onebot/api/group.ts b/src/onebot/api/group.ts index 52233c56..c760dfd9 100644 --- a/src/onebot/api/group.ts +++ b/src/onebot/api/group.ts @@ -159,7 +159,7 @@ export class OneBotGroupApi { } const replyMsg = replyMsgList[0]; if (!replyMsg) { - this.core.context.logger.logError.bind(this.core.context.logger)('解析表情回应消息失败: 未找到回应消息'); + this.core.context.logger.logError('解析表情回应消息失败: 未找到回应消息'); return undefined; } return new OB11GroupMsgEmojiLikeEvent( diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 953bd6c4..ce25ae3a 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -130,7 +130,7 @@ export class OneBotMsgApi { }, }; } catch (e: any) { - this.core.context.logger.logError.bind(this.core.context.logger)('获取图片url失败', e.stack); + this.core.context.logger.logError('获取图片url失败', e.stack); return null; } }, @@ -213,7 +213,7 @@ export class OneBotMsgApi { guildId: '', }; if (!records || !element.replyMsgTime || !element.senderUidStr) { - this.core.context.logger.logError.bind(this.core.context.logger)('似乎是旧版客户端,获取不到引用的消息', element.replayMsgSeq); + this.core.context.logger.logError('似乎是旧版客户端,获取不到引用的消息', element.replayMsgSeq); return null; } @@ -231,7 +231,7 @@ export class OneBotMsgApi { let replyMsg = replyMsgList.find(msg => msg.msgRandom === records.msgRandom); if (!replyMsg || records.msgRandom !== replyMsg.msgRandom) { - this.core.context.logger.logError.bind(this.core.context.logger)( + this.core.context.logger.logError( '筛选结果,筛选消息失败,将使用Fallback-1 Seq: ', element.replayMsgSeq, ',消息长度:', @@ -242,7 +242,7 @@ export class OneBotMsgApi { } if (!replyMsg || records.msgRandom !== replyMsg.msgRandom) { - this.core.context.logger.logWarn.bind(this.core.context.logger)( + this.core.context.logger.logWarn( '筛选消息失败,将使用Fallback-2 Seq:', element.replayMsgSeq, ',消息长度:', @@ -256,7 +256,7 @@ export class OneBotMsgApi { // 丢弃该消息段 if (!replyMsg || records.msgRandom !== replyMsg.msgRandom) { - this.core.context.logger.logError.bind(this.core.context.logger)( + this.core.context.logger.logError( '最终筛选结果,筛选消息失败,获取不到引用的消息 Seq: ', element.replayMsgSeq, ',消息长度:', @@ -458,7 +458,7 @@ export class OneBotMsgApi { const sysFaces = faceConfig.sysface; const face: any = sysFaces.find((systemFace) => systemFace.QSid === parsedFaceId.toString()); if (!face) { - this.core.context.logger.logError.bind(this.core.context.logger)('不支持的ID', id); + this.core.context.logger.logError('不支持的ID', id); return undefined; } parsedFaceId = parseInt(parsedFaceId.toString()); @@ -581,20 +581,20 @@ export class OneBotMsgApi { // 保留, 直到...找到更好的解决方案 if (data.id !== undefined) { if (!['qq', '163', 'kugou', 'kuwo', 'migu'].includes(data.type)) { - this.core.context.logger.logError.bind(this.core.context.logger)('音乐卡片type错误, 只支持qq、163、kugou、kuwo、migu,当前type:', data.type); + this.core.context.logger.logError('音乐卡片type错误, 只支持qq、163、kugou、kuwo、migu,当前type:', data.type); return undefined; } } else { if (!['qq', '163', 'kugou', 'kuwo', 'migu', 'custom'].includes(data.type)) { - this.core.context.logger.logError.bind(this.core.context.logger)('音乐卡片type错误, 只支持qq、163、kugou、kuwo、migu、custom,当前type:', data.type); + this.core.context.logger.logError('音乐卡片type错误, 只支持qq、163、kugou、kuwo、migu、custom,当前type:', data.type); return undefined; } if (!data.url) { - this.core.context.logger.logError.bind(this.core.context.logger)('自定义音卡缺少参数url'); + this.core.context.logger.logError('自定义音卡缺少参数url'); return undefined; } if (!data.image) { - this.core.context.logger.logError.bind(this.core.context.logger)('自定义音卡缺少参数image'); + this.core.context.logger.logError('自定义音卡缺少参数image'); return undefined; } } @@ -618,7 +618,7 @@ export class OneBotMsgApi { type: OB11MessageDataType.json }, context); } catch (e) { - this.core.context.logger.logError.bind(this.core.context.logger)('生成音乐消息失败', e); + this.core.context.logger.logError('生成音乐消息失败', e); } }, @@ -907,7 +907,7 @@ export class OneBotMsgApi { timeout += PredictTime;// 10S Basic Timeout + PredictTime( For File 512kb/s ) } } catch (e) { - this.core.context.logger.logError.bind(this.core.context.logger)('发送消息计算预计时间异常', e); + this.core.context.logger.logError('发送消息计算预计时间异常', e); } const returnMsg = await this.core.apis.MsgApi.sendMsg(peer, sendElements, waitComplete, timeout); if (!returnMsg) throw new Error('发送消息失败'); @@ -921,10 +921,10 @@ export class OneBotMsgApi { deleteAfterSentFiles.forEach(file => { try { if (fs.existsSync(file)) { - fsPromise.unlink(file).then().catch(e => this.core.context.logger.logError.bind(this.core.context.logger)('发送消息删除文件失败', e)); + fsPromise.unlink(file).then().catch(e => this.core.context.logger.logError('发送消息删除文件失败', e)); } } catch (error) { - this.core.context.logger.logError.bind(this.core.context.logger)('发送消息删除文件失败', (error as Error).message); + this.core.context.logger.logError('发送消息删除文件失败', (error as Error).message); } }); }, 60000); @@ -938,7 +938,7 @@ export class OneBotMsgApi { ) { const realUri = inputdata.url || inputdata.file || inputdata.path || ''; if (realUri.length === 0) { - this.core.context.logger.logError.bind(this.core.context.logger)('文件消息缺少参数', inputdata); + this.core.context.logger.logError('文件消息缺少参数', inputdata); throw Error('文件消息缺少参数'); } const { @@ -949,7 +949,7 @@ export class OneBotMsgApi { } = (await uri2local(this.core.NapCatTempPath, realUri)); if (!success) { - this.core.context.logger.logError.bind(this.core.context.logger)('文件下载失败', errMsg); + this.core.context.logger.logError('文件下载失败', errMsg); throw Error('文件下载失败' + errMsg); } @@ -959,14 +959,14 @@ export class OneBotMsgApi { } groupChangDecreseType2String(type: number): GroupDecreaseSubType { switch (type) { - case 130: - return 'leave'; - case 131: - return 'kick'; - case 3: - return 'kick_me'; - default: - return 'kick'; + case 130: + return 'leave'; + case 131: + return 'kick'; + case 3: + return 'kick_me'; + default: + return 'kick'; } } diff --git a/src/onebot/api/quick-action.ts b/src/onebot/api/quick-action.ts index e661d9df..b6b7d2f4 100644 --- a/src/onebot/api/quick-action.ts +++ b/src/onebot/api/quick-action.ts @@ -24,20 +24,19 @@ export class OneBotQuickActionApi { } async handleQuickOperation(eventContext: QuickActionEvent, quickAction: QuickAction) { - const logger = this.core.context.logger; if (eventContext.post_type === 'message') { await this.handleMsg(eventContext as OB11Message, quickAction) - .catch(logger.logError.bind(logger)); + .catch(e => this.core.context.logger.logError(e)); } if (eventContext.post_type === 'request') { const friendRequest = eventContext as OB11FriendRequestEvent; const groupRequest = eventContext as OB11GroupRequestEvent; if ((friendRequest).request_type === 'friend') { await this.handleFriendRequest(friendRequest, quickAction) - .catch(logger.logError.bind(logger)); + .catch(e => this.core.context.logger.logError(e)); } else if (groupRequest.request_type === 'group') { await this.handleGroupRequest(groupRequest, quickAction) - .catch(logger.logError.bind(logger)); + .catch(e => this.core.context.logger.logError(e)); } } } @@ -51,7 +50,7 @@ export class OneBotQuickActionApi { group_id: msg.group_id?.toString(), user_id: msg.user_id?.toString(), }, peerContextMode); - + if (reply) { // let group: Group | undefined; let replyMessage: OB11MessageData[] = []; @@ -78,7 +77,7 @@ export class OneBotQuickActionApi { sendElements, deleteAfterSentFiles, } = await this.obContext.apis.MsgApi.createSendElements(replyMessage, peer); - this.obContext.apis.MsgApi.sendMsgWithOb11UniqueId(peer, sendElements, deleteAfterSentFiles, false).then().catch(this.core.context.logger.logError.bind(this.core.context.logger)); + this.obContext.apis.MsgApi.sendMsgWithOb11UniqueId(peer, sendElements, deleteAfterSentFiles, false).then().catch(e => this.core.context.logger.logError(e)); } } @@ -88,13 +87,13 @@ export class OneBotQuickActionApi { request.flag, quickAction.approve ? NTGroupRequestOperateTypes.KAGREE : NTGroupRequestOperateTypes.KREFUSE, quickAction.reason, - ).catch(this.core.context.logger.logError.bind(this.core.context.logger)); + ).catch(e => this.core.context.logger.logError(e)); } } async handleFriendRequest(request: OB11FriendRequestEvent, quickAction: QuickActionFriendRequest) { if (!isNull(quickAction.approve)) { - this.core.apis.FriendApi.handleFriendRequest(request.flag, !!quickAction.approve).then().catch(this.core.context.logger.logError.bind(this.core.context.logger)); + this.core.apis.FriendApi.handleFriendRequest(request.flag, !!quickAction.approve).then().catch(e => this.core.context.logger.logError(e)); } } } diff --git a/src/onebot/index.ts b/src/onebot/index.ts index 9ffe9b07..5a87c5b4 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -105,7 +105,7 @@ export class NapCatOneBot11Adapter { selfInfo.nick = user.nick; this.context.logger.setLogSelfInfo(selfInfo); }) - .catch(this.context.logger.logError.bind(this.context.logger)); + .catch(e => this.context.logger.logError(e)); const serviceInfo = await this.creatOneBotLog(ob11Config); this.context.logger.log(`[Notice] [OneBot11] ${serviceInfo}`); @@ -228,7 +228,7 @@ export class NapCatOneBot11Adapter { if (event) this.networkManager.emitEvent(event); }) .catch((e) => - this.context.logger.logError.bind(this.context.logger)( + this.context.logger.logError( 'constructSysMessage error: ', e, '\n Parse Hex:', @@ -260,7 +260,7 @@ export class NapCatOneBot11Adapter { m.msgId ); await this.emitMsg(m).catch((e) => - this.context.logger.logError.bind(this.context.logger)('处理消息失败', e) + this.context.logger.logError('处理消息失败', e) ); } }; @@ -315,7 +315,7 @@ export class NapCatOneBot11Adapter { const event = new BotOfflineEvent(this.core, kick.tipsTitle, kick.tipsDesc); this.networkManager .emitEvent(event) - .catch((e) => this.context.logger.logError.bind(this.context.logger)('处理Bot掉线失败', e)); + .catch((e) => this.context.logger.logError('处理Bot掉线失败', e)); }; this.context.session.getMsgService().addKernelMsgListener(proxiedListenerOf(msgListener, this.context.logger)); } @@ -404,7 +404,7 @@ export class NapCatOneBot11Adapter { this.networkManager .emitEvent(groupAdminNoticeEvent) .catch((e) => - this.context.logger.logError.bind(this.context.logger)('处理群管理员变动失败', e) + this.context.logger.logError('处理群管理员变动失败', e) ); } else { this.context.logger.logDebug( @@ -440,7 +440,7 @@ export class NapCatOneBot11Adapter { // this.networkManager // .emitEvent(groupDecreaseEvent) // .catch((e) => - // this.context.logger.logError.bind(this.context.logger)('处理群成员退出失败', e) + // this.context.logger.logError('处理群成员退出失败', e) // ); // // notify.status == 1 表示未处理 2表示处理完成 // } else @@ -465,10 +465,10 @@ export class NapCatOneBot11Adapter { this.networkManager .emitEvent(groupRequestEvent) .catch((e) => - this.context.logger.logError.bind(this.context.logger)('处理加群请求失败', e) + this.context.logger.logError('处理加群请求失败', e) ); } catch (e) { - this.context.logger.logError.bind(this.context.logger)( + this.context.logger.logError( '获取加群人QQ号失败 Uid:', notify.user1.uid, e @@ -490,7 +490,7 @@ export class NapCatOneBot11Adapter { this.networkManager .emitEvent(groupInviteEvent) .catch((e) => - this.context.logger.logError.bind(this.context.logger)('处理邀请本人加群失败', e) + this.context.logger.logError('处理邀请本人加群失败', e) ); } else if ( notify.type == GroupNotifyMsgType.INVITED_NEED_ADMINI_STRATOR_PASS && @@ -508,7 +508,7 @@ export class NapCatOneBot11Adapter { this.networkManager .emitEvent(groupInviteEvent) .catch((e) => - this.context.logger.logError.bind(this.context.logger)('处理邀请本人加群失败', e) + this.context.logger.logError('处理邀请本人加群失败', e) ); } } @@ -533,10 +533,10 @@ export class NapCatOneBot11Adapter { this.networkManager .emitEvent(groupAdminNoticeEvent) .catch((e) => - this.context.logger.logError.bind(this.context.logger)('处理群管理员变动失败', e) + this.context.logger.logError('处理群管理员变动失败', e) ); existMember.isChangeRole = false; - this.context.logger.logDebug.bind(this.context.logger)('群管理员变动处理完毕'); + this.context.logger.logDebug('群管理员变动处理完毕'); }); } }; diff --git a/src/onebot/network/active-http.ts b/src/onebot/network/active-http.ts index 2b4d549d..5e62369f 100644 --- a/src/onebot/network/active-http.ts +++ b/src/onebot/network/active-http.ts @@ -50,12 +50,12 @@ export class OB11ActiveHttpAdapter implements IOB11NetworkAdapter { try { this.obContext.apis.QuickActionApi .handleQuickOperation(event as QuickActionEvent, resJson) - .catch(this.logger.logError.bind(this.logger)); + .catch(e=>this.logger.logError(e)); } catch (e: any) { - this.logger.logError.bind(this.logger)('[OneBot] [Http Client] 新消息事件HTTP上报返回快速操作失败', e); + this.logger.logError('[OneBot] [Http Client] 新消息事件HTTP上报返回快速操作失败', e); } }).catch((e) => { - this.logger.logError.bind(this.logger)('[OneBot] [Http Client] 新消息事件HTTP上报失败', e); + this.logger.logError('[OneBot] [Http Client] 新消息事件HTTP上报失败', e); }); } diff --git a/src/onebot/network/active-websocket.ts b/src/onebot/network/active-websocket.ts index d41bd7f7..47d75a6e 100644 --- a/src/onebot/network/active-websocket.ts +++ b/src/onebot/network/active-websocket.ts @@ -95,7 +95,7 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { try { this.connectEvent(this.core); } catch (e) { - this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Client] 发送连接生命周期失败', e); + this.logger.logError('[OneBot] [WebSocket Client] 发送连接生命周期失败', e); } }); @@ -104,8 +104,8 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { }); this.connection.once('close', () => { if (!isClosedByError) { - this.logger.logError.bind(this.logger)(`[OneBot] [WebSocket Client] 反向WebSocket (${this.config.url}) 连接意外关闭`); - this.logger.logError.bind(this.logger)(`[OneBot] [WebSocket Client] 在 ${Math.floor(this.config.reconnectInterval / 1000)} 秒后尝试重新连接`); + this.logger.logError(`[OneBot] [WebSocket Client] 反向WebSocket (${this.config.url}) 连接意外关闭`); + this.logger.logError(`[OneBot] [WebSocket Client] 在 ${Math.floor(this.config.reconnectInterval / 1000)} 秒后尝试重新连接`); if (this.isEnable) { this.connection = null; setTimeout(() => this.tryConnect(), this.config.reconnectInterval); @@ -114,8 +114,8 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { }); this.connection.on('error', (err) => { isClosedByError = true; - this.logger.logError.bind(this.logger)(`[OneBot] [WebSocket Client] 反向WebSocket (${this.config.url}) 连接错误`, err); - this.logger.logError.bind(this.logger)(`[OneBot] [WebSocket Client] 在 ${Math.floor(this.config.reconnectInterval / 1000)} 秒后尝试重新连接`); + this.logger.logError(`[OneBot] [WebSocket Client] 反向WebSocket (${this.config.url}) 连接错误`, err); + this.logger.logError(`[OneBot] [WebSocket Client] 在 ${Math.floor(this.config.reconnectInterval / 1000)} 秒后尝试重新连接`); if (this.isEnable) { this.connection = null; setTimeout(() => this.tryConnect(), this.config.reconnectInterval); @@ -128,7 +128,7 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { try { this.checkStateAndReply(new OB11LifeCycleEvent(core, LifeCycleSubType.CONNECT)); } catch (e) { - this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Client] 发送生命周期失败', e); + this.logger.logError('[OneBot] [WebSocket Client] 发送生命周期失败', e); } } @@ -147,7 +147,7 @@ export class OB11ActiveWebSocketAdapter implements IOB11NetworkAdapter { receiveData.params = (receiveData?.params) ? receiveData.params : {};// 兼容类型验证 const action = this.actions.get(receiveData.action); if (!action) { - this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Client] 发生错误', '不支持的Api ' + receiveData.action); + this.logger.logError('[OneBot] [WebSocket Client] 发生错误', '不支持的Api ' + receiveData.action); this.checkStateAndReply(OB11Response.error('不支持的Api ' + receiveData.action, 1404, echo)); return; } diff --git a/src/onebot/network/passive-websocket.ts b/src/onebot/network/passive-websocket.ts index 836f881f..85a73a94 100644 --- a/src/onebot/network/passive-websocket.ts +++ b/src/onebot/network/passive-websocket.ts @@ -51,7 +51,7 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { wsClient.on('error', (err) => this.logger.log('[OneBot] [WebSocket Server] Client Error:', err.message)); wsClient.on('message', (message) => { - this.handleMessage(wsClient, message).then().catch(this.logger.logError.bind(this.logger)); + this.handleMessage(wsClient, message).then().catch(e => this.logger.logError(e)); }); wsClient.on('ping', () => { wsClient.pong(); @@ -85,7 +85,7 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { try { this.checkStateAndReply(new OB11LifeCycleEvent(core, LifeCycleSubType.CONNECT), wsClient); } catch (e) { - this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Server] 发送生命周期失败', e); + this.logger.logError('[OneBot] [WebSocket Server] 发送生命周期失败', e); } } @@ -99,7 +99,7 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { open() { if (this.isEnable) { - this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Server] Cannot open a opened WebSocket server'); + this.logger.logError('[OneBot] [WebSocket Server] Cannot open a opened WebSocket server'); return; } const addressInfo = this.wsServer.address(); @@ -116,9 +116,9 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { this.isEnable = false; this.wsServer.close((err) => { if (err) { - this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Server] Error closing server:', err.message); + this.logger.logError('[OneBot] [WebSocket Server] Error closing server:', err.message); } else { - this.logger.log.bind(this.logger)('[OneBot] [WebSocket Server] Server Closed'); + this.logger.log('[OneBot] [WebSocket Server] Server Closed'); } }); @@ -179,7 +179,7 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { receiveData.params = (receiveData?.params) ? receiveData.params : {};//兼容类型验证 不然类型校验爆炸 const action = this.actions.get(receiveData.action); if (!action) { - this.logger.logError.bind(this.logger)('[OneBot] [WebSocket Client] 发生错误', '不支持的API ' + receiveData.action); + this.logger.logError('[OneBot] [WebSocket Client] 发生错误', '不支持的API ' + receiveData.action); this.checkStateAndReply(OB11Response.error('不支持的API ' + receiveData.action, 1404, echo), wsClient); return; } diff --git a/src/shell/napcat.ts b/src/shell/napcat.ts index 8675f7dc..8b4d5a69 100644 --- a/src/shell/napcat.ts +++ b/src/shell/napcat.ts @@ -176,7 +176,7 @@ async function handleLogin( } logger.log('核心登录服务连接成功!'); - + loginService.getLoginList().then((res) => { // 遍历 res.LocalLoginInfoList[x].isQuickLogin是否可以 res.LocalLoginInfoList[x].uin 转为string 加入string[] 最后遍历完成调用WebUiDataRuntime.setQQQuickLoginList WebUiDataRuntime.setQQQuickLoginList(res.LocalLoginInfoList.filter((item) => item.isQuickLogin).map((item) => item.uin.toString())); @@ -276,7 +276,7 @@ export async function NCoreInitShell() { o3Service.addO3MiscListener(new NodeIO3MiscListener()); logger.log(`[NapCat] [Core] NapCat.Core Version: ` + napCatVersion); - InitWebUi(logger, pathWrapper).then().catch(logger.logError.bind(logger)); + InitWebUi(logger, pathWrapper).then().catch(e => logger.logError(e)); const engine = wrapper.NodeIQQNTWrapperEngine.get(); const loginService = wrapper.NodeIKernelLoginService.get(); @@ -362,7 +362,7 @@ export class NapCatShell { async InitNapCat() { await this.core.initCore(); new NapCatOneBot11Adapter(this.core, this.context, this.context.pathWrapper).InitOneBot() - .catch(e => this.context.logger.logError.bind(this.context.logger)('初始化OneBot失败', e)); + .catch(e => this.context.logger.logError('初始化OneBot失败', e)); } } diff --git a/src/webui/index.ts b/src/webui/index.ts index a450d856..fedb2a6d 100644 --- a/src/webui/index.ts +++ b/src/webui/index.ts @@ -29,10 +29,9 @@ export let webUiPathWrapper: NapCatPathWrapper; export async function InitWebUi(logger: LogWrapper, pathWrapper: NapCatPathWrapper) { webUiPathWrapper = pathWrapper; WebUiConfig = new WebUiConfigWrapper(); - const log = logger.log.bind(logger); const config = await WebUiConfig.GetWebUIConfig(); if (config.port == 0) { - log('[NapCat] [WebUi] Current WebUi is not run.'); + logger.log('[NapCat] [WebUi] Current WebUi is not run.'); return; } @@ -67,16 +66,16 @@ export async function InitWebUi(logger: LogWrapper, pathWrapper: NapCatPathWrapp path = `${config.prefix}/webui`; // 打印日志(地址、token) - log(`[NapCat] [WebUi] Current WebUi is running at http://${config.host}:${config.port}${config.prefix}`); - log(`[NapCat] [WebUi] Login Token is ${config.token}`); - log(`[NapCat] [WebUi] WebUi User Panel Url: ${createUrl(config.host, port, path, searchParams)}`); - log(`[NapCat] [WebUi] WebUi Local Panel Url: ${createUrl('127.0.0.1', port, path, searchParams)}`); + logger.log(`[NapCat] [WebUi] Current WebUi is running at http://${config.host}:${config.port}${config.prefix}`); + logger.log(`[NapCat] [WebUi] Login Token is ${config.token}`); + logger.log(`[NapCat] [WebUi] WebUi User Panel Url: ${createUrl(config.host, port, path, searchParams)}`); + logger.log(`[NapCat] [WebUi] WebUi Local Panel Url: ${createUrl('127.0.0.1', port, path, searchParams)}`); // 获取公网地址 try { const publishUrl = 'https://ip.011102.xyz/'; const data = await RequestUtil.HttpGetJson<{ IP: { IP: string } }>(publishUrl, 'GET', {}, {}, true, true); - log(`[NapCat] [WebUi] WebUi Publish Panel Url: ${createUrl(data.IP.IP, port, path, searchParams)}`); + logger.log(`[NapCat] [WebUi] WebUi Publish Panel Url: ${createUrl(data.IP.IP, port, path, searchParams)}`); } catch (err) { logger.logError(`[NapCat] [WebUi] Get Publish Panel Url Error: ${err}`); } From 31b0c1d3d703eb53d15311ead7fbcba96de600be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Fri, 29 Nov 2024 12:22:25 +0800 Subject: [PATCH 138/418] refactor: react webui --- src/framework/liteloader.cjs | 6 ++++++ src/framework/preload.cjs | 3 +++ src/framework/renderer.js | 14 ++++++++++++-- src/webui/index.ts | 2 ++ 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/framework/liteloader.cjs b/src/framework/liteloader.cjs index 96784924..4d7a04d9 100644 --- a/src/framework/liteloader.cjs +++ b/src/framework/liteloader.cjs @@ -7,4 +7,10 @@ ipcMain.handle('napcat_get_webtoken', async (event, arg) => { }); ipcMain.on('open_external_url', (event, url) => { shell.openExternal(url); +}); +ipcMain.handle('napcat_get_reactweb', async (event, arg) => { + let url = new URL(await napcat.NCgetWebUiUrl()); + let port = url.port; + let token = url.searchParams.get('token'); + return `https://napcat.152710.xyz/web_login?back=http://127.0.0.1:${port}&token=${token}`; }); \ No newline at end of file diff --git a/src/framework/preload.cjs b/src/framework/preload.cjs index c24da2dc..5cef7534 100644 --- a/src/framework/preload.cjs +++ b/src/framework/preload.cjs @@ -5,6 +5,9 @@ const napcat = { }, openExternalUrl: async (url) => { ipcRenderer.send('open_external_url', url); + }, + getWebUiUrlReact: async () => { + return ipcRenderer.invoke('napcat_get_reactweb'); } }; // 在window对象下导出只读对象 diff --git a/src/framework/renderer.js b/src/framework/renderer.js index 97dc1fa6..1f9d531d 100644 --- a/src/framework/renderer.js +++ b/src/framework/renderer.js @@ -1,12 +1,16 @@ export const onSettingWindowCreated = async (view) => { let webui = await window.napcat.getWebUiUrl(); + let webuiReact = await window.napcat.getWebUiUrlReact(); view.innerHTML = ` - 在QQ内打开配置页面 - 在默认浏览器打开配置页面 + 在QQ内打开配置页面(VUE) + 在默认浏览器打开配置页面(VUE) + + + 在默认浏览器打开配置页面(React)
@@ -18,12 +22,18 @@ export const onSettingWindowCreated = async (view) => { `; + view.querySelector('.nc_openwebui').addEventListener('click', () => { window.open(webui, '_blank'); }); view.querySelector('.nc_openwebui_ex').addEventListener('click', () => { window.napcat.openExternalUrl(webui); }); + + view.querySelector('.nc_openwebui_ex_react').addEventListener('click', () => { + window.napcat.openExternalUrl(webuiReact); + }); + view.querySelector('.nc_webui').innerText = webui; // 添加点击复制功能 diff --git a/src/webui/index.ts b/src/webui/index.ts index fedb2a6d..b3a40d2b 100644 --- a/src/webui/index.ts +++ b/src/webui/index.ts @@ -69,7 +69,9 @@ export async function InitWebUi(logger: LogWrapper, pathWrapper: NapCatPathWrapp logger.log(`[NapCat] [WebUi] Current WebUi is running at http://${config.host}:${config.port}${config.prefix}`); logger.log(`[NapCat] [WebUi] Login Token is ${config.token}`); logger.log(`[NapCat] [WebUi] WebUi User Panel Url: ${createUrl(config.host, port, path, searchParams)}`); + logger.log(`[NapCat] [WebUi] WebUi Local Panel Url: https://napcat.152710.xyz/web_login?back=http://${config.host}:${config.port}${config.prefix}&token=${config.token}`); logger.log(`[NapCat] [WebUi] WebUi Local Panel Url: ${createUrl('127.0.0.1', port, path, searchParams)}`); + logger.log(`[NapCat] [WebUi] WebUi User Panel Url: https://napcat.152710.xyz/web_login?back=http://127.0.0.1:${config.port}${config.prefix}&token=${config.token}`); // 获取公网地址 try { From 1a0da00f2d7d3acba44e7a0adc746792ce05ab59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Fri, 29 Nov 2024 12:41:52 +0800 Subject: [PATCH 139/418] =?UTF-8?q?refactor:=20webui=20log=20=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E5=85=AC=E7=BD=91=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/webui/index.ts | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/src/webui/index.ts b/src/webui/index.ts index b3a40d2b..6d83d20b 100644 --- a/src/webui/index.ts +++ b/src/webui/index.ts @@ -3,11 +3,8 @@ */ import express from 'express'; - import { LogWrapper } from '@/common/log'; import { NapCatPathWrapper } from '@/common/path'; -import { RequestUtil } from '@/common/request'; - import { WebUiConfigWrapper } from '@webapi/helper/config'; import { ALLRouter } from '@webapi/router'; import { cors } from '@webapi/middleware/cors'; @@ -60,27 +57,15 @@ export async function InitWebUi(logger: LogWrapper, pathWrapper: NapCatPathWrapp // ------------启动服务------------ app.listen(config.port, config.host, async () => { // 启动后打印出相关地址 - const port = config.port.toString(), searchParams = { token: config.token }, path = `${config.prefix}/webui`; - - // 打印日志(地址、token) - logger.log(`[NapCat] [WebUi] Current WebUi is running at http://${config.host}:${config.port}${config.prefix}`); - logger.log(`[NapCat] [WebUi] Login Token is ${config.token}`); - logger.log(`[NapCat] [WebUi] WebUi User Panel Url: ${createUrl(config.host, port, path, searchParams)}`); - logger.log(`[NapCat] [WebUi] WebUi Local Panel Url: https://napcat.152710.xyz/web_login?back=http://${config.host}:${config.port}${config.prefix}&token=${config.token}`); - logger.log(`[NapCat] [WebUi] WebUi Local Panel Url: ${createUrl('127.0.0.1', port, path, searchParams)}`); - logger.log(`[NapCat] [WebUi] WebUi User Panel Url: https://napcat.152710.xyz/web_login?back=http://127.0.0.1:${config.port}${config.prefix}&token=${config.token}`); - - // 获取公网地址 - try { - const publishUrl = 'https://ip.011102.xyz/'; - const data = await RequestUtil.HttpGetJson<{ IP: { IP: string } }>(publishUrl, 'GET', {}, {}, true, true); - logger.log(`[NapCat] [WebUi] WebUi Publish Panel Url: ${createUrl(data.IP.IP, port, path, searchParams)}`); - } catch (err) { - logger.logError(`[NapCat] [WebUi] Get Publish Panel Url Error: ${err}`); + if (config.host !== '' && config.host !== '0.0.0.0') { + logger.log(`[NapCat] [WebUi] WebUi User Panel Url: ${createUrl(config.host, port, path, searchParams)}`); + logger.log(`[NapCat] [WebUi] WebUi User Panel Url: https://napcat.152710.xyz/web_login?back=http://${config.host}:${config.port}${config.prefix}&token=${config.token}`); } + logger.log(`[NapCat] [WebUi] WebUi Local Panel Url: ${createUrl('127.0.0.1', port, path, searchParams)}`); + logger.log(`[NapCat] [WebUi] WebUi Local Panel Url: https://napcat.152710.xyz/web_login?back=http://127.0.0.1:${config.port}${config.prefix}&token=${config.token}`); }); // ------------Over!------------ } From c05cc9dd02cd2a1a9617caffa2702c881a3e4c4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Fri, 29 Nov 2024 12:48:03 +0800 Subject: [PATCH 140/418] =?UTF-8?q?feat:=20=E8=BF=81=E7=A7=BB29927?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- external/LiteLoaderWrapper.zip | Bin 86820 -> 86771 bytes launcher/qqnt.json | 10 +++++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/external/LiteLoaderWrapper.zip b/external/LiteLoaderWrapper.zip index 000f0b3787fab0b8c3b1ff48093365d35dd79ccb..bae1ad15a5558665b688f1b7576a725172929d09 100644 GIT binary patch literal 86771 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 literal 86820 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�~ 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 z z@3BigHq@7wWQKMy$R$fKw7t&q||K8~)=3ei=}k z`dsgJhcm-;0pJ_`iSvY+S7yQa!1#EC?%#U3`1k6@w!R9kKN;g+7hK3+sVm$+a!GR= z^FOVV|J(j@P^`3NA3aR)pVX< zvH&g(#>FpXbpJbatDEQc(S9x!Uq@r_s9>WxKriv){upQmA~e9=;>$Xc(4khn`}D7S z>fwx~L(g!$@GaHGo0k_|R;K+p`9mDgr4nC-+Pt!i=8GC;UEnozz$HfTr`*>}T~BoU zSsa*?(%66pbJ+%Jh!$Bizt`Yig5IJhuu&{;2VP&i?nMj)0Oop&c^q@`#8uC=!GBUVtWVW_>K zebJ<+xQV_w?l>!Z(@ zTPi8HDACuAdhB@JH4Is~D8Gji{26!d8FY4tC(RkRCAni9IJFcqu6SePpu>jgO&>m}M@k-|iE-lOxS2Hve%0xZ_1Ejfh%|^Y2Yk;yEJ&K1 zvWM@HtQyaMPlN@5t%PoN<1GqHsdExzAB?EI^ocV?rV;}|7IdEsXUIDV#j@ z?O4Fp4tkMGC0mH&1_^KhC5G~7^^70(&V~d!4K4d7plIc~iQBy+Sp z43`_!UICSaM1n!tk9-4j#rdb!_8o=*SXz2?R#_wh=q_y6d$>*IT#lcHn3DaHgt5Vo zz9CG}-CT?2tdyJQKswd8){$lf(bUiRnA> znFVu5Kdr!tifd(KeRs4+Z z-VyrEF7d$9Q>4hH(#s3AHa|MwsYgn^;nsOcIi~Sb)TZ&EiRY1i4yY|c$St2{6n$_| zD76S}FN#X=(!eN!I+s=hTQ5dWdA4MvNS!;D_5@#Sg{A~mPJJM11yb^ks zw!@k|(%QN`YSpm1O9_VkKhoYY$kJ}h7EasFN>sYiwr$(CZQHhO+qNsMO0&{-=9l%J z{<`1Wak}s6zB^+7+7T877DeY^e@?BteJ#uB91K~OCyxBN7bpE)((Cc;BCUn zzEJ^Zwc>5Qbl6@2;tS|D_k_jCsUc4Zw8y(ttLY|gNj;5`EkN&vRzSg~;x=BXQl}! zr^}o3DR5-oA0%q(i?rZ7ByeQR=O<)EE;HMVw!4DGUg8XMG#c^((9`~#`b36senTjb z>Je$`{YJm4-H;45UPZ}x-gbOWZJoIZLDdA$X@0rBNwfZ324|vybzHAE8*}$2OsasY z4ibGGyRl8VhAnc!6z3Eipl+6G8=$<_Z4i2jZRT7ZxlTE&RH~$uuy9&|<>xF{dRwOw z9aPq)?0Vh}nPY@_2AY|0ypz`>dO5VFC69xP^+Y3GM>B=&Fm~nf;@>Z%R$MarI z14~b)_vig;hs%$xZf>{h^|6d2b_)0s0!`cPkiw0!lGe;CL3Xez3UpBaA`LSC27j6RH*{zqw$COrB{=^SqD6C^r1rB_m3%a9#KJ`3;f@s)qmahf{fX%nuEMpgee>>Rx{8Pw_#T)LRzSJXsO6xyIN`PO?SiJv0O8=?o+S>nB*8hdN8Q*QhGE3sxYiqP}kdljVNthq%)r-&04h=hj8pZuh* zlXpT?zeZm!%WA%DB$n)Bxij@dq^AX1ps?Vp&GGPjj@0g9JWOKXwd2>xSy5ffD~k;f zB(`6mR=d||yK^}R73}N6kdxZP7NS}(!J!r!wDTed#(;x^4Ml;EklS3D_~6&6R0ghZ z8oLj{*XY0_yHI*^d=kQWuK>YCHP`n3z`xeQQYsqw$zxNG`TCb2D3_&cUGEE*{rS`W zYh3oXuI#^IGJ`K&!2c4I6@UT&{F^JnUqJ64An&gQ|3ySLB+nN;|3#HPLP^$*6CG{H zF~xu!tPT}Irz{uWv-8GcD8qTf881zMuI1YW$@GU!Uk6AxxWeJES~Fxs!s;~LJGy-Q zc=fIjmMDodo?a-Xw;&c`Vp%EzUC4!=l?ODoOrceuGj)VH!GLn^L!0mf@R2VCs@9u0 z+@7;^lnfzLo?8=4?!GKkSm8=${03TYHchC zm<$es{?UJ9i{I->*r*Q3&fVxSrZU`(Sbryws*rctjC|>5iH9@XcM3M4r(*TUQTVH2 z7m*n5$$w8Y?T1x7(N$Y9&P@ydiEh~2m^j`XK!?PPKIBdZGkogYU?!}vr}MD4&+~_^ z&*#x;iw=*^nceTOqH8TL4Pz$p{*F_4Je(ds4at#!srtN0o-U#9eorJp{B~M$@fQ~_ zCi3d(QdF4)Z;I67>_u3thnC+J@QUMEyQm5wNV$ei&dx#BvJ#=(cK*3_b>grqnYh6@ngIptf*qWjt{~Owk2tmwEo-!C9r-si8Mc3cTjZGU z)^d0bDY~zFHFxk7=%_Ua)m|o1Pd+q(^3_ST{IWjYW;7K4K64cYA~pHCBAhwy$dl4} zNy>BG+(K8-c-km8nOI17o~fJBo;dw(HnuWs`bt=d3H0XbET-_3T>{5}|e zkt!iWCOxe(w51{=S0+e(7Nal`wvosiB7>_JTuP=mU=tfujoJ+Yrv+L3F@2jLTqM{J zr-`hpn<0L9_tA4Z$z>qwr?&eQ2a5tMSg&u-iP?0?cBu$kPX4O0XbH8@)la0NStQ{| zJkVuJvFM-kvGZi6OLgMB?alza!a~FPg3EJ(kbh19aK{^xo3=)gjPYglYc5&P79-Tu-4Et>NHm+#!nsRooTw1)P?7nTklZO56L;lv#b^UWu(i{P z+^E$GG=RQYHbH(|w!RSY7)$)*#~yl1A-VQX3hp|!P6G}`d4)l`EL8sI$b8|;`NoYe zKnO^!6@t(CAX@1av4+PLQLv?`llcU|wFOOPCja<9FC0b-)!2>V!Bo08EI;K^{_!9n8xT z7s_mjFKw_w4;-c%?)<(-k#sJVXKlj{m91W;UdfFY1=7ACU@Sk_XbU*#w5fuTHpGGLiO;vAW zm7#;$OPkj20NT*J05Fvc*Q-%GWn{!L>`wvZNGQbJ%bmk|Xj&7(HYsdak(+F=)VbZq zVffu`fyk?Xv=GAra1*7O6r@LJh5$aZ94@o_K)YIB1b^_k*%i(~?ZG7Y)}K*S9Y{PP zf!gq&`GRQMB+B)h4XbSU>Dd^Ga0h2<{Bz*Xjj=xrGN+F^aTiCfl_$06@#-zGn1$y>$gw{@_xo zj_@}--mMI$QY_Z(_$0qbc444Kxjr^zQFd15R7`W|nQ^~gcoQotsmhg9vK-JTzp1~* z-KWoU`R^VdD~7tLSW-ohb?CBWWJl``v`(g&1w}G8BK3V1TnZdw@k&*N=NJd(C|#bD zyGy|FN~;pOYu%1)EOD+yAwEZR-yU|^`U8{qQhZ29w0ATHva^;=J9Q%%EFSgRz`B#@S}_ye{4VI9He%62Tw2#zoOc3?7ZB9DI{aEATH@eUl~$o zBnEXz;364*zkNkz89>0~`a31X(PdIKI5HXvt0G7EcYruC5e~z3y)2c*m>jnAIMf+Z zy1fXTALDL6=Y5~Hi>*-zFqy%~Hq@pfi!|fXQYo)yW%nL8Ib!w)yLrH3Irq#01wgCY zFcY;GMH`e^GzG(EBtwpwOOJmv!qJqGv0Lq zUz-r@TT3`~N>8~WyT}Plum{15vS4}Cc`5CP6xVL)ebD{&6m+(ECwi4@jGHt}U+0I7{v`_XQI&UT;9P#OP%u8RtfY6^<`sY!$@zvG-8wcX=@cn6of|BT2pptqA_Shx3fd~Y(?w@bVpz} zD{JdA12cxc4<^MQgDt5H+d+6{y663Qxc*dla{nT;D$aqvjf z;RiY`VTi7OtzA@#pLBzrXmgHh&d`7e(bb_Gf0F`a7*GNkooZ|Yy5C7!H@ZopuVxW-mn5lR8NpK!9{zQ{5VCAL}E~gkWy7ci+~jWTBNl;L@9_BOA_gU9>(^TpQ=n;dgT&U8D(3AIMSn_jguGUBA_ zm&P4qlvS!w9$EW-CJ?Ab$(cN9$1Lh(01gWE{$_z%HiA|BP2%#$FtFQr8D3+OTI=#i z%6t^`zHuRKwj(7?Y!sL8+?#Jt-LZs5L|0ZiwIm`@d~V(^V5wo#+x*~D-OvL{rMMgA z#Khf32Gu8K;Q`KWYR+`%lG4QswuvF^M%^E1(vrw8xXJD)HL+fv!R3KmnTzs#Wzbj_u}aA9ESZ1BrL# zItNp9?RqQ_iBFrqZ-NYOHLJ8CGyQJVDRm0yYA;hBwiRGV{4T#yzrL?Wm%+qzmPR!) zeUBInk!ullvgT{yFnwxeo7hKPO+dz*YC@0Pnl-W4L*&D!O8DK-BJJn4&A2Nu$)_4V zcY%la$-d9mZUTq+ZuQ!H^EI&evxolq?i%>&g#2wP^e>)Yvy`MPkohpWFKaL!8=)rz zYhZ=UyHG4(m5%WPYcIN`nk|i&(!$J0*JKJK~k9I3@Hl#N2V9fMh>bZ|q^6J!YXHhAOp(wk997FxwXm)_5Ye7-HnyoVG`qd*%3~=8n_NGlA zy1L3-`GMFW(B{B5Gld>|jLTOa``SZvHwW5=L<@VyLs;4CBXF7x^6iEqKJL(h$jI4H z!AJ@kEST@V+-bc%bbuWGh)0Qm+a@C^@Ff##qNXUzQ)o_JVO7(AX_Z5PE5R(a#%mEA z!I!Ezr3cFsAT26Qr0Uo%l(7}9oP_W=4D$M3Xmr8Yy#Dwd=d4M}V-ugk;AT&Q^TX-= zgrNIP_NRp`&N=lLsd{IRnY%N)=jg%L(i$nj?z=OtZ*Oi4pE&k(^(H)6{;(R!Y9FBW ztu~53kb@jjL)sniFB%+#0X^DpZ311GD5&>A-Y1)~krNz%4YSkL-=ZTAbbu6fYQJ=m zTOVqvD7K2KQBU_NV+Te8zS1_U&W&_}#&f;vcq&%oo$uc?5@@bGmmBgklBD&VDA?(O z9Lc9&q~{5v4OU=L3ei(Z`1{!OQ{`PpQN%zY*%A@dE3nwz?9jeAf-mpn-VE89IbQ|M zSlx3ZUZ}9m3iRpn>3wl%Mvz&nl)eYT7WE0!^&+Q<4s|IC(S9Kjy?Tawc(3MqV*Y72 zChjNhy=LJ^F=Tt6KSP63`m=n6=NxO;32$vOL?FL4(l*}}wxHeUiPJbD6j2M1K65~2 z^G5JS|2o_VBD#3`{soMCfh;ez&d6$L2;X-$yuU>@bG9g*5_Y4B+Qp{e)wyL{MiTpe1|Z9`As1H$3gsGZ~tY<^I4$M zA$)BT2sR_V)vlI>fHi+vv%F0!ZTeSjac!g@tIhByVlw2UP`HY+eP1ItHv~TM&qyz= z&!E+*xyS6a2tQ(utx3;>XXEm4P43r)?3|e%pDZ8GdF{>~cCTzPigdD6S$i@T_`R9t z8$cMm0vDHytvV9N)B_|UDu{`(VX7Ne!fOZ%Pdx2hdq2xq3j)7hU`z93N?`?nspZ!~ z!z8^!yu;bDq$sfV-CNRp3muKVdv&F}ro1oDL0uv|UAOH=g?^_oNLw{_5Oe|6{IGlJ z-4vs`^M_rf*XN;wl$M_C%x0ObDV|ItjsjqWyhK?F;0{w9-PF3eX2R<4l8H1BL&IkT z$15+|=6R}&+7)&Io`rf*3z{CJ?j!iiQi6g=RSM(1h^yw25aZvLMjS&3IL%RjsL)~s zD0*Lwj-3^jeJ4cSx9E5AH!`I8%1NK;sTpnGO2DJDhHB+aQ~QB1zq|%BlZ?jfHYm<- zgUSc!yFA}-M_A}dljtr?ge%X+a@gs;2bJ&!lmrlvA08WIcb2g z!IR-B?sMM4G*kmKMrG`iYd-&KD@IzbPqcmEl0X0cKjPw_$-&Y89v3!_HU>79It~V= zMppmZ*5bw&4Eh_`v950YWN0(;W+Lry@NM+_ zEYPWx$dxAI79VQYu_jGcI9@k2TBI~Ru!kN_s#K1xjf!w51f&P)F>~mB_fy4>u~A(y zcPK`}VdI2506SGe79nAAYN|qXKI$TF%ihjV>~6DLWSHG7GZV8m=7)ye8Kmm@m1eU> zJDoS1ts2~FIn|J^>KdVJ9W3kflBsg|Y<;bTEtfv(r*l+FEGrH8YQ6d6Co6ive4@Kw zWBPvC+WoWZeFH>k7|#5Prs;un;NU1BuKYgC#amJ08Y#hUDxJZ#=qnC4t=e-y_FBDr zFMSHNOQVJuc@oh`9V}-NKD0$rQ$`XEbCM^uv7Z`F8>J{Q&^~CAR|0 z#rFW&q1#44tO>Fi4>vWTNsMDKe;Rji>C^T6a>+8&qyF)5eluZW^ZA7T?UY`Ljb@CM zrXc`m8ZlguAFymUUqW6Pg)lkWX;ew@stoux4ur0T|HnY}>ni?hOXa3Gx_M4%`n6&P z;X8jotEa9(t8S{HL0XKM{yBU0z<8O|=-4ZjUBbApaoZq>xFc7tSS~TInH&-^Vi1@vMH-(DHky;$gf=TG7)irjY|37&4Q9-aWRcR zZVl6=RMI7GaX5$ai_I10>{5pj?T2YYiEH zyV}KaUafYUsNBBrF*ErgbEwX(ex28FvmF~VH_=D4!O)Z#hK{n=KPZK}PP4>RqTCyL_DL*n`i0}Rg!lbxv}ozEThi9+*!E*omD4$?=m-k)uUiAa@kC9ekAXd@0MSF|W3ISZZn^rPf`3 zdABxr?q&7OtY4_6MM86HPnlKpDTJv+fg1<<5Pnz5DoC^MQE&j!7`8ryKrBp}>M|R~tP48vM zCJft#x}I7w`K`KMr;Ke;8hW)`+bM3RKme^jhq1|cx~%9Lra+{Q!ht0HGJzxJKoGnQ z+6E6=$!la$G3#ekBh0+=9WtTzq7$VBNP|(W=X{Ior|uiF-heL1m*vN^b%!jARtN;mAK$V1aD3CpT65LaRsEV&a{DO$5FE<-8;+(t=$K%qrfH0bppCj zKk=T7mQbS{Qsh^jl&C5CJW2vMdV-D>VHuLnc-uZkmQLRi2q9GOAR#D+z@ z8{!>})<2#bHzWhUOz}H0Y~f7^$k6R`@^xT1OrLeopPpy3p;vGG>b@mybs+QXMEPj! zzW;c)Jz0>w#ujCrtB{&6@A|zE%hF_{{`gbu)2JOl7bR|S9@h$s3c`@U$+`6Az;?Di zo`N6oO}U2S0>5Bw0pY&pOnsXs(T*3rDU(fbfIt|FuDqKqWG=#wRPIKLQAsS3$~WS? zkFSHV-Qci!(JZyO73^645UYCYtkIZnieZ~Mm`RzsBYH1|t3}=T<@$+alGV|snvNlx zzd*iT_n<4{4zW_Lr)>W5*VB5kUWQXBb^^QJxv?*set32~MS@tL!I)Z6UEuMeOsXU+ zs30qr9{i$ihhPz-<7XRhbk^%tW+?Qq>+GYJL-QW6$kbI7BK!hCA4e7OTazzP#_Ms%g-zfIzMC-{k2-F&YMG>=-x)U6wBN$mCC{T zR8fDXtLPw?NG`{ea%as>z0NU~iZkyxxem*D(&+56(#5*UYe2*m<(##j*AyN7MW&o$ z2E0GLu^L9}scoIIZSSwXqd(&;li-E1A{(t2*BBAPt|~*Jg&3`k2=SDx$3{?gg2usX zBjf8xDQrUlBBZMQg+h3xX+d3l>=hgM?w68c%g31iGav&9o#v z+&SR=_omQWONI0dk-@E=STLV(p7^nAQd#iPXIGmykL%~!!$3%18aT)2v!oG|p<%do zs+kAz9Sg%x&y!vo6&?-w`uJ?i%yiO$J&*yxS6*9hr`KO0J41_A4HG*D-C}ZA60{?Oxyh8#;UZo%y~9Do#Xj2eoplJYuyii zz_|5_ij0_=kP_tt`Z^uHYdzltOs0`$G?eAE$A=0ZMffuf^O!=rkz z5soV#q>WFT!~0Pd1q<`C40uY9RNK~)h>HvL#%h~gT(?jCHGb>r;mg$dX(ST1&1>J| z&Ow9ht0h+_uq?6>6cXC|9EQV_;7 zdt5uug2MyM?%!mXUP6SgaCarbM%Sg5>tS4s`z@JJAU;_|Q3;(FZ~W4(J?{+z*pWp9 zOfs?gU~xyU6e3nW}8LLhh+DZO)Zvk99NWx$d+UOPM=fX#*b&VpI|%(K{F#?WBGVHN6k` z<#RB)7#N0OrQm|+$L%;LQf;NGPN|;5P+6L7oZx^?E)2{f#HNVNYnx&FEPgcwjv$<* zSP|PCAHSwJu+D;CY~y9;?qFqhdJ`N!nGdMX^z>u_vAHv@l`aTD>`Ob2^80YWqVMED z_xaWKgn|t?O}Q8j1;Vs1M`2EQjS_Ymt4wBlXnl67=;{bw{tL0BQ=4-nMOzU6s)b#J zCSvSYpQp<+@lT*U=H<@ztBc*q3kTi1_XJ~YaETibP%~4GV`j&OT)=m@gI{NIyfMXj ztJd?cNNzU*+fO2!lWfl%h0+%S=DZefld@#g(aVP2>tE#OB>5nt%dS_K*H(NeLh`Ph zkHo!(zU&&R6JKr6!47I%#BWDY8Ivd)%4cvmN zvlAp{fe(i7^;l8fCpfkxJ)2|!#xRJJA>0d~%Y6I39Dgi7(Vab7S)~Vx=M&NqQM3^O&KUed#b7Fi>W5qA}VOVwbhT`%)mC|JodTbXUUPn>A5S`GFiB>7cM z)PV8y(kFJ26!rlz-!|6*D{4B-J~2Wiz2XX%kcnlyCIO+Ji|CP*ZB{pEVZ8G=)d)E8 z&Lq==@D-Nf-YnaafU00=^6nv~C1^GMCY zRKGL@{_c1vTfQ{;N3L=9w?%UEgrdUFUzYIm8W?Kjl{PG}9e%xSWjVzPZ0y#P5wD>D zG`>5Zonl_*j_&b}nDdxm9mM?{-ermjztGI^QtjU$z~Va%<4^XOVPjsIcpHqtAz`wI zX;%$4>W{SGe+6V}7aWO$qquWRaYasB_%Mz{@+u_$$bzyMWgw3tgpDvjg?FXge@O@6 zC^OxyB+)DQJkYlFChqLP-eBwSx^;AYl~@~=O`>ykedHQVW?ANj@M*>M?EKdGNd=-K z4#9?i5QttK#N$1#y7OK#5vhR@s5@e*c)%z1O&AJ@=pGj^opV-vjC^11C5RH{qfy>*FakB7ql-ZaHpkc6E0vc zZ*|x{&Wxd1`};)9dd!TVm1#TUt`p+@zAl$a78<1?@`B1Z8dl# zI7i2=W`~%IdDZuv4TI^kKCXcT`H`cC{drY={yl*kz}K|GW?p~=~i23Y|P8r)pn-vGE(# zRzMVkf;SRdNJQzM5{uBU>;i4`^kG1z(%k)A&RAzozH{x$58Wqgo5dq<-=#s4OkDW= zq{lku7f(*R*MBuZUQ&nu31swLmJL|Uw{UWBiR^OY5EZU7Q(R{eVbw!2C~mx@4_BB) z7i6XK#6S}58%Y6$$G3N545XoN?2t(zr{AF4qIktS*W30|d}GtOz2fct8KJe=0eFhy zIn}bFpRe|aa)@m0ogic5HChBw$3Yf@tnoVlmBvErYZ5)i1jq%IHs!);aL19dMiuQw zT8Wy52u?uZDH^Kv1lqQeTxDVKcYb8;m(&^#=F}5@aL35&cc&F!ws48&d@J5Mo8*6) zC7&O5X*uhF=mTdTaQr0iO0#PcnHwBNu+lPCCE}WZUS?kAfyDLXkJ(tvq)mqz_}O?Y z16u50pn-CV` zvw>UL%$Qn;p!WR)b7R`onMpK6~qT&J|Kjg==2q(f3HEsPuNy1Uci6shnfud)M%W8Sb|I z3)s3^Nst+H!|*dY{$YY0pW!{jm7=!*nVm187HIFrx_j$LVB3&}Pb%w)31i+RAa9s_ zWc9q+@eCqYw`DO z{P21om>}Ba0^En782`Q)N%y`Z&=7Pg;6{k zK4>^aW3J?PEgC@=@wrkj8h4>f@9#izzrQ4`r}!?>jPloAd^d!i@NrGf$2^G@pqProVRh3u`n^O@yYCk`Yykgr+0K@ zJOg~N`Lw7$4*R`aWiB^~+}W>X@+Z|{SD!MC;2Big%LHiLBSci+aFlXQ{g0EOKN7qE zI>_igu_;Rj2ZNKm3JMCwp|8M2I|M$#|BO3Lg;9ro!UF*O=@0zZeTcs`?f<bE+4K!u$0Mlp2uYc zzjfd;{mAvv4gEUiC)&z|4FF(>5Qfm5pBYmNP-8o~L);f$sTZ3+51{*c7z0oz*ewa* z>mLB|0j}!b;_qkU9IWpu>?~;(K?-7CAS6B5KKZWLNw=+(y15+RAsb=uvG-+Pys_d( z&iw|%*80210rj@U|055VB0`6 z`^B#3158U5r=gA%jh;f&ho2zN-GFtHH{I>VfQ7kNkGEVA6bIgw;~}6|tJN>{sN&2x z8nl^uPiB)7sHW>{+seimaOy?``e;abn>A)HV{7ex(loB6 zlEC^?gD*|9qd5PJIjxiyIZ>CEUo)hym^Tn?1j)meIlp*=o)5XDylewO&bOZ6J-~;` zte2Q7m;b>uvcc)7@~C$OV!TyM5KpSvdD>J<*QVsa*6@q_qj@JHdgoK0#KcB(AiB#{Z%TI-d`uf6$xN2fw?;TlzTig3> zY<6DlCF7pP#=<9Q&cSP7ikqut^L%cfknhx4E&&+ZEFQ=gk+IX0OuWA?ozx7mD7g^M zg6`labBByk6rhE(QJCs|=VRbdivNq!cy5 zTn7aoCO2AA#>*(LYUV!Fg$@nzzh`yZ$EXS=nDM4iD+w!Hr<XH`q0z zwgQndJb&T8fo-n#==`aL%w~+GA;*$X6WZ2xU^YusJ+HL+)Ih6~--AR+?zRzX9hgwN z)D4GO>KoxUwB5RHMAm@VvJfZDr8$RgZ}1M%;FRH9^l+`3$Qk*5z-8v8OIymKx3hAX z7O)Z`w38V{W<+aE_k_5gV=`qhxgXg4V|z1WE@jHt#uBrUbmLNZ%d0FAp%u+9AlnIS zC>|h^$riW&c`!ZOp6(hB4o=>jX|V^%*k4equSb(h(_#rW^d4l{(eiy_RlAqg-V%+C97%QuT*gc?b=x6lZRGv*A(q`bWm zA^?RUr;f7UYf4&9+fPTX-zUtSI(|(~rQIIX@&l;K36{LPU(d#z!g-Yx?|nSnztvsv zo*?lxRVcLVO{_>vI(26HoG<^1*-DxCuzGXm&Z5bBapTPTxaQ*S^!e^_Uw@IU2>~WQ zw-f+ai&f5TdRL4`K8qU_qr7hDKM_$dnH(s&7CyUewFq5VjI@Ap6b0)Yk&R--ObxDd zNeFXB_Y*9tC^^*YFoQ=`U&!*NRbl4`q`y| zBGUyn666SiR%ec3Q-1NlNmF2B;6f_pdD(n9iODI2M^QIBlqP^o)+#!sUXta(7XLi2 zF(xx+!pL?xh#h7PG`{ov(LzN@vLMS+CSJ%5lXtQlCwd$HeHa$glS~(<}nV5o232A>{w6$cj&hjSkha#IZ%Spv~VH!;!c)nk*I2d zBU6HNk%rI>zWnJ3jj4-t0%dFS@^UNF1d^!aS2GVC7=27bJ|>HU@rdkhxCF6&pcrk9 zMDMVmu(XpPDwlBm%U}AaV)#d0*eW#>oshkY)Y=1eZdQ+ss{ zi}a2P5xSmaGo07IC~l?&SAO!C4e=1OSI_TU|3$du|DK7j@HG+s6R7_j9XNkYasDQM z`_FLZU$(+6Ql5xjXa2emf+7?E@@!1@y4CsHD6jWWE|EAvFac`3cVSS6?n zI!U6HSO70BURvCQ0Yn8xMoFmeLGd&Ua?>{894IoesBod? zy-azJtn5mXnlGlBdzZA~RJbO=_F@F(>>VAZB0$zS7!GaLBO6+~1rZ;D!ixPM%=C{x z4U;)$55mczqXF@Zl7E_EJ%a$`k#(ByPkLWK{SI? z-k&wim6>BezKQFZ`b5bInzC}f9R09zzYv~ z`RUG=JE9Z4$3|8X8)TYa;mGEoRrxU)`zeuKzkf^5Kb-c9X4j$ACKJJB^Rg#}aVNS6ypxjAd_)!=_o+1B>^+cvQaYykB3J=veD~ zINdgPj`a?w5=ZpEcV^P;7*)m1+|33|%jfy6AL+)DO_6$zgc~|i;j7H@A5=elRYuUJ zb90|QH>iEptkz$5Zy%$e2ZBtv@Ru8f1bJLrTXd=F9zkS_Ee*n%wBtBSS>Ww&$l@oT{HtZOF#|l}3ulxLU+K{6Th1~rjN&U$h|2&^e6aKgP#M#Wqz{W4BWUoBPbu0I|dO5WFsZ#G>0(2Fwa})C4NyA@2!;M@7RpNLSFGhH~*SnU{IISho8VJyz**VV=_w2TMK z@2^?5GR1W8c}y;X`6bfkll8%U-w~QNP9wICLOnE5?ag6ZXSxG^Cj&qrlgI{~t;>h? z_mrCCgZY;G&LvFSzAcEE8ze*43x~1e7ecM^$n-vt(bF4JO355SqQw(Ao( z6`U=W1J#|>ss^QQ@}hT^$t2xdndRBIC(gY-f(0R7MK3Ny2iaqohTM$wuu~<#kyz*mhl#2}Ad?9|%#Kqhu91U|WY;)OpGkPYE zG)4B&fYo_=LgR-7|K{ifg~PZI;5p^qK#Y51O#B3Co%nliFqvCRXgHah1)_}TyC^37 zycpDXx)m}!zD{bolfm481Vdoab)pJE{?yE7;Ynb2$_|pM`qz3TTEhl9fHKmD?*MAuh(j|ILH?bw_UK|V#0u|MU_)?_e$*1iswl;(aE{1Y z?+9BF$Gf#k`D*tA1We5A-1HAm6E(uw=62an7bkl)A|t}2#AzZPx1>pBl*Ri=LWvVd zw8xZ$HXCm>KpTWpe07fpr-o7vsbcs*9+d1^Ci(^6?!*n~-NZi&oFkMdh-&8&Yx2$C zP|z=!un0wTh7vUu+1P1xv^aV|ZJ`hk4#Nh^+K@E|Dk6F)u+U94G9tHQKgo3yNxO2f ztB_{X$v?cp>^YuX<+{~`FTLfh<4uhsEayLkk7hTcmyAwWoVp7$iA8m8Y(#VzSr>|^ z%YW-Dc1ss5CZ;=B{q*5rkDk%?*8Bm8o^>(9)(9^V$=? z99F7<79$N?KS*2L_SOow4RJn^O-+P79p>=Sk4idD{S7=9vAoF*$fQh2OwzDq|-(N)`ZMhbqspn+<#hv~4TaQA?;7$Jj?|-uU<%*<(?x#f% ze&qKNIgP(?u4F~c8a&{QzU!TL6}yz*onawp<>KCaOk9deda+&u){I;L00D*EMu-Ru zmC%w-C7HY^eac6=KdGjapgf%3tzer0D8}^-YVc5P!CF7maRx3%Sur>y)#(P^7~B#I zQO|q4oMrz0r^l#~SDx(hZ!hqVR|ELE*Xf&*g<4jQqXvS+*H5K?>;V7(r1fkC^c+>p ztodzh9HstPH7PlKy`7P((Rml7tD@2zttb15G(TFq+P45-#yN;_eNh6ifjL;SR#=?S zSl&cpNU;z>0VEH|h|)f=ysk!L>@2-QCp~Q0OcfIhCqvAXKs?BBBn**(<4$8?5t~Sf z4cgXw9i^iU?f7lxtyj*^M=pnZ=d2>>EOw{z-<2%;+UvdgmuR)lF$o^+#4E=#y9t0{PLv>I>bIJ-J&pX*gwo zv8*}H2=bY~V+%EuqL{3VV0FE}ib2sq70o5b>X%Z_A4<7nmTj>!!pjGZ zI&2GLV3!{WB?h668>u&>vG663#)^TWzn#ftRh}JI1@9LgE<~_%Wyk2i;(eEjj50j( zq0CSc9#WWC@jid9#mv~Xv%UiGbiv$%(OdV}$-tn<-X*8FPNaSKP>M9I$GobJ9B%0S zRABv9fdjzvidoWB0k6H6s2(k9Wf{l?{K&`)7rnua$QYK{5#z^*TPk(sM zs+v+RBa{{4J=6zp4*Sp3?;{0LhJy-p-aU`P8!@~C!Y9Nd`B$0~mP@|(O&N`n{G}uh z)-P|=57J0}t3i^_07$jBGzQ@**N@I&%pPnkpEF%M$9q=U0$rhhYJS3wxh6?&mgJS@ zG|6|=RMdPT;z9Zb$?q|nB)LghYway9SV@CD*aGxt zZ1SF!WQ|lRX{FeggT~v6f%|QZH&2%2xKQE^kZ8|txj8j5aU~==x$X0 z*^y(Ou(i>f_#7HY=UEnw^(Vj@*9baqeHy*7ugBtHtJyWH+TZT{Gi{k(oV_JRY{K$3i4#jiI@{%Z_U?CTCt+7@eSJY*`d zd5qaI&X(u+Gc!7$q)uy=prsbc*BTEQQugz8v!#PUL0$?ZGil2?bgZrwQouT1%5Ku% zb`OGg|_=TO2Yr5oDEzc4#eH zy{cK+IULD6m8x32#4q{ap;K`s-w<=_S@u9@- zm8e(G*QG`#zP?fz;OA(7XC3mpC`VHyO2w*v3^1JSU#S{kIBoK(kO8&`1Kfm35hzPm zMjPO>WPnMUXspbYssTQy8sHMJ36B(s)Us08gr3_3Bt5+{Y!jxHWD`B!fmDYOS63!l z$P+044Uxn)twdvdUXuSpY(Ot21El~KG{h=@-L9;mu zLZrbaD4)(ytuGa5;=fc6Kr*S3&s&zvp!zKO4!iVid|bRAAlq%B`kWvLF? z+9UanjJHp0g?b^_GkX0bJ5>5A686s`*R~mLwhFBmT94XO$gS79dUZ35XDiWuj~Vf| zduVvvRv!nLvT5luuwxYX1c$uQ5Ei-v=z_0qwohy!$sf_*dXtbm$hlD!d?5snv#%?XdZp}ldY=R!0 z06n@2tVH>82==9U2=7Zv!E#|Nyzib<`%c2~yAyiOA$o2D^&C2P=%_+FbQE?pc6sk2RK0GgaHMAR<8@n`wq|CPLng zLf#dsywgzL6NJ3UUQ|~%ySLD%e6Opk5C$_C`r&)+C0oPo<$-C!UXJ(mbiQePypeaB zaWoyJ;ejD<8GXFDV8}a+r(lfuW-p1+-o?Hs#A42fng;c<@l;#yMHI>gi zp2+7iFfAIlG(1JRW+^fNfkFy2qc*Kj7o}vc1UypE`JOL9Si6qxZmnv|41C)KT&3{f7* zM2y;0H;BlB81aZjLT z9FrqIFTZLB|Gp%H_Xb+f?SKj-G$9giB6a@(LE@SS5>g;vaIhkecy3ib`6d{oeuYW- zva4yy5r?SYI{oV_2=`8o>j2H%b{rQZnqZy*UFal9PH@PY!z32D)f#N;QdFi9rJ3))V1LmjNvhb1iQI$v1ovRj*nFE(!3AtG)PY{4hnKoi z_BZ^UaHeeheEC@_ITIjhxxj+Q_6lJ zB1b>xJ#_g}_9^}LE!6wTgHZ}IRM$2|xVE}-lxFKxk^~B8APqRa4)AJHPggSd|Etk} z9|8RZR_OY6VBOZ(Or_e1L|=(oOaW^wls=@|Qz59n%_ z@>+a{(4v^<(xCB*T;z0VEsU<-3nlsId|@d!5I90kAstZaZ`{m03Fyf-Ct+1DQdLrL z++Q8NW>9K~fULTrQWExv4NmV8>z^Zx#5H#aLD6 zSMgCbB5}~-BuTa2pecI45+>r33=8KNZp<$Pjfa5e-m71j8jAI9K=<)tA*QB;&PQhU zY9FU(Pryn?g&oLXhs;#(fyC@V6Q>!Hzha)k*W{9%6f~}LkRurq$=8^E`Rdi9;r(6O z-8}i`(-3%+;Nnu7v2P2qw@*8+opf3Bh2AFDUS>j%N_VuOCrLU3a9 z!TZc7lyX=RMePd*jd$esoI;qt9wKTD{(?SNM%7Zq$lw>G=wprszIlPN{@)_;y~P%6v%L@_q+H<3FC!=)gK`E$9gRwk!36a^nwu4h*;0hA`sx zOZ_0*0Z4ug-gn{s0^SSY9UnAS;qpl~zO)^k_Z7e2jiCo(Z|4K+1I0SjR95B zpiW7C-7d(6HI<~Fue%9?8E5^OQrD;){ZqE})&8A#IfCoz zfN>$nL^<{@Cbb8R|C)~#wxK6^9Mb~EuRg~t7_FupOXTn_Yg*p`U+6 z95NWNy@qKPn6sdOvS3)oJ&v@D<1nL{pw%*_&TN84-F!4Q{k9J%HXmz6RO=x;=aSnY zJOSvf&yky9#t1}Bhu9Fr{AL~rWFY7L4`7i>BJe5p`dTDz-~pozU@w~!02>Pky%*8ue-nxMdm;exuAv6zn!l(WbGft>>|;kTiC$vBPD#{E(dssUy9D;w<;m-{vs z#Q>u#G~Um!fFqE+Du%|B7MjA^ahuXhxG6W=aGSmn(Xbz&hp=a8=PGENN(-9S!!&_0 zE~HrQbKoa==zz#b4`oz{3}}xC;nwM32+xcG(Rh>9q?0+Q{r8&DpzQJrV97nfF5j4C zm*2u^+^PthB!5;6v(ILbhm>&?l?A5g8!LeR8U5DBfkOR87t?PgX9u1Qtaih5xD_qG z7R*a6&+gH0^;6bDn6&1A-3OL>NaGwZ^)GZlQWnftZK$rE2|h*R8Sm?f@m_Omu8Zy0 z;3{eZPFM@2j1x-RM6{5j#VeXIm#?s}yfm@LGa5$idaMVi!YaDuFt>ws*s<9?-U0PD z0+V+)c0HEf*!2h!7Bn}9XbS%$`-uz;Z}B+3gX%?jsL*%@`b#PmV9 z?d}}L)R7EIOUR>1x%Dim@WfKiv`Lve4Og6@{L?)Dze4$Ar$x*c)%nGb81qKsm^W!W zjdfzw6Jwq_#dvOB@8PVsJf5-jk_XKP0x6S0&dRh)`tIk7eB&a>AK70%KkrhPba}YW zxizF|uxkAT_X}awmxU)i7HBxkH%{xfK83dKyV(Gm_um?n_Hj_k)cCqs2S`Is`PUXq z)4j6=6}%Cgdd3Hiz|7~ipfEaPbo(; zanPT1W7iO@+XN0D^w$o9*z!(vJH~om$riPeBQ$bcA_W$J8KkVCYjfB8| zCmw#o0vG2q4Y-pz2Lk&wT?S>knvw>A^hPvA2~F|i@mTM@v{eKenMW(iC}%|a0#gG% z-w@Mym~eQmMKwwb8q2NN;^pde{+HY&Pdel~g-HgDrB+H(#(sruz7t7gyuP(j(%aq) z8sC|VgZVay<$OxBl&+YJvw*EG?1M%J7H`>3H52h;Ah_pHV_|&qC2Whcpgwp-sQ@WYoTtEn^YGwoHo#8dk^VJBe@v;c1JAOdF#bO zFac@}bnUQ9_<)1Wg#iZ!8+V#I;H=a2-;fN+ZEf%I>{wsz1P}Kz#jXT?6y3b!0btuCx1;n69_a zQ{oU_hf?Kn5G@yo7=V+s96F1A!E-ShzGsjWY{lBkrw{Uei2L(NNP8gBZgos-wx8U?Y+XyBLc2ZP7vnKYsH z>2Le!Ys~Mrjrv<(!pweb>9!}o#_8R}+0pC$i1qIoNq#~3ipHW=N$v?6i)PZc-w+ty zxeE%fRdE&Rzp)~m0)u%yo!UmOw^9p2S14f3bzH2uz(GB~NjNCm<+cpqYE-r`QQEj1 zspT`@oatHmt+)`eKON-HEulMeq)Z^HYodiN@1k9hxTu5ZRX=KUPcX#=?@m2+>v z_}~aYAvqV`f_Lp8#9aOSCRi!F34^~U14bu1t})&$xB9YXLVHnN4XV2OrqA?#fYRCa zx+lRtv0Xa#Rad;2-Alf&z#0d~3Lj|G15=~n9gnu2{TEQ#BT}H?B-Uux&p!qH=#@(3 zM+!Fc5+4C}5Z-uLX}l?AH|uY$25J(R182ezG*d^f#|3I?ITP*AztkCahF zD}a8^Z+lKy4NUlNx)a`CN&)Xj4td>2P%s|r|6G!93QC8-@Fimh^@+-BMDMJ;tjZ{&CW|f zUWo^3KUJL5*|SgRx8H$yvB$lS!2G65r`$V|E5iih$iM2Bp>0v&5j_8CuLhSTmTPbG-CUamf!XO@#tT5Ky5zWaDuAV zUxs^Kv|%5}eLzY4oTfjvcyvj1;F5;gIP&vRLu;`!upqk%QzUz!AJzkL!W{SmHnRtgC~?t6y8JOY6wTKFD!UAw&neL z?#90LGIeRO;Tc?{>JNMZ^T+b+_q_2Ljh$BPR{y=`{S4QRmtM(eKXMA4on&B4K1sVc zdJJbbyN6QF)GKjXou)r@dM z{=my!`RFAi+)=V1yIC-;^an<>Uaddi zz~$2~>#1!i(}Cyg=gajup99}rbNQJZ(VN(gi)oq|OSD9no5f<Jmxro-4vq z|JfB(y?aV|_JO6A7B zgD3T!Z;=)+N`>{FH1Q?y81{)^V>|ghKJ=IOLICgUIPgBkJcAu3Ubvu*%LQH+2DIxP zfQ+4F4-BoeXE)W2g2ZA+cF+2u_UzZzAD1FbX%#oLw-S$Ptmq2 z_)7sMq;5>AO|#wBteT-$?5Z zr=#jDueHOP)!_R^<4xiUs+D{n#;DH3a}6#*YG7&!^SfMW+gYy;P(2rj6>JXP$9y$t zTtsH?og}IDn~$sF2|RTel9=%UwgXRq<@p}TpVT!#YKg_s0CyqjA`jlVZJC?ENKfV( z#F0mq(An^MmYQOhEeX&Tdo07|gjeL`q&zc~XS#^v%xH$5%Or*_lH_>?GN$<+<+tyD z2V*GZ^Yawt?}@EkoDiP_llP|NLPZJIgSb)K6-#@qp$)C8b7PMOjdM6NIkbg9zUBc$ zz=QZ5^IbvXwNtTDN`n#P6&C`;1g7x}BWkq|RYi{HiHn4e|{-PQCAW81E0fcqhs4hX=bsHB8Lef%?Zm0vrYuf z4jPwY4DaPa_{ubLaqdAByCw}C7wasc$=9>QxHs`2a@(0pvqnJr8V@T2i_{_Q7ieJ) z`HluA4o(5(9HPi~5I4S?L8C_oje9}a|BRH%VdlK`YYo=a-uanEosYM}98V!hwb;7p z0MynF(wLQwI^O8(fysL+B0sh2D8FwEQwwmH1>LYjcANN4l}&-kcRQZF;@rDEXNNZ7 zSWbe5bq%xWpK1kD=i?bn#@dyXGq^I#1?-!;5k0pZW<-i3_PB#cK%xU_0Kqmf3fqp5 zZbP6^>{r-Y`AR6T3>0EfMbNl`PC7jUVDQy%`vX-4$kTxY5Y=z{6A6UZXT$nnF%9Z^ zlVZ<42TO;O(frsao^u4|YhXGyK*=znD&C|BsRoUgOby9p+b1x=Cee~Op!NFO(Cy;U zvkU|yR-C*?`mU_64;r6=zHh+!!k;8n0K}#K+0?Fw!%<0I1x)0&;svVMc35cLe2IQE zDT)+)QU7dm5@-bH@C{PB*KdwP^sayC53FkJTme?C{1#a`0Ct?)gOi2NhVZE&mJ06> zy+yYbd+WQp{srfG(`2sGQ)$S(g^oJ;Y@u{A*Xau=r(iPabku@49&_@tKmiX5jl@|+ zy#4@<-+3nDuJ=bkl6*B@Sok|N>$Ie|9qF|{85}ota>R-q;+ICoEd@()z+Z-YfQBz= z53oCq%yrH6!d$m?=wMJQ#Z$yUiX#K1I1o&!Twjy&Ax$I$Y203H8E@+cZ7bB!PQ_k? zpXzT3;4MC7TNip$P`E%LnMl)A9JrfJPtCJ(i9xD`*@8?R^$4tn;Z9)YqqJ^F#`4 zdz7X#kD4dM6Z;OxNrRyHR4P|)arpP{hH}uT1|;dI63Eo;FwzAHq)(gGO9wK|PoPqd)f#!6W54)6IFf-?xpt2uHB-x05L9d-jnKCclr0AqR*u?V*z- zr0ip^@!=EYZImrGDE0FRwrC~Xm!orK@-IX^SAI!+@Aazkk2c!XL=o8KV94HDuzee_ zeF5S@{u8gf3Ga=<6lx}JbJ+vhSyJFWs!&v~pHER(tj-pKg&C4tIXQx^D9^$s&+Qr$ zYBEV47PR#7i)i}dHaa(GC$SsHOvUrxR@`KH204iro2L$$R|sRWemO) z`1XG;6B@C%gHivtG3tLD3Pgv3df>Tils1TNKxC!)1?mPWAqP5`D*xW1?+_%p2nhBS zJ*GyAzMT3vz==P@iHlvu0j?Rej~JK_)^s0{6_tR1DHQ&7jTYFX0z^ehh zswY%iEd*(e5>l~-e)KE1Rw-{K<>Kr1Ks}38u85l=+bAbstHnXGR#mGDRkg~kjnt{Z zFOg1hn$K{WLZ^ngrU{)ICIwd2s)Y6PAsjHCnu3ySs`+g_y3;KZNd#6@Qe z3>o-9FmNI(DggthXu$aFWbBfWYM02vM3;<=Fz{ak&f$S-m+-R&-m-)jNm86vz<@&j z(<{NCU4Emy0eWi!B*Z&-1`J|&Xbh859?d?czxBVdT(DKjZr5*r07V+e(<}}Qz1kia zc};^Ix5`gQ6Pu+|J)RNezU-Br!T8ayLGm@nKq*Y|eu$?7xM6;JDz<3NPL@2WLkOhL& zo2bmFaK+Yxv^#M4RFF0#iyeV0KD-o)l}cJz;3pUJ1Hg!j-N`E*)18Wb>)pIlZtt4nb2Pf zh?dq76Dh$lM9TztN^B!Z8~H*VAlb>hR;~k7a9uOW{F0Z2%yk!&o<^1ub8@u^YS~8o zFuraeg5O~iTxXv=jSX{{YlFr|OvpiQLeRJzL-IXn7a{)0_<=fewf}!x8L_`y1o!)w;lJ!AJaV#xf&%o z4*NC*&+5I}^v15Cii<}EWE@x4La^(-{Tgv4pYvWnbLVOl<{9r=-#N|t>y-Nv`1#JZ z*S%&~n%6&=YQxQk0t@@+D+n=q6Ja*YERLt;*C<}$kdjIuo*@8v?9leWI@ zjhD6?7p+qDLY3oONMX01@o2Z6_9iP|CPCyy<4rriU*y{ zuil7mhB|F>swDr->U*olAs@G%Wm<=P$}_|&TM}|h^R!>IJ7P~srLB&!r|hN83*?~& zNuFx}^#hP_Hb)by_awo%rit}+bUR{O9T`x~@fDr-G5U(}D7TXeu$S6Y$-lv5UB-9s zuK|WW$;HEnPGC!tU$)EV9D%u7r3#uL+qCBLv+cyEZA7E>i}sw@#++?)wVpu^`6PZ@ zi|6|s(> zgzW}&Bj~K=jO5pxJ)-d>(gy{~YC3FIKm6gihiKNfED6W#M6j7wWfO*z;_>3UvJ=8| zThX7Y?Eab#C)~>HMD%Vc9so-Ax51z?O-BVsC6PrfQI3G&E8lSIPX^3q(Spw*I&NJn zAK}mM;;77Mtn9%7bP-3V`~z_s5Zf0=wBm$Wp|e%Gv|-=k8$cIxQ5`7$1QuFGG%>OB zr9_Ua?ti9HE0o<|VH@;YahYXF4_bC?Hk*{ika&B$oH8E_75s&MD}D+O9%w;}E)9}M z?*hg%BdFDf0VoR-scne|gOJzR&JlKTgc}gS3 zK-o6{_qShk$c=bsE+x1ZYC8NLXlA=ITSp?!vuq7|b;=5q-swMTl%c?k+}t%BFh+5V zY4yM+1DuV3!w-%uAknlU(Fx@+J!;^=6%d3$;XUB50pJWM(4h8DQam@-&Q0Iq5#JHI zt6gGX_+1`O6Zwa1|GE%^;zPEGyWBzYkeAc;Eha2S27$G|V$$W^r5$^Ng8Ui{L`t{&QakeLbf2 zW(kx_!}Ub}+a~wW99cIXtkmjj)#UhfGa%R%4`~^Nc&+rfRsPr}pR&nktiEsKH#@BX zYdrD}T*;pRL%=UE1nlS!zcs*}1Vmzh$QR4;uhnQa4?l>a4@h5PV^2dFD8bPWg2l6( z?C#A&xFlYW%#>u^#(c*997jI1uHP+~Xa- z)`S+_=Svy=NkYHwQwUklHkmxDe66My-5U_qQO4gObO^B8fbAm?&KY|g`1uC7coJjT z$Gz!P!I7(uc*g+F{gCQQ`7Qi{s&>5YA9c@C;`z3vD0x7*X(_V(&IRsdNq@K-T)OUh ztXqHhpF`XWLZmEK`9&+Jd{d`kT##v*?;r7g-KJ$Y2|GRkq$PcEN*bFom1w72wv;-g zE=ltJ<2i_5C8pKHrDJ8&+#_2kSOy1Mj z>>HP|3{%N>(d}moUcTP)ej~csGly`KFKGN^Fu5SD{NhWO9zuC4NAdI*@5**t54LG> z7Krmmh=Ly(j9qe{LXPU5cAQtr_?>dl_&VkQ9atiknX_=U)j_$0?M0#7RmfLC`tSzw`WP}o}2X~RqHNt>OGkxVjZMX!?QHxLO_aDn!d#W?p|{n zwtUM`6xga}klZf85%8Q7m{XyQ7TlVG#>WRSb~eYnQbQNm%Jnu}(QP@pi}y<>O7;Zy z51*4@i)#mQkxf6uXLbqR%V7yPLyBz`b2(FZE@$)|!hw5WU9#^`4`bB9Vj@QK81T}x zcO4v;K8WUw5$AQV(mA&!yVSj|!#mP)`=fMuhM?oOV6$Zg=%uPlx>SS?CLrPK8*yA6gC$$EnwY3`Ipvzg#HQAyCcl%K%9$q3S?0C)`<&*PiKT4%ay84kQM54mBhI7Ul+ zvI+dia3$)~txzo3;tR%X{v%Xp5q}wrf49TODwy}__ACP8e@=h!&B?#Q1H$ZPuSfDZ z4QQ^0pz-$uktrJtayBsDeGroyrKuR+!^45xR33i??R zG!`Nm;i_N?-UQMggDl`*yOF*C=dD|UQ5fe}H6LUa(tQx!H_J#jj}1iq*{^BF@14&r zL*JxA9P8hu{mKNh@(vHgaP3B)W(KPIyBiVzj3{?}nd;lbcd(=0#kp!=W(R<-!T5I+ zKX{+XA3vRB!ogZeKU9Crl!XWUWxJx0H+^c!R7Km7&z zJwd-O({BS|4yIo%{XS#}r_Z5ZGyPsdzY`2$`YZdSUq-)^=ywYJw$kr)^qWb)Pf@)) z==VWN*-GJQhQ42jMXwiv9p95b?$=Q?q`>VaNbdAB@rzk%{Ov{&$G;y~!2QU3l3Y+6 z{vzGFUvpTCB#rA+@CNTeCLWZ0_&#HF`P%-Ez=nksR(kt{$oe23 z`RTm-xllX{<6EB#$xkAAhT|JBUKWmHJ3I5kaU6L%bHem0FrFFCFU0s!;04->GSp-o z-;xCbU8DZ)CbL2-S$7j;_nj}Kfo`O#l~0){zbDN^o8Ul z_=RNRhxoZrjqX+>F350qWS1Q;`0BP0O>hK3<1bRe<4>2B{<6(N92$<%XU7`+J2^q) zAaZ*2CqxF(pEQUO_h@^d^kD-s1B;CRq6>MWc4EnGuX~^1>qGXRr~fBs7l-+~qSH71 zlEXU$+#}$V0v;2vUBEH{KNRp=0TTt?r+>%cLjpDkm@n|=379G1NC9I6RDQu>yMT3~ z{2Bol379URNx&EZ-+6??(*iy#;2r@R1bkKCt53tPIDALIS-<9Rr+|MG@Jj(N{4Wl# z5^$w}zZS4vz)SAs@HzpX6!1#{E%$MFn}8<-9C|;8*9!QcfbR*I{s4y_0UHHO-pyf- zfVT>5xP`j7IGEu%x z=*e9IJ}ThL0(J{HSm2vQJ?e8=Fa6CE^w$WuNx-`WY!vVX0bddDe*`=$VDdvO>iON? z==i{gML>n(xoaPXj|+I2$iJu;-sXML@rQclZxZpX0{%k4DgjRm_=$i+1wE61Qv|FN z?Kmv(7K!vc5x-gFXNve?HD9FX^y2fdNZ&8uLjv9_;9UY95paiquL}5}pf^px6C(Yr zfbR?V&tCH1aV`Hd_bOy%9GZGT^_fx{9e=x!$CC}Azv~~BuRbFM-YbRu=b!J{u!Z9{ zjOVaEhr@#E>#J+lSDTz0N}aWy%9?6{-*#*N_}%BBv!kBd8xg~jfX7*=z{c0$ghUn0{BII-rg$sZza1L z{)>G2;w*)bi_+Gz@IS4Tb+wXw?IIM*BIsw)|`^!jz96xR);tX5UAI5g)*+tW@ndPj$Wy12MMY&5ptScyD zA-Z9mW$Xs{5Bp{cyN>!%wKE6we*yINTqc1QEMY}Z$_lZC@H-z;cs!r-@tOLaTLs}v!$K`&cFp2Y-^dj&VdOW?PHd_bgM z8qY3e*#Oa2Z-A1O6q*3({Fx`b6xQLQT0CUc=&ig!TlFgC5JM~7$W(8pmhbE5YQS%C z8s#DC>J#bJxL272_%#rd2wo4eDWjTxEPkZVW~{QhuB586%p}Hx+8TFd#Ap+K;sp%$ zdN%mP__I7>ys4_HDJ|h-+MW=8=SdDj&fx#>W7*$7>HQwz=RD`B`hSU^^F8nT`sd@I z;ICD{HUZlO?1gK#0d`yj!D zSv1}DesJ+2Uly6yOLi(fe7=ibWP9+@vi{o>$zLR1Z+elm4(lG_ri;;w_`tJskhQv)idA|PZ&pJ=LOc7=AiL5^j zbY?f?Z|H>+`B48yHP|M+*B3MPF1%mEn^y+D3trs(ZJW!OvJ~15(M+JTGnVEL%#;Lt z0nPzcApqCJ#J@dfE~~^O6P919rmdriN_Q#eT}?Bmr4gNOjheQBnaUY!3E^xkBl@-c z-@KbriT}o&`3g*e`2z7ZB`vMA97b8i!){wvEKzCsgeOI(5ndjo?T1A5 z-}b}t{(YSqH@grA<~3|H3#HZ7RC(5+ka2E;a}<%jY15{%H8^?Mv0c>T@|2o+^H@Vv z+O<^ouE?}}j<-81jpOZuv^3;#1Lv{*PFPcD)Ho;rThYk&;O~W+&cMA_NTM>;`{ra;S=K71)Be12_12b+Tz%>m^|PQ?6m{x z8j}#i5li(bHLlfB0GI;aj*-*e4nr^7oB1XV3NNXkp3gJyiL@M3s`1_BTs}PjL%s|jK%pSw6F)_Qe z_L#W06VAlOU8MbMEW1maoRAu)0mo?ajAf>>G0c={VkW3-X!qa_tY`ShL^iTa&qijZ zu#rnb9Mnz#pST~Y%z6fXPQm+6coP%Tpf1Z*`|&p|>t+KW#b~v0XCNgS&*DmAv<|i!@33eRW3b=yhG!72~#%eM(k?l3#&e&Z8puLkJ zkO^-LwYMSRPcbq3*())Vf!Lr?iEI?`J1T!58wEU%at-gkpuL&v`l53MlmojC>Hc|h}c#RU}vD=KU<(xLAAXe4;0igE)Gvm45>*JUnY(Wok zeR@)@Xk&Gr(tn&wAl&QsP(&q@|<}=*BjYY~CKgItDW~UNv;uT{4EVayBqtrvjsw~$tZgI+brjf( zpdB4oT7k7blT^wca88 z;$I=~&K=wb{{0T}fjCD!6rY^Sec&T8+9liv4nV!V7~EzlpIiG17{gnYZ#X&B#Aq1m zBtdA4W_ThS4l)=Hwmclhwc%j9!_$o&Satx7g$XQiNn9<`!|5*m`(hJdT=~q&;c|E@ zBjOrk0y6?FBlrd5VD4iy@i8o3GX(NoN4I$H4e{ ztT$fU#jMYx^0U98Zyw6FwV{7rvihN4{~hf${H$*t((m0?%U$8{$X!6U7UXz$I4uj( zT3vjesXi5uhU*dO=i#(DdqKuGK;WKm+GP(xT~M|#B5ekwrNL~nH6ra8Ohk7>T75*C z0%?ViR{V=_TEZj153F4(BJd_ang#F@$wI%hRx;rW;wX7xuk z^IT46e_0c;%v`U_1&KM8E@!Ey#2; zVTp5HjmMc^0TGzLe5zgIbbHr@;%5bxC$eY?Xukc!SN6hS^LVo3?$cdum+1FSL^K5f+ zuxN~+g7`(TXL&GuH8mU!1zc#1-Iaoj4J1hq`n%$_}`vdn^Ko>k5; z2Sp1Zll@gQy9j!BZB@-0ek=+ok(hI>c{b}ZWWRD-?2@YWB^%vE)itFx z)peHAnlfi;ou_C`i91xm9Ba`c!2LFMc4f6?wppN9ik9aT6y>gQd!WBP7E2ggvf8YX zIoQCdkcJRgC|aID5ePuDuhh;4sr*E;Mau=B5kW+nN#}{ zmu+du_flI5y^%*eEh{f6g>=yc>B#T0%ybKodp>sd+M1d&OJ$9_KS8s#v9rsoO4hpj zK|nQNvvjl9SC)Ay`XjIa5N4h)A5>*Q(E{M$3e@u1X2`27EpmInX4kFpmP3mQpm`M~ zt|E^M{DK=2cv1dq7uqhP9sKCh1)}s3XuZ<|VzK;a64=7o)@31)0<{k9Y%#EKpgsHCNVd{+QB|9+$1MQg4GBmOC5tYO)_M|3Ky|6Mu`7#s5b z570RW{Mf52JwJ_1A&{`?W^ZtVb^ZiX$Q7nw6{f%>r1jIxDz}$ev0EZN4tTZiBcS@4 zGE%f@G`={if31CGSY1gL?Ztz8Ah^2(cMHLSLvYuNySuvvC%8+1U>BDJ zLV`nZcL?ro@1}dw)0yd>*WK?OzWNUQV6EC~@6xYMZ7%}?8RU4QVN{yZ7~WWam*Mhv z{=Ee99k5!u0Ic^-UYsN=?AC@9_lGz>C0&d{s&UGU1*Cjr&Zlsb#XDR4@9#bxoFFF? zYdlyORAK6ibMI3p2A2-j)RiW;np;Q$`s>ZCH+^GwUKA)Ixdi_b)))0)QG8W&@;Q4OIg5JN@4IOwQ3J*r|K*F5b3mM zLLcdci{JOE<2}U^s&G2^YT|fWWLk8bG^nl$9nD04Qew%+DP9nyiZ52kQUCsFOQXC; z8YbPlnJ?_`%nm}3-_Mq7*hb!I=R8T+YI-#p9$Z9^d1(L6v65cQgN>!GvS_H+)Zhs} zYgUrSwlw`s&nJaO=rRlaj_{E0Zs7pK;GVpl-Ix+l7VqkDuf?fYW|N7|HtVC<$$ zY<0?H2OGN@o>a)x`g*af=z2L$fHREomdh$a8>CYbgwQm{Mv`S46A(QHON_Fz-r3DS z=nY?=T?iK!ZXay=5Zk1hY88EHx1cVZiq!iSGCh;H*h1YIqqY~Pt3p3e2=-MZQ#D7pPpZ|>0!IipDPWrKt0$pbB-ei z`5=_}TRk&sF#>-mw1sy#TQ8@U)xX^%=PRM6Fc{szu&%fn-^>D%Xc*t-vAy{0MO*=0 zR#G2`&J4WuYoAsvvmbO!CMmWMxFm70kxgrO)mX9-RVcBSSBkGwuQ^N9=hzJXLZ-AC zYZk#9_T1#`6DXyco?Pjg374X#TYWv+gOs>=Zl`B~8>xEEXrB~QeFxy3XtuT|G>i(~ zVt76Lb?CChH+QvIkhy|2lgXD7*W>7pHN*kqHCDuh;F8P&f%l6<_z@QIr>pt9j}T7BbInice2&MjVR++-pK}<-54(=uen_YwmaHne^Q0E` z#=VpC5Xzc&{dx=0pYGEyVLR=uCLnf!cZnByCU74k>V!UI=W+bt+ZA|eD{y4Gum6r{ zc?phfayhpB5W^iOgrt?B(*SKT7Xrmu)BqNH`8oWe%oBWou2599#9>%FeZbKSqCRv> zVAs|P$HIq|$fKdgz%FGnffJ%9AG48xRvUx_4;Y8H^B-2cj}BVNZ?e!nx|5T5Q-`9s z5ij(vV7O&3KJ&(bTX7`!_wfURETAnPiMhE#=N(Rw@H?Oz$-{D61z#osLYcd6Iai?w zo~JL(umbi%xD2R6QKS5MmiIePaeau%eBnZSjbH?YL!Yd9hZKw99y(}SZLYBU358zT z6hJ*MDT+0+f@ytPf@nK`51|WJu$J^;c$qQC$pt>KEoisX#xMOiPuGuU&E11YSR)7@ zko9y0#cyNzQQ+a*t?`pJDiJi)UNBs}K1h6#3nt;rsJ_f}SmiXhH%X#3}>0P&b~DxgRhq6R{VuBlK#)UYfO;|gSXT#b#KlavP{L(zu@|8bRM@BO zlCWm9oBSjMN{}}YSE3L$ftQL;4gsl6u(Jp&hJIX?D^4yDUM9%JfoRO?hN&MCxnLJn zJGmfQp%+1X*A4irt=ZStTm;M!&vi%Io~Www*=}7fA607ZWD=k-ZEasI1ZxlNF2Elx zI1HWoW1~7U(Clgi@j! zLyGO+y;#0cQE0jHEHTlR*~lrF)7WuV@!*W$E@;f)a?5=R)W|BYK`A=2%sfyqH3nHj zVSU;N>(bbI$Evb&IB-m9hDU@_Ic1W)h7Bh z7S%5rEn2Np*@sN#-I9N(jQD`m`5*vy$$ntIFa|0%lE2K#60ow}(H&cCZ435{yqr8- zsBSPgtZZw!JeZqnZ!oH=ab4=VB^JE0TkEPoZ4j7$u>0KA*R_Cp$v<#GxyQCAy#So$ zGSHh9?8+~VEfPpS|5hn+Ddcga*l!dZi!G#jtiErAPt(TvzEBg_AFD(=_7Wl@jCjfGDca3EQhSXOy;6K#?0PO#~ zM@!Py){@EC%4**W)$8@A`o}#}u9+Z;7Lv$ta3TU+G)zNCyeFwTZW&q8pHDnw9SXcEoqn8FV_B`@Bu$2ffT_cN<;$_!5qS*EMXA@oLHW~8DZZ@E3ze1-liLOZd#_Hh4m24F%#jd8^e^f)}&P9R~de!@iU%^ zEr6Phr~IPs38{-6wHwj&dBoY2&a(XnR*Q~PCgEB|-gt0?vYI?Lz zFPm4L%0G`V8t4hE2`XK6X((y+6+gcXJ8#1GGviQwM{*}!+l)#q_->+jUFqIc%zJVA zCau*cvLu@W)E+feg?^qqeKUFP5;;ycXRTB|XQR2s;GE2(#y6Ft1JdGQq$S=G*F0?C zYV`0RbDPzP&!TjXd>S$&9U)hih@>=6kG?x^^?ZKv`dmgTocM(9gRNB6T~H+U*H)oL6`Tr zB=a3Q+1OPwQ=dl6s$~j9%hx$_AoWwV;i3-*GU3g@*=!iOK0ut3f4&a58UWv3GVakL zwqswE=C8?E`i>)Ja4MIywd^yc zt9!xH^W+Z?0b9jKn@~zVDaN`d)#D%;YHL1R)^+ils(6qt2^T>sMLiFj@JM6p<4o8& z{z#`meaJLzpiSZ2ghy?`-Oz*wwfJLMc|D74ChQCfZsiMsaA>i0DTS)QI#LmQ&aKRa zopAW>jg&LNJsUU!WhTi^W}}-}D!7LKR(i zG@ba;ry{C;4hqU!XNt zw-w`JQxzqNrXwkli(&)&JpU!yhfc|O#oA^^oras&80K{Wi}^%vK7u^dOE1+8Uza%H zyuH-58}tWX#k6tAC6ri79{OdgoHM$IsY$DRFY68GEtY1^N{WF&l{M{~MDl`lBOt|q zWP39uPV-wvTHm;n*pG2?!cw9k>k)WLS*DVkp?ahhg)#MC!%bOu9?(@Sl$Z+;94#wA ziTZmLt{(&2>4F~(ZCYiODiaf@#uvs!MpcXG7u&y?Zu#fEb(Wd+h`&VmItN>L^nheO zBvo30HuIqzR3OQNStyY_Pp5f?k>Msra2Pjfvpo~9F& zPMAaPh{=VsIE!sW3FhC>KWpeXGdF_cExV6kUqx>>>&a8WDE#t}`^<@6PB5^Nr|mf@ zOCX!}`;={33Se$rZE@Uf50t&k8Af$hmaHQNxgMF7k}eHxIm6csBfT#^bk)8rY1Q*` zU*#=HVU^9oS#2^2YX{u;b7c~-+ERB@$S2vJ8F9fdHZR{~3P{kf&71HVW$;?`qV$%l z%Ask+7RZFD`@&{TYcfUd19uzmqrN_`@Ws@-{dSErHOj9oyro|LP1pMhp=Zc>cRkVD z+>72#Wj|BcPT=~0XjN6vqMcjF0i9p+75NYfZR?d9Hwrj4lN}ut0>P2gHC^f8Y@~l# ziXLe}x6j)XS%v+4%B5^d+DY4m7aX5Aw#^=K>rY3Q3SHHSM?02rAEq(I5i7p@HP4Hax;~RjnrRC&s#b zCTojGzKqYVvhx+J+slGIB{o3D>`T&^IF}aP>1iT?af3>Yo~(+Yi~Oe~iWRjvO;|%f z2edW!bzZz95zo5I!xIObB%JQvUNbAQ*^%A*PY0Y03)QFxkvx0^GLAB_N6GfBm6Ehy zpPYf7K}veAzC%X+?Sbos!L3z73)EGqoc4h=_@u1#xH8PeMOaZ z#&0^AiXBvyB2=d1n+k<-^5wayPrFx9T+6F)wrL=#PDPh;G%_7KXGDM;YCgqtt|`s|ywJ+;v=_%quKTFTlt3`L6n$4* za)D_tU#Bg!@nb#>WuVf50f(UfDu{ZYy`RY>v#SuAGUbFb)_gL>_M56uVOlVyPz-iK zWkm6P6Jw!20^*v4+koP69e3TR0rKXXxp3}*9-ww;v=xotV&yJ`?q|k56Iw65^d@vg zjW=4`d7{%k2qB3r43*qbk72DJT3y=~Sd4|lHrq;vHW4}9s|y%H=X4UNHaZA`8XWT? zwHW3tU&v3t#*6?_zeT}Hb9(1Xrs;f$N!VUCX=qyT1%mc*Y=ljldRNSECD-{ywV2BQ z-Lub2Uk{eao?+@l(2>gYfReALtSo2hD%#|A%LkvUSqv7-on9SGnl^^>x*l1_Fq^ik zl27`!dyGE>Jy62?d?+FcMek~O*H7vbM3X8rMlm!sY&bdb8F{TcKTj~Bh}CKPM!uSL z+&QI8?V<&QBEHt51*d~0+=F{ep%)J+vwGxP(NC=V^yB0>AZha$nvpM-boQa;{9SU9#Fqf3U~kYzB;DOGkV3_i_t zCtGBSbk8$p(aPXFeHn_pVU<{`=#sN1JQG+0w}FsIKW{x)2T-uG%j4Gv)hRu5PnfBx z*D)qcjjP}@%dF$I>YFTvpW8__S!_8kPFy%>Ty)pp9sa^jKDo5qx$Kn%a&Xl`e}-)> zS|%7{>%~ar;AmYq&BCHnJ08j;PA2xM^ocp8>%65+hO%kX$)i5XSW^#j2WlV>)u4NY zv0RE5$0`@^GJ4ZYjc{ z{k;bCTakOWy>nq&>MwjFM8G+T7`?g2S(~@G)q+uhe%Cx}fsxgYbx-BiU)G@`yb`Ik z=SA&(wVeoFP-T0HbJg)NtkfNA8@=fEK$I%60aOVz`*@=myUVDPXd4L)ew|D)yP$m| zYAgfMh&~yq4lgqL5YI4u@g6Fei&Cn zg0yS$@t3A9^7)swcWrMwIzqYbUQ|N@PvC%8`yvevBknQJ=KEN#S&LVnC%yJS+LCWv zi;+rdJFtvtqHD2Lp)%5Vs)+@UFOj>g9nUnxApiUj2I&&Ham{0)iMi`$GSfdg%HF`u z@GL2NwGYT(9N*l`FtOD_79UrswZm)1GiHWs@3YONY)2rqaoPoC;=?4q;*EYTy)sPZ z(AqpF2~r99GI*sWnPA?*=>H`JetZ{Gp$^atT4Zfp;fG1LdAtrQMzK}U|Wj2afSoW zJR>tUn;LuO$kWeF_q;se#JuAZ=n>3$p`taw4EU!(LL2-`nW;f~ttvz5z zhxTrdQ>#rP&gf`zOxgXu1ENHXw%aLQ)QiY&{Uwn=!2?kZwNxm|BrL6!>#D+XPmV$Opv$!8>G!#4& zBf(4~zWV~>>I2s3G-*Jbq;2`J(9;~nHj%L?#?~uEtMnU%O1z?6y>J8-IN2Z|tRE0J zaF^Kuvt?VBg}PPS+*mZRW4^uM3eZE@afnr3kQ*Q6IX-4OS0RGLzm&m2Wa4;* zS^a<)I$@1IgB#Nw{1mymjkZX_ol28aE;fD=qcBpvBa0}hSxE2_ON0Sh2B1U0m*JYc zG$UZuVF~^OyL(jU8aI;6`1MlJu6$uA=vvK?D$}rm?GZW+_48Hid?0%HwZmX;k**w5 zlQ#l*qZk7@ig@UK_OMr|9oEZyjm1+ED4j#B11F3u>N!4EeDS+j_taiu`%CSYqy@+R zFvjzVsID)xjS!Nsjm{wtik2Fs6v*1yv--%#d|`2SK%cJ?-gfuxun3lK@HRSjv?QqZ z50{w4iWC$3t0}$Xa$rFQ(I~+ckVm}iGS&=!O%OguiTf<`cgjisgBoGU}QLyf_+R@Rl^>EKTdW}Cqty#H_yw*Mh{nU2xRzyZB!&W!Z@$tl2wy|Q+tN#6 znk4moG8aaY)bZw|#krneg`jPa_R!Tv4;6%64j24|}zqU0uoL5Uwt2 z+K{xF`FRTE4#mF1BlPJPa^pR#7pI^`cz48g*sUUSG;e@Y70TE+S}&- zoa;^()Fs6jG>~hurO2Gn&4AA#M{dBgo|seK?t9xXJXs|@tYGMK4dWZ3DD$cZ0PeY7 zNSgTlUdbu`g}Q@-`e)!c=CN0CD#n8hPWqR7gbwXP5ij$?XvXZl?Mcr$RhNFDm zn|rvSmmuMpkYFz=)66vC8kv>+;Nmc8v~SxfQwn3_Y)3e+qa7XWr#H(@8B zR}@Rxe;yd-St|sso4RV9^egQex6nVPW)#h*?+qOyP|!-t*y|kJ4FL$&A2jZ54cp%< z+A{_p*4Dz&q(JjU!HqlC%IrSn^*Ae-wasZmH_94upi3kXFw{x^Tnw=mw!u6lH{HUXDr&I9@5XZM0h>v3fGkMTn>)Fo=|zE=5T zap_jLHX;&-S!6A6ksl${=?@Sd7KL#q`r#}^}y5zo`B+ane0C3Wf@7ZlL2 z@|AcUIBc!)CP4QX)|X>#QfG%KU;AiKR@)cf%%ypbwAM;)(<#O9HTWp)UN&WD!QItV zRZ8-_E8sR380A#Qsu?w~z4t^AlGnq3?$(mvzT#BPSMQsj9h{RfZ zd%As7t)@0^;YB#}0KJSdSgdsxD7Ud@xS?L{@b%dP|B6p`?I1YXMd>y$pFq2lqII(z zdh)SwL&%)zpA24~RqML?dcXyTSbr76+q16|K@?dukPuUR=)6yXm(7T%=vHkcjjYC5 zZCW_*B}FhOsNa|61_jX@BL6pa^o1w;@G(J%2=y-4(7vaM>iC_eDVdw z(%m}Qbiay&X<=A6msx@Cwh&mk4Ruj|P zR?>OPT^5%-vvq7{vP=Gwm=}A+am>w|BJfyzj z>s(T~yJx=JUpb__6Nv4=zivtB@EuqRdF|2h@s#h%lh`*~_E`_&jULK*i^LT2jNzeT z$naWxd)FF2%Q>5#T)4njY3tZoKSAX)6x4>$zQfjvBrWOvWLES*UlLjq>@K~d3{R(9 zr1|LmEMYY%LK)95^j0I?_@j#zSmbz&mTwZ@Ae<+leu*@aILM{p63?n1f2j5<&*EcA7hVI~Yc*E2;WE0um<%e>2 z-;ZJtjahL!I-%_wj&PoT5<%~d&B5t*9F_>LZE|sr2tMTdHnwRaJ#)Gx2~B6I&}Y%u zgEs^(Hxqzq8}DgnNi+#8zUI?;g>$r5zU6yZtLfK^H}Ew_G_Vlw-Q@Db1|*f`Q34;# zT|O+T*-_Yh+Hd=Qmz;a-B<-NAF=>&5jI^Rn6@R zVJVSsI8vLlqTMbk@ilzhUf+A?_sLsq$RUGb%Q~C`{o3#zQt$>wkCfTnRJ+v7k4%vT z3qJ@&t?m-52)<=}@Zm*xy9M89gcT*|-9+9$K-R~J%*(EB@J#H|RnTVB*u?4?y)g#8 zDZK_y3-$)aricy4b0$#YLQE^1Q(?xA(tcQ8+(O7DV`r50vDiNJf;!O~Ri@CFa$jop zs^T6auPVCd!a3KD5`qK;wjnhu(ccgFHgxzzE^S(topF4rKlh3Ds<8CBDUv>#`BqWm z4h3=8#@S&TSuwP=L@|YyokLJ^Zd=oPehzB(c%)L@wLP1hP@M^I@MgrbLa@HLHj%?o z22F&+<5UG2PP)N!wCv8ui+w7u$c) zIw_PPu?V(KsG3$4zR_k!Wo7$Ue503cWcfs&eS7kV zw(MU=9Wv7;Kk@2%BYl1TbRi-QmTIycsEmx)w#@2UiKwZVlTtJ=vu$8+}6 z)Ho$^-eFX!5N|}X+so|fV}3%>ln|^bf~gFz@)E}-I-iHr$eF0YCKPT8`k{EoxEp)b z$1&|F(zn&N>m-%JH;DJ}ub7OMM0q0;Dog}PFuVghyjeF#Q9KJ*WtQ!A-$BZ<_IUzg z#o?^bg?3juL~GP0Fv^}a`dj8T4$e!n4`8y2+h6SMkqSaib;Hv=XVIuXnU~?Ds(xB` z!Ext(xu8}bpYg&ae9~38vaThg^{^Gak4{mCL5XQ1moGv~j;Yh|r=@`{TYkhauS4gd_*;EcQ>RTh)WFG7ZnTfa{Lw`6ea7 zlb!EY9OAejnD~eqqeXOM9)_51JlPEuM6AEL0x$OP-SC&wokh8sE>i@W-2@_sM}fO< zkQmH$`K9~9ZAYFt4IH8EJTc4~<1p)dqLtGTq1t*T#-L*+qHRee?l&(OvmUN|gmyiH$${L&ZKxYj3hidJqZMl46DWJ+S=xIizZyGW(5*8KGA zbe%jEvigk@Ujjar+pB8v1a#O%xEY{Ee6MhX{CUp3GgOMv;O0mRX}y&1>{0a96f*wV z4P^-ZYMM<=xNPMMI$8Y$mZ4sr_W@a zuNw6rLtBm9+9I7$Xlcz+_xh^i3fD3-FP$rS0!be_l+`fb_Uhf!kh;IkS|}tAtD3-{ z-y5Px=Sr_CgBH|di}En-P9;!#ej!RR=Fns6M+IW&$&Naf@4QNwUiT|B5U=s4?1x?C z#P_jcQPP3056*=c?pdA*t6}2EDja&-spR+uR>u1nn~f3ox{$S-GJ9)AiEA256g``IJ=1)6!|^6EA8FE^ zYB~sZJ59VXW7GMR@!rr=*?Bs9K1Xd>t0&sFp$O~^n7pAgK5sUiC0l*$TpS$>j+Lug zY1igA9YYi5FCTZluu7{4LoV#mM0Hz&rZ_`uY>v^`*$t;*(pJ^YHh#^qXlj*bwUa zT_)JwDeKuNKu2`iEpdqJbgk0MZv)2zNHc?R3mI&=A}J+C;rNQEpN$Z3@mA@Usg;lz zU@j7BSQir{eO4^?pzxMn?1A?vENrmib_YdI&4UClSjsB{KY8YzmJjY1j0%M4g1ZRta@rzMO7oSBU?980zvR zk{qlJTBASiyb$D;e{5Cw2WP+(Vskx9qY%W@igAihdvo^Mu-c^~SheEJy_}zQb#g93jfvhx!j^XS3}(Z!J~Hg&8(}OtjT#R@1K*TK zL<$yH;Zs;Vez2AG~bCp!9E4FrPv?EPeDQk;3XS#wn&mb*^Y&f4@l*V zfAUnXY%%=iM2mDi8wut^NSyXI&HMazPz^r~oY&$YzUV|uUJazDNi>%N6I^S(!-ygU z9%^me70nU`!JRK^=!uq;nl{>n*3ogV$PE2$h`PugGq6ULP7fAVst2;^!q%d>dz;p! zGKRAR$3d?~F(#1xAuN|fLCom3<@Va)JS?j<^>((oxuYVV%z`I&xOw=Ii*ut^1G-$7 z2z=q}UA@J#ELbPPDtem6V_Tc;AeS0jJ2#uCP4?x+K#Et_*(<$_U6wR{{tx@)WJFx+ z+>N>xW|ScT9KKvQW?O1E0k61`6q9b%@QKd+^ZUvsg0t{9O%RDeVb&Mcl~#=@)t2f! z3}t277ciVtH`OlFN}xhkT#61Z(Q^C~fsLf|@y#8UD>`Dl@g?xIruBVkX&se9MZj(VzPy|D>PFs^=`ENixG+udg<+z-CErb9t@yQ2K`7Bs#L-H@jDjLn7oT$w)M z)r@S{wF9wX&yL^lXLShfTZ_JGK`CeqCghBr`-%FuFCg@qmLds_5UrWMF{;^>1kYb0 ztBAzR3b*Nb*`#s>I@9QN=MXVdE?RIyUTmZb(fl!T44kDJ<{nA(({165(y z2k^2RNNW#52Jl%qWMj%ugYF#mP4yUhX%Osr9>w?#3mzc_Mvd_>4r7Ms%6PMHAF{*?a=P+MiM2$w+>EdZ57Ly6#h`2liY`(U9$3!5adD9vZ0Xh&q(8#=D1K|xeja1?YW z)=1W~>xeHYuYI@Td1vdXze<=m_NTDpf^Su!yE*iZv3gHf<)h)|9jO6qqYe<+Vmsi!alJvxFk1lsuurs!vzm|n_v}h1!Ia9M8 za>NVS=)i>h5E1?%?x-Ke*yTu%Y1x5M{>Y`^HYM_qwTiTt9mlVfjU}7tII~AU`CI6L zwVtTO@sVvaL*B|vz28)X54PB6n2%eyb0m%jvtF za98zyaPh|LLeMf<rp|5zq8qq@&j2}S*2e7Z*{VsuQ7vgVbjYjb37){1H1~dO)VZgecc|LjA7Kqs5K^FDDo^rm8h6sW%_jVK;3p0*h~xLA-sT&!&|a@{&uTzL0l ze%p2L+nm9*&*Ejr`{AmrN29DqaK2IqNGt#r`0(Kq0K1oh#@(*TZo35d++p7Li2p={R{T{?~fv$QUHLA z4D&C5qu@GDg3AcF{0%_Fp8#8b1!Mx6JDE8f{tWz`;7@?RYwQfx*ttO?mjnU;sE7PD z3+(q=et$szFt2{8=?`FW6}gvEauQ7L)>gk%eh93_kMbuR-*Ns^4ZNQ!9}Z5^3RdF> zhm^9iikRMOF+m;xV;|eiY0DuJr0HFOH56FMzfASbQ0~sAm>}(yJnA{Ei zx_Lh&tPa?h_y{%?0xToNPqdjz|I0ihTN_hz;NKDS2O}x28}S)9)4LlS06_N>XPEXQJ0d4FLd%gRxP6!u8errOI{&MwSLZlYjRxf1}dsN(PE&U@e%y z1V}%DLmB)6t|TV%QdW$~+W4B?S@h{_l*ZQW=M57a7+qoAUl^Ub~0O9ZOLH?V6i0@!xV{GE^?+n*hm~_A& zQ=fb4fPAb zPT+3!YXWxzJM+KYgo<9(o*{q-luzJp_U9&q5cp>t*57lf|8;YINR`9YHfI2q3Ig2Y zlKjpbkiT!lpHbO4{9@eSVEZHSevUG^sDHElDx48`{P^3-74iwK-Gj}^hxwjv{@>mK z`Dgzz!9SGEbbX_X72L_qgTKWg|A_}W_74sDb==kaH7NduazFf}yk=2y3pVTk?5CeY zqB!Y~3IDc}eozrx--1rSEoUCwT7Pb-$fcECwQ8K{*#ZQvwp+={}anNzk`1iDa`pDyseY1k*$@Uqmh}3_1}+Yd_8?F z*zdjoyZvWh-26GoKh*1m)Qf6ZFi$uV0Py>X0m$Df|2KpFfv*AJ=RemTXg>)CzNquZ z2;gYq0nxzH5o4s-U5jTb2x-LIEPd<@YlZkpEggm<>D?k@ Date: Fri, 29 Nov 2024 04:48:36 +0000 Subject: [PATCH 141/418] release: v4.2.7 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index daa5331b..bcdb30c9 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.6", + "version": "4.2.7", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 363e478f..d84974da 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.6", + "version": "4.2.7", "scripts": { "build:framework": "npm run build:webui && vite build --mode framework || exit 1", "build:shell": "npm run build:webui && vite build --mode shell || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index b7dc1d2f..cfcb99ed 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.6'; +export const napCatVersion = '4.2.7'; From 7087eafe372b91cd8fa19ed5f547c4049db23055 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Fri, 29 Nov 2024 15:11:35 +0800 Subject: [PATCH 142/418] feat: Universal Package (#578) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 统一包支持 * feat: Universal --- .env.universal | 2 + package.json | 2 + src/shell/base.ts | 366 +++++++++++++++++++++++++++++++++++++++ src/shell/napcat.ts | 368 +--------------------------------------- src/universal/napcat.ts | 7 + vite.config.ts | 63 ++++++- 6 files changed, 438 insertions(+), 370 deletions(-) create mode 100644 .env.universal create mode 100644 src/shell/base.ts create mode 100644 src/universal/napcat.ts diff --git a/.env.universal b/.env.universal new file mode 100644 index 00000000..6949eb6a --- /dev/null +++ b/.env.universal @@ -0,0 +1,2 @@ +VITE_BUILD_TYPE = Production +VITE_BUILD_PLATFORM = Universal \ No newline at end of file diff --git a/package.json b/package.json index d84974da..51e22e4a 100644 --- a/package.json +++ b/package.json @@ -4,9 +4,11 @@ "type": "module", "version": "4.2.7", "scripts": { + "build:universal": "npm run build:webui && vite build --mode universal || exit 1", "build:framework": "npm run build:webui && vite build --mode framework || exit 1", "build:shell": "npm run build:webui && vite build --mode shell || exit 1", "build:webui": "cd napcat.webui && vite build", + "dev:universal": "vite build --mode universal", "dev:framework": "vite build --mode framework", "dev:shell": "vite build --mode shell", "dev:webui": "cd napcat.webui && npm run webui:dev", diff --git a/src/shell/base.ts b/src/shell/base.ts new file mode 100644 index 00000000..d39c1bb3 --- /dev/null +++ b/src/shell/base.ts @@ -0,0 +1,366 @@ +import type { SelfInfo } from '@/core/types'; + +import { LogWrapper } from '@/common/log'; +import { NodeIKernelLoginListener, NodeIKernelSessionListener } from '@/core/listeners'; +import { NodeIDependsAdapter, NodeIDispatcherAdapter, NodeIGlobalAdapter } from '@/core/adapters'; +import { NapCatPathWrapper } from '@/common/path'; +import { + genSessionConfig, + InstanceContext, + loadQQWrapper, + NapCatCore, + NapCatCoreWorkingEnv, + NodeIQQNTWrapperSession, + PlatformType, + WrapperNodeApi, +} from '@/core'; +import { QQBasicInfoWrapper } from '@/common/qq-basic-info'; +import { hostname, systemVersion } from '@/common/system'; +import { proxiedListenerOf } from '@/common/proxy-handler'; + +import path from 'path'; +import fs from 'fs'; +import os from 'os'; +import { NodeIKernelLoginService } from '@/core/services'; +import { program } from 'commander'; +import qrcode from 'qrcode-terminal'; +import { NapCatOneBot11Adapter } from '@/onebot'; +import { InitWebUi } from '@/webui'; +import { WebUiDataRuntime } from '@/webui/src/helper/Data'; +import { napCatVersion } from '@/common/version'; +import { NodeIO3MiscListener } from '@/core/listeners/NodeIO3MiscListener'; +// NapCat Shell App ES 入口文件 +async function handleUncaughtExceptions(logger: LogWrapper) { + process.on('uncaughtException', (err) => { + logger.logError('[NapCat] [Error] Unhandled Exception:', err.message); + }); + process.on('unhandledRejection', (reason, promise) => { + logger.logError('[NapCat] [Error] unhandledRejection:', reason); + }); +} + +function getDataPaths(wrapper: WrapperNodeApi): [string, string] { + if (os.platform() === 'darwin') { + const userPath = os.homedir(); + const appDataPath = path.resolve(userPath, './Library/Application Support/QQ'); + return [appDataPath, path.join(appDataPath, 'global')]; + } + let dataPath = wrapper.NodeQQNTWrapperUtil.getNTUserDataInfoConfig(); + if (!dataPath) { + dataPath = path.resolve(os.homedir(), './.config/QQ'); + fs.mkdirSync(dataPath, { recursive: true }); + } + const dataPathGlobal = path.resolve(dataPath, './nt_qq/global'); + return [dataPath, dataPathGlobal]; +} + +function getPlatformType(): PlatformType { + const platformMapping: Partial> = { + win32: PlatformType.KWINDOWS, + darwin: PlatformType.KMAC, + linux: PlatformType.KLINUX, + }; + return platformMapping[os.platform()] ?? PlatformType.KWINDOWS; +} + +async function initializeEngine( + engine: any, + basicInfoWrapper: QQBasicInfoWrapper, + dataPathGlobal: string, + systemPlatform: PlatformType, + systemVersion: string +) { + engine.initWithDeskTopConfig( + { + base_path_prefix: '', + platform_type: systemPlatform, + app_type: 4, + app_version: basicInfoWrapper.getFullQQVesion(), + os_version: systemVersion, + use_xlog: false, + qua: basicInfoWrapper.QQVersionQua, + global_path_config: { + desktopGlobalPath: dataPathGlobal, + }, + thumb_config: { maxSide: 324, minSide: 48, longLimit: 6, density: 2 }, + }, + new NodeIGlobalAdapter(), + ); +} + +async function initializeLoginService( + loginService: NodeIKernelLoginService, + basicInfoWrapper: QQBasicInfoWrapper, + dataPathGlobal: string, + systemVersion: string, + hostname: string +) { + loginService.initConfig({ + machineId: '', + appid: basicInfoWrapper.QQVersionAppid ?? '', + platVer: systemVersion, + commonPath: dataPathGlobal, + clientVer: basicInfoWrapper.getFullQQVesion(), + hostName: hostname, + }); +} + +async function handleLogin( + loginService: NodeIKernelLoginService, + logger: LogWrapper, + pathWrapper: NapCatPathWrapper, + quickLoginUin: string | undefined, + historyLoginList: any[] +): Promise { + return new Promise((resolve) => { + const loginListener = new NodeIKernelLoginListener(); + let isLogined = false; + + loginListener.onUserLoggedIn = (userid: string) => { + logger.logError(`当前账号(${userid})已登录,无法重复登录`); + }; + + loginListener.onQRCodeLoginSucceed = async (loginResult) => { + isLogined = true; + resolve({ + uid: loginResult.uid, + uin: loginResult.uin, + nick: '', + online: true, + }); + }; + + loginListener.onQRCodeGetPicture = ({ pngBase64QrcodeData, qrcodeUrl }) => { + WebUiDataRuntime.setQQLoginQrcodeURL(qrcodeUrl); + + const realBase64 = pngBase64QrcodeData.replace(/^data:image\/\w+;base64,/, ''); + const buffer = Buffer.from(realBase64, 'base64'); + logger.logWarn('请扫描下面的二维码,然后在手Q上授权登录:'); + const qrcodePath = path.join(pathWrapper.cachePath, 'qrcode.png'); + qrcode.generate(qrcodeUrl, { small: true }, (res) => { + logger.logWarn([ + '\n', + res, + '二维码解码URL: ' + qrcodeUrl, + '如果控制台二维码无法扫码,可以复制解码url到二维码生成网站生成二维码再扫码,也可以打开下方的二维码路径图片进行扫码。', + ].join('\n')); + fs.writeFile(qrcodePath, buffer, {}, () => { + logger.logWarn('二维码已保存到', qrcodePath); + }); + }); + }; + + loginListener.onQRCodeSessionFailed = (errType: number, errCode: number, errMsg: string) => { + if (!isLogined) { + logger.logError('[Core] [Login] Login Error,ErrCode: ', errCode, ' ErrMsg:', errMsg); + if (errType == 1 && errCode == 3) { + // 二维码过期刷新 + } + loginService.getQRCodePicture(); + } + }; + + loginListener.onLoginFailed = (args) => { + logger.logError('[Core] [Login] Login Error , ErrInfo: ', args); + }; + + loginService.addKernelLoginListener(proxiedListenerOf(loginListener, logger)); + const isConnect = loginService.connect(); + if (!isConnect) { + logger.logError('核心登录服务连接失败!'); + return; + } + + logger.log('核心登录服务连接成功!'); + + loginService.getLoginList().then((res) => { + // 遍历 res.LocalLoginInfoList[x].isQuickLogin是否可以 res.LocalLoginInfoList[x].uin 转为string 加入string[] 最后遍历完成调用WebUiDataRuntime.setQQQuickLoginList + WebUiDataRuntime.setQQQuickLoginList(res.LocalLoginInfoList.filter((item) => item.isQuickLogin).map((item) => item.uin.toString())); + }); + + WebUiDataRuntime.setQuickLoginCall(async (uin: string) => { + return await new Promise((resolve) => { + if (uin) { + logger.log('正在快速登录 ', uin); + loginService.quickLoginWithUin(uin).then(res => { + if (res.loginErrorInfo.errMsg) { + resolve({ result: false, message: res.loginErrorInfo.errMsg }); + } + resolve({ result: true, message: '' }); + }).catch((e) => { + logger.logError(e); + resolve({ result: false, message: '快速登录发生错误' }); + }); + } else { + resolve({ result: false, message: '快速登录失败' }); + } + }); + }); + + if (quickLoginUin) { + if (historyLoginList.some(u => u.uin === quickLoginUin)) { + logger.log('正在快速登录 ', quickLoginUin); + setTimeout(() => { + loginService.quickLoginWithUin(quickLoginUin) + .then(result => { + if (result.loginErrorInfo.errMsg) { + logger.logError('快速登录错误:', result.loginErrorInfo.errMsg); + if (!isLogined) loginService.getQRCodePicture(); + } + }) + .catch(); + }, 1000); + } else { + logger.logError('快速登录失败,未找到该 QQ 历史登录记录,将使用二维码登录方式'); + if (!isLogined) loginService.getQRCodePicture(); + } + } else { + logger.log('没有 -q 指令指定快速登录,将使用二维码登录方式'); + if (historyLoginList.length > 0) { + logger.log(`可用于快速登录的 QQ:\n${historyLoginList + .map((u, index) => `${index + 1}. ${u.uin} ${u.nickName}`) + .join('\n') + }`); + } + loginService.getQRCodePicture(); + } + }); +} + +async function initializeSession( + session: NodeIQQNTWrapperSession, + sessionConfig: any, + logger: LogWrapper +) { + return new Promise((resolve, reject) => { + const sessionListener = new NodeIKernelSessionListener(); + sessionListener.onSessionInitComplete = (r: unknown) => { + if (r === 0) { + resolve(); + } else { + reject(new Error('登录异常' + r?.toString())); + } + }; + session.init( + sessionConfig, + new NodeIDependsAdapter(), + new NodeIDispatcherAdapter(), + sessionListener, + ); + try { + session.startNT(0); + } catch (_) { + try { + session.startNT(); + } catch (e: unknown) { + reject(new Error('init failed ' + (e as Error).message)); + } + } + }); +} + +export async function NCoreInitShell() { + console.log('NapCat Shell App Loading...'); + const pathWrapper = new NapCatPathWrapper(); + const logger = new LogWrapper(pathWrapper.logsPath); + handleUncaughtExceptions(logger); + + const basicInfoWrapper = new QQBasicInfoWrapper({ logger }); + const wrapper = loadQQWrapper(basicInfoWrapper.getFullQQVesion()); + + const o3Service = wrapper.NodeIO3MiscService.get(); + o3Service.addO3MiscListener(new NodeIO3MiscListener()); + + logger.log(`[NapCat] [Core] NapCat.Core Version: ` + napCatVersion); + InitWebUi(logger, pathWrapper).then().catch(e => logger.logError(e)); + + const engine = wrapper.NodeIQQNTWrapperEngine.get(); + const loginService = wrapper.NodeIKernelLoginService.get(); + const session = wrapper.NodeIQQNTWrapperSession.create(); + + const [dataPath, dataPathGlobal] = getDataPaths(wrapper); + const systemPlatform = getPlatformType(); + + if (!basicInfoWrapper.QQVersionAppid || !basicInfoWrapper.QQVersionQua) throw new Error('QQVersionAppid or QQVersionQua is not defined'); + + await initializeEngine(engine, basicInfoWrapper, dataPathGlobal, systemPlatform, systemVersion); + await initializeLoginService(loginService, basicInfoWrapper, dataPathGlobal, systemVersion, hostname); + + program.option('-q, --qq [number]', 'QQ号').parse(process.argv); + const cmdOptions = program.opts(); + const quickLoginUin = cmdOptions.qq; + const historyLoginList = (await loginService.getLoginList()).LocalLoginInfoList; + + const dataTimestape = new Date().getTime().toString(); + o3Service.reportAmgomWeather('login', 'a1', [dataTimestape, '0', '0']); + + const selfInfo = await handleLogin(loginService, logger, pathWrapper, quickLoginUin, historyLoginList); + + const amgomDataPiece = 'eb1fd6ac257461580dc7438eb099f23aae04ca679f4d88f53072dc56e3bb1129'; + o3Service.setAmgomDataPiece(basicInfoWrapper.QQVersionAppid, new Uint8Array(Buffer.from(amgomDataPiece, 'hex'))); + + let guid = loginService.getMachineGuid(); + guid = guid.slice(0, 8) + '-' + guid.slice(8, 12) + '-' + guid.slice(12, 16) + '-' + guid.slice(16, 20) + '-' + guid.slice(20); + o3Service.reportAmgomWeather('login', 'a6', [dataTimestape, '184', '329']); + + const sessionConfig = await genSessionConfig( + guid, + basicInfoWrapper.QQVersionAppid, + basicInfoWrapper.getFullQQVesion(), + selfInfo.uin, + selfInfo.uid, + dataPath, + ); + + await initializeSession(session, sessionConfig, logger); + + const accountDataPath = path.resolve(dataPath, './NapCat/data'); + fs.mkdirSync(dataPath, { recursive: true }); + logger.logDebug('本账号数据/缓存目录:', accountDataPath); + + await new NapCatShell( + wrapper, + session, + logger, + loginService, + selfInfo, + basicInfoWrapper, + pathWrapper, + ).InitNapCat(); +} + + +export class NapCatShell { + readonly core: NapCatCore; + readonly context: InstanceContext; + + constructor( + wrapper: WrapperNodeApi, + session: NodeIQQNTWrapperSession, + logger: LogWrapper, + loginService: NodeIKernelLoginService, + selfInfo: SelfInfo, + basicInfoWrapper: QQBasicInfoWrapper, + pathWrapper: NapCatPathWrapper, + ) { + this.context = { + workingEnv: NapCatCoreWorkingEnv.Shell, + wrapper, + session, + logger, + loginService, + basicInfoWrapper, + pathWrapper, + }; + this.core = new NapCatCore(this.context, selfInfo); + + + + } + async InitNapCat() { + await this.core.initCore(); + new NapCatOneBot11Adapter(this.core, this.context, this.context.pathWrapper).InitOneBot() + .catch(e => this.context.logger.logError('初始化OneBot失败', e)); + } +} + diff --git a/src/shell/napcat.ts b/src/shell/napcat.ts index 8b4d5a69..ae05d794 100644 --- a/src/shell/napcat.ts +++ b/src/shell/napcat.ts @@ -1,369 +1,3 @@ -import type { SelfInfo } from '@/core/types'; - -import { LogWrapper } from '@/common/log'; -import { NodeIKernelLoginListener, NodeIKernelSessionListener } from '@/core/listeners'; -import { NodeIDependsAdapter, NodeIDispatcherAdapter, NodeIGlobalAdapter } from '@/core/adapters'; -import { NapCatPathWrapper } from '@/common/path'; -import { - genSessionConfig, - InstanceContext, - loadQQWrapper, - NapCatCore, - NapCatCoreWorkingEnv, - NodeIQQNTWrapperSession, - PlatformType, - WrapperNodeApi, -} from '@/core'; -import { QQBasicInfoWrapper } from '@/common/qq-basic-info'; -import { hostname, systemVersion } from '@/common/system'; -import { proxiedListenerOf } from '@/common/proxy-handler'; - -import path from 'path'; -import fs from 'fs'; -import os from 'os'; -import { NodeIKernelLoginService } from '@/core/services'; -import { program } from 'commander'; -import qrcode from 'qrcode-terminal'; -import { NapCatOneBot11Adapter } from '@/onebot'; -import { InitWebUi } from '@/webui'; -import { WebUiDataRuntime } from '@/webui/src/helper/Data'; -import { napCatVersion } from '@/common/version'; -import { NodeIO3MiscListener } from '@/core/listeners/NodeIO3MiscListener'; - -program.option('-q, --qq [number]', 'QQ号').parse(process.argv); -const cmdOptions = program.opts(); - -// NapCat Shell App ES 入口文件 -async function handleUncaughtExceptions(logger: LogWrapper) { - process.on('uncaughtException', (err) => { - logger.logError('[NapCat] [Error] Unhandled Exception:', err.message); - }); - process.on('unhandledRejection', (reason, promise) => { - logger.logError('[NapCat] [Error] unhandledRejection:', reason); - }); -} - -function getDataPaths(wrapper: WrapperNodeApi): [string, string] { - if (os.platform() === 'darwin') { - const userPath = os.homedir(); - const appDataPath = path.resolve(userPath, './Library/Application Support/QQ'); - return [appDataPath, path.join(appDataPath, 'global')]; - } - let dataPath = wrapper.NodeQQNTWrapperUtil.getNTUserDataInfoConfig(); - if (!dataPath) { - dataPath = path.resolve(os.homedir(), './.config/QQ'); - fs.mkdirSync(dataPath, { recursive: true }); - } - const dataPathGlobal = path.resolve(dataPath, './nt_qq/global'); - return [dataPath, dataPathGlobal]; -} - -function getPlatformType(): PlatformType { - const platformMapping: Partial> = { - win32: PlatformType.KWINDOWS, - darwin: PlatformType.KMAC, - linux: PlatformType.KLINUX, - }; - return platformMapping[os.platform()] ?? PlatformType.KWINDOWS; -} - -async function initializeEngine( - engine: any, - basicInfoWrapper: QQBasicInfoWrapper, - dataPathGlobal: string, - systemPlatform: PlatformType, - systemVersion: string -) { - engine.initWithDeskTopConfig( - { - base_path_prefix: '', - platform_type: systemPlatform, - app_type: 4, - app_version: basicInfoWrapper.getFullQQVesion(), - os_version: systemVersion, - use_xlog: false, - qua: basicInfoWrapper.QQVersionQua, - global_path_config: { - desktopGlobalPath: dataPathGlobal, - }, - thumb_config: { maxSide: 324, minSide: 48, longLimit: 6, density: 2 }, - }, - new NodeIGlobalAdapter(), - ); -} - -async function initializeLoginService( - loginService: NodeIKernelLoginService, - basicInfoWrapper: QQBasicInfoWrapper, - dataPathGlobal: string, - systemVersion: string, - hostname: string -) { - loginService.initConfig({ - machineId: '', - appid: basicInfoWrapper.QQVersionAppid ?? '', - platVer: systemVersion, - commonPath: dataPathGlobal, - clientVer: basicInfoWrapper.getFullQQVesion(), - hostName: hostname, - }); -} - -async function handleLogin( - loginService: NodeIKernelLoginService, - logger: LogWrapper, - pathWrapper: NapCatPathWrapper, - quickLoginUin: string | undefined, - historyLoginList: any[] -): Promise { - return new Promise((resolve) => { - const loginListener = new NodeIKernelLoginListener(); - let isLogined = false; - - loginListener.onUserLoggedIn = (userid: string) => { - logger.logError(`当前账号(${userid})已登录,无法重复登录`); - }; - - loginListener.onQRCodeLoginSucceed = async (loginResult) => { - isLogined = true; - resolve({ - uid: loginResult.uid, - uin: loginResult.uin, - nick: '', - online: true, - }); - }; - - loginListener.onQRCodeGetPicture = ({ pngBase64QrcodeData, qrcodeUrl }) => { - WebUiDataRuntime.setQQLoginQrcodeURL(qrcodeUrl); - - const realBase64 = pngBase64QrcodeData.replace(/^data:image\/\w+;base64,/, ''); - const buffer = Buffer.from(realBase64, 'base64'); - logger.logWarn('请扫描下面的二维码,然后在手Q上授权登录:'); - const qrcodePath = path.join(pathWrapper.cachePath, 'qrcode.png'); - qrcode.generate(qrcodeUrl, { small: true }, (res) => { - logger.logWarn([ - '\n', - res, - '二维码解码URL: ' + qrcodeUrl, - '如果控制台二维码无法扫码,可以复制解码url到二维码生成网站生成二维码再扫码,也可以打开下方的二维码路径图片进行扫码。', - ].join('\n')); - fs.writeFile(qrcodePath, buffer, {}, () => { - logger.logWarn('二维码已保存到', qrcodePath); - }); - }); - }; - - loginListener.onQRCodeSessionFailed = (errType: number, errCode: number, errMsg: string) => { - if (!isLogined) { - logger.logError('[Core] [Login] Login Error,ErrCode: ', errCode, ' ErrMsg:', errMsg); - if (errType == 1 && errCode == 3) { - // 二维码过期刷新 - } - loginService.getQRCodePicture(); - } - }; - - loginListener.onLoginFailed = (args) => { - logger.logError('[Core] [Login] Login Error , ErrInfo: ', args); - }; - - loginService.addKernelLoginListener(proxiedListenerOf(loginListener, logger)); - const isConnect = loginService.connect(); - if (!isConnect) { - logger.logError('核心登录服务连接失败!'); - return; - } - - logger.log('核心登录服务连接成功!'); - - loginService.getLoginList().then((res) => { - // 遍历 res.LocalLoginInfoList[x].isQuickLogin是否可以 res.LocalLoginInfoList[x].uin 转为string 加入string[] 最后遍历完成调用WebUiDataRuntime.setQQQuickLoginList - WebUiDataRuntime.setQQQuickLoginList(res.LocalLoginInfoList.filter((item) => item.isQuickLogin).map((item) => item.uin.toString())); - }); - - WebUiDataRuntime.setQuickLoginCall(async (uin: string) => { - return await new Promise((resolve) => { - if (uin) { - logger.log('正在快速登录 ', uin); - loginService.quickLoginWithUin(uin).then(res => { - if (res.loginErrorInfo.errMsg) { - resolve({ result: false, message: res.loginErrorInfo.errMsg }); - } - resolve({ result: true, message: '' }); - }).catch((e) => { - logger.logError(e); - resolve({ result: false, message: '快速登录发生错误' }); - }); - } else { - resolve({ result: false, message: '快速登录失败' }); - } - }); - }); - - if (quickLoginUin) { - if (historyLoginList.some(u => u.uin === quickLoginUin)) { - logger.log('正在快速登录 ', quickLoginUin); - setTimeout(() => { - loginService.quickLoginWithUin(quickLoginUin) - .then(result => { - if (result.loginErrorInfo.errMsg) { - logger.logError('快速登录错误:', result.loginErrorInfo.errMsg); - if (!isLogined) loginService.getQRCodePicture(); - } - }) - .catch(); - }, 1000); - } else { - logger.logError('快速登录失败,未找到该 QQ 历史登录记录,将使用二维码登录方式'); - if (!isLogined) loginService.getQRCodePicture(); - } - } else { - logger.log('没有 -q 指令指定快速登录,将使用二维码登录方式'); - if (historyLoginList.length > 0) { - logger.log(`可用于快速登录的 QQ:\n${historyLoginList - .map((u, index) => `${index + 1}. ${u.uin} ${u.nickName}`) - .join('\n') - }`); - } - loginService.getQRCodePicture(); - } - }); -} - -async function initializeSession( - session: NodeIQQNTWrapperSession, - sessionConfig: any, - logger: LogWrapper -) { - return new Promise((resolve, reject) => { - const sessionListener = new NodeIKernelSessionListener(); - sessionListener.onSessionInitComplete = (r: unknown) => { - if (r === 0) { - resolve(); - } else { - reject(new Error('登录异常' + r?.toString())); - } - }; - session.init( - sessionConfig, - new NodeIDependsAdapter(), - new NodeIDispatcherAdapter(), - sessionListener, - ); - try { - session.startNT(0); - } catch (_) { - try { - session.startNT(); - } catch (e: unknown) { - reject(new Error('init failed ' + (e as Error).message)); - } - } - }); -} - -export async function NCoreInitShell() { - console.log('NapCat Shell App Loading...'); - const pathWrapper = new NapCatPathWrapper(); - const logger = new LogWrapper(pathWrapper.logsPath); - handleUncaughtExceptions(logger); - - const basicInfoWrapper = new QQBasicInfoWrapper({ logger }); - const wrapper = loadQQWrapper(basicInfoWrapper.getFullQQVesion()); - - const o3Service = wrapper.NodeIO3MiscService.get(); - o3Service.addO3MiscListener(new NodeIO3MiscListener()); - - logger.log(`[NapCat] [Core] NapCat.Core Version: ` + napCatVersion); - InitWebUi(logger, pathWrapper).then().catch(e => logger.logError(e)); - - const engine = wrapper.NodeIQQNTWrapperEngine.get(); - const loginService = wrapper.NodeIKernelLoginService.get(); - const session = wrapper.NodeIQQNTWrapperSession.create(); - - const [dataPath, dataPathGlobal] = getDataPaths(wrapper); - const systemPlatform = getPlatformType(); - - if (!basicInfoWrapper.QQVersionAppid || !basicInfoWrapper.QQVersionQua) throw new Error('QQVersionAppid or QQVersionQua is not defined'); - - await initializeEngine(engine, basicInfoWrapper, dataPathGlobal, systemPlatform, systemVersion); - await initializeLoginService(loginService, basicInfoWrapper, dataPathGlobal, systemVersion, hostname); - - const quickLoginUin = cmdOptions.qq; - const historyLoginList = (await loginService.getLoginList()).LocalLoginInfoList; - - const dataTimestape = new Date().getTime().toString(); - o3Service.reportAmgomWeather('login', 'a1', [dataTimestape, '0', '0']); - - const selfInfo = await handleLogin(loginService, logger, pathWrapper, quickLoginUin, historyLoginList); - - const amgomDataPiece = 'eb1fd6ac257461580dc7438eb099f23aae04ca679f4d88f53072dc56e3bb1129'; - o3Service.setAmgomDataPiece(basicInfoWrapper.QQVersionAppid, new Uint8Array(Buffer.from(amgomDataPiece, 'hex'))); - - let guid = loginService.getMachineGuid(); - guid = guid.slice(0, 8) + '-' + guid.slice(8, 12) + '-' + guid.slice(12, 16) + '-' + guid.slice(16, 20) + '-' + guid.slice(20); - o3Service.reportAmgomWeather('login', 'a6', [dataTimestape, '184', '329']); - - const sessionConfig = await genSessionConfig( - guid, - basicInfoWrapper.QQVersionAppid, - basicInfoWrapper.getFullQQVesion(), - selfInfo.uin, - selfInfo.uid, - dataPath, - ); - - await initializeSession(session, sessionConfig, logger); - - const accountDataPath = path.resolve(dataPath, './NapCat/data'); - fs.mkdirSync(dataPath, { recursive: true }); - logger.logDebug('本账号数据/缓存目录:', accountDataPath); - - await new NapCatShell( - wrapper, - session, - logger, - loginService, - selfInfo, - basicInfoWrapper, - pathWrapper, - ).InitNapCat(); -} - - -export class NapCatShell { - readonly core: NapCatCore; - readonly context: InstanceContext; - - constructor( - wrapper: WrapperNodeApi, - session: NodeIQQNTWrapperSession, - logger: LogWrapper, - loginService: NodeIKernelLoginService, - selfInfo: SelfInfo, - basicInfoWrapper: QQBasicInfoWrapper, - pathWrapper: NapCatPathWrapper, - ) { - this.context = { - workingEnv: NapCatCoreWorkingEnv.Shell, - wrapper, - session, - logger, - loginService, - basicInfoWrapper, - pathWrapper, - }; - this.core = new NapCatCore(this.context, selfInfo); - - - - } - async InitNapCat() { - await this.core.initCore(); - new NapCatOneBot11Adapter(this.core, this.context, this.context.pathWrapper).InitOneBot() - .catch(e => this.context.logger.logError('初始化OneBot失败', e)); - } -} +import { NCoreInitShell } from "./base"; NCoreInitShell(); diff --git a/src/universal/napcat.ts b/src/universal/napcat.ts new file mode 100644 index 00000000..1c07175f --- /dev/null +++ b/src/universal/napcat.ts @@ -0,0 +1,7 @@ +import { NCoreInitShell } from "@/shell/base"; + +export * from "@/framework/napcat"; +export * from "@/shell/base"; +if ((global as any).LiteLoader == undefined) { + NCoreInitShell(); +} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts index d3502f50..fe592985 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -6,9 +6,7 @@ import { builtinModules } from 'module'; //依赖排除 const external = ['silk-wasm', 'ws', 'express', 'qrcode-terminal', 'fluent-ffmpeg', 'piscina']; const nodeModules = [...builtinModules, builtinModules.map((m) => `node:${m}`)].flat(); -function genCpModule(module: string) { - return { src: `./node_modules/${module}`, dest: `dist/node_modules/${module}`, flatten: false }; -} + let startScripts: string[] | undefined = undefined; if (process.env.NAPCAT_BUILDSYS == 'linux') { startScripts = []; @@ -17,6 +15,29 @@ if (process.env.NAPCAT_BUILDSYS == 'linux') { } else { startScripts = ['./script/KillQQ.bat']; } + +const UniversalBaseConfigPlugin: PluginOption[] = [ + cp({ + targets: [ + { src: './manifest.json', dest: 'dist' }, + { src: './src/core/external/napcat.json', dest: 'dist/config/' }, + { src: './src/native/packet', dest: 'dist/moehoo', flatten: false }, + { src: './napcat.webui/dist/', dest: 'dist/static/', flatten: false }, + { src: './src/framework/liteloader.cjs', dest: 'dist' }, + { src: './src/framework/napcat.cjs', dest: 'dist' }, + { src: './src/framework/preload.cjs', dest: 'dist' }, + { src: './src/framework/renderer.js', dest: 'dist' }, + { src: './package.json', dest: 'dist' }, + { src: './logo.png', dest: 'dist' }, + { src: './launcher/', dest: 'dist', flatten: true }, + ...startScripts.map((startScript) => { + return { src: startScript, dest: 'dist' }; + }), + ], + }), + nodeResolve(), +]; + const FrameworkBaseConfigPlugin: PluginOption[] = [ cp({ targets: [ @@ -34,6 +55,8 @@ const FrameworkBaseConfigPlugin: PluginOption[] = [ }), nodeResolve(), ]; + + const ShellBaseConfigPlugin: PluginOption[] = [ cp({ targets: [ @@ -49,6 +72,35 @@ const ShellBaseConfigPlugin: PluginOption[] = [ }), nodeResolve(), ]; +const UniversalBaseConfig = () => + defineConfig({ + resolve: { + conditions: ['node', 'default'], + alias: { + '@/core': resolve(__dirname, './src/core'), + '@': resolve(__dirname, './src'), + './lib-cov/fluent-ffmpeg': './lib/fluent-ffmpeg', + '@webapi': resolve(__dirname, './src/webui/src'), + }, + }, + build: { + sourcemap: false, + target: 'esnext', + minify: false, + lib: { + entry: { + napcat: 'src/universal/napcat.ts', + 'audio-worker': 'src/common/audio-worker.ts', + }, + formats: ['es'], + fileName: (_, entryName) => `${entryName}.mjs`, + }, + rollupOptions: { + external: [...nodeModules, ...external], + }, + }, + }); + const ShellBaseConfig = () => defineConfig({ @@ -114,6 +166,11 @@ export default defineConfig(({ mode }): UserConfig => { ...ShellBaseConfig(), plugins: [...ShellBaseConfigPlugin], }; + } else if (mode == 'universal') { + return { + ...UniversalBaseConfig(), + plugins: [...UniversalBaseConfigPlugin], + }; } else { return { ...FrameworkBaseConfig(), From 9b04aed8b30028e2edc812e86d4bab513f1cc0be Mon Sep 17 00:00:00 2001 From: bietiaop <1527109126@qq.com> Date: Fri, 29 Nov 2024 20:35:56 +0800 Subject: [PATCH 143/418] =?UTF-8?q?feat:=20=E5=8E=86=E5=8F=B2=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/webui/src/api/Log.ts | 19 +++++++++++++++++++ src/webui/src/helper/config.ts | 24 +++++++++++++++++++++++- src/webui/src/router/Log.ts | 9 +++++++++ src/webui/src/router/index.ts | 3 +++ 4 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 src/webui/src/api/Log.ts create mode 100644 src/webui/src/router/Log.ts diff --git a/src/webui/src/api/Log.ts b/src/webui/src/api/Log.ts new file mode 100644 index 00000000..5b9b8c2b --- /dev/null +++ b/src/webui/src/api/Log.ts @@ -0,0 +1,19 @@ +import type { RequestHandler } from 'express'; +import { sendError, sendSuccess } from '../utils/response'; +import { WebUiConfigWrapper } from '../helper/config'; + +// 日志记录 +export const LogHandler: RequestHandler = async (req, res) => { + const filename = req.query.id as string; + if (filename.includes('..')) { + return sendError(res, 'ID不合法'); + } + const logContent = WebUiConfigWrapper.GetLogContent(filename); + return sendSuccess(res, logContent); +}; + +// 日志列表 +export const LogListHandler: RequestHandler = async (_, res) => { + const logList = WebUiConfigWrapper.GetLogsList(); + return sendSuccess(res, logList); +}; diff --git a/src/webui/src/helper/config.ts b/src/webui/src/helper/config.ts index 32ce972c..9c1d7413 100644 --- a/src/webui/src/helper/config.ts +++ b/src/webui/src/helper/config.ts @@ -1,5 +1,5 @@ import { webUiPathWrapper } from '@/webui'; -import { existsSync, readFileSync, writeFileSync } from 'node:fs'; +import { existsSync, readFileSync, writeFileSync, readdirSync } from 'node:fs'; import * as net from 'node:net'; import { resolve } from 'node:path'; @@ -131,4 +131,26 @@ export class WebUiConfigWrapper { } return defaultconfig; // 理论上这行代码到不了,到了只能返回默认配置了 } + + // 获取日志文件夹路径 + public static async GetLogsPath(): Promise { + return resolve(webUiPathWrapper.logsPath); + } + // 获取日志列表 + public static GetLogsList(): string[] { + if (existsSync(webUiPathWrapper.logsPath)) { + return readdirSync(webUiPathWrapper.logsPath) + .filter((file) => file.endsWith('.log')) + .map((file) => file.replace('.log', '')); + } + return []; + } + // 获取指定日志文件内容 + public static GetLogContent(filename: string): string { + const logPath = resolve(webUiPathWrapper.logsPath, `${filename}.log`); + if (existsSync(logPath)) { + return readFileSync(logPath, 'utf-8'); + } + return ''; + } } diff --git a/src/webui/src/router/Log.ts b/src/webui/src/router/Log.ts new file mode 100644 index 00000000..46187eeb --- /dev/null +++ b/src/webui/src/router/Log.ts @@ -0,0 +1,9 @@ +import { Router } from 'express'; +import { LogHandler, LogListHandler } from '../api/Log'; +const router = Router(); +// router:读取日志内容 +router.get('/GetLog', LogHandler); +// router:读取日志列表 +router.get('/GetLogList', LogListHandler); + +export { router as LogRouter }; diff --git a/src/webui/src/router/index.ts b/src/webui/src/router/index.ts index 419165d9..679bec57 100644 --- a/src/webui/src/router/index.ts +++ b/src/webui/src/router/index.ts @@ -10,6 +10,7 @@ import { sendSuccess } from '@webapi/utils/response'; import { QQLoginRouter } from '@webapi/router/QQLogin'; import { AuthRouter } from '@webapi/router/auth'; +import { LogRouter } from '@webapi/router/Log'; const router = Router(); @@ -26,5 +27,7 @@ router.use('/auth', AuthRouter); router.use('/QQLogin', QQLoginRouter); // router:OB11配置相关路由 router.use('/OB11Config', OB11ConfigRouter); +// router:日志相关路由 +router.use('/Log', LogRouter); export { router as ALLRouter }; From efa512ab21abf1f682267a2a597ea00f96d81050 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sat, 30 Nov 2024 09:34:03 +0800 Subject: [PATCH 144/418] fix: #580 --- src/common/file.ts | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/src/common/file.ts b/src/common/file.ts index 4d6aff58..cab8abb0 100644 --- a/src/common/file.ts +++ b/src/common/file.ts @@ -200,17 +200,7 @@ export async function checkUriType(Uri: string) { } // 默认file:// if (uri.startsWith('file:')) { - // 兼容file:/// - // file:///C:/1.jpg - if (uri.startsWith('file:///') && process.platform === 'win32') { - const filePath: string = uri.slice(8); - return { Uri: filePath, Type: FileUriType.Local }; - } - // 处理默认规范 - // file://C:\1.jpg - // file:///test/1.jpg - const filePath: string = uri.slice(7); - + const filePath: string = decodeURIComponent(uri.startsWith('file:///') && process.platform === 'win32' ? uri.slice(8) : uri.slice(7)); return { Uri: filePath, Type: FileUriType.Local }; } if (uri.startsWith('data:')) { From 040d0a8635bf4a2fae01cabb8739bfb8ced1556f Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Sat, 30 Nov 2024 01:39:59 +0000 Subject: [PATCH 145/418] release: v4.2.8 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index bcdb30c9..d506b6e7 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.7", + "version": "4.2.8", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 51e22e4a..e3a5a3cf 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.7", + "version": "4.2.8", "scripts": { "build:universal": "npm run build:webui && vite build --mode universal || exit 1", "build:framework": "npm run build:webui && vite build --mode framework || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index cfcb99ed..ded03b1a 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.7'; +export const napCatVersion = '4.2.8'; From a70585e85436345d2386ccbce42b9cc0680821ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sat, 30 Nov 2024 12:08:58 +0800 Subject: [PATCH 146/418] =?UTF-8?q?feat:=20=E5=A4=84=E7=90=86=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E7=9A=84=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/services/NodeIKernelGroupService.ts | 2 +- src/onebot/action/group/SetGroupName.ts | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/core/services/NodeIKernelGroupService.ts b/src/core/services/NodeIKernelGroupService.ts index fd9b2c70..61f3179a 100644 --- a/src/core/services/NodeIKernelGroupService.ts +++ b/src/core/services/NodeIKernelGroupService.ts @@ -163,7 +163,7 @@ export interface NodeIKernelGroupService { getGroupPortrait(): void; - modifyGroupName(groupCode: string, groupName: string, arg: false): void; + modifyGroupName(groupCode: string, groupName: string, isNormalMember: boolean): Promise; modifyGroupRemark(groupCode: string, remark: string): void; diff --git a/src/onebot/action/group/SetGroupName.ts b/src/onebot/action/group/SetGroupName.ts index 816317d9..719649c5 100644 --- a/src/onebot/action/group/SetGroupName.ts +++ b/src/onebot/action/group/SetGroupName.ts @@ -17,7 +17,10 @@ export default class SetGroupName extends OneBotAction { payloadSchema = SchemaData; async _handle(payload: Payload): Promise { - await this.core.apis.GroupApi.setGroupName(payload.group_id.toString(), payload.group_name); + let ret = await this.core.apis.GroupApi.setGroupName(payload.group_id.toString(), payload.group_name); + if (ret.result !== 0) { + throw new Error(`设置群名称失败 ErrCode: ${ret.result} ErrMsg: ${ret.errMsg}`); + } return null; } } From 86cdfbb79b1d04adcc8bf72e9abdfe0103f0fff3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sat, 30 Nov 2024 12:11:33 +0800 Subject: [PATCH 147/418] =?UTF-8?q?feat:=20=E5=8F=96=E6=B6=88=E4=B8=8A?= =?UTF-8?q?=E6=8A=A5=20pic=5Ftype?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/onebot/api/msg.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index ce25ae3a..eba61da8 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -118,7 +118,6 @@ export class OneBotMsgApi { return { type: OB11MessageDataType.image, data: { - pic_type: element.picType, summary: element.summary, file: encodedFileId, sub_type: element.picSubType, From f9519d39238b125be2d168143101303a8266fc9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sat, 30 Nov 2024 13:29:10 +0800 Subject: [PATCH 148/418] style: lint --- src/onebot/api/index.ts | 10 +++++----- src/onebot/api/quick-action.ts | 18 ++++++++++-------- src/onebot/index.ts | 2 +- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/onebot/api/index.ts b/src/onebot/api/index.ts index a7021d18..443159f7 100644 --- a/src/onebot/api/index.ts +++ b/src/onebot/api/index.ts @@ -1,8 +1,8 @@ -import { OneBotFriendApi } from '@/onebot/api/friend'; -import { OneBotUserApi } from '@/onebot/api/user'; -import { OneBotGroupApi } from '@/onebot/api/group'; -import { OneBotMsgApi } from '@/onebot/api/msg'; -import { OneBotQuickActionApi } from '@/onebot/api/quick-action'; +import type { OneBotFriendApi } from '@/onebot/api/friend'; +import type { OneBotUserApi } from '@/onebot/api/user'; +import type { OneBotGroupApi } from '@/onebot/api/group'; +import type { OneBotMsgApi } from '@/onebot/api/msg'; +import type { OneBotQuickActionApi } from '@/onebot/api/quick-action'; export * from './friend'; export * from './group'; diff --git a/src/onebot/api/quick-action.ts b/src/onebot/api/quick-action.ts index b6b7d2f4..8c12ede6 100644 --- a/src/onebot/api/quick-action.ts +++ b/src/onebot/api/quick-action.ts @@ -1,4 +1,4 @@ -import { +import type { NapCatOneBot11Adapter, OB11Message, OB11MessageAt, @@ -10,17 +10,19 @@ import { QuickActionGroupMessage, QuickActionGroupRequest, } from '@/onebot'; -import { NTGroupRequestOperateTypes, NapCatCore, Peer } from '@/core'; -import { OB11FriendRequestEvent } from '@/onebot/event/request/OB11FriendRequest'; -import { OB11GroupRequestEvent } from '@/onebot/event/request/OB11GroupRequest'; +import { NTGroupRequestOperateTypes, type NapCatCore, type Peer } from '@/core'; +import type { OB11FriendRequestEvent } from '@/onebot/event/request/OB11FriendRequest'; +import type { OB11GroupRequestEvent } from '@/onebot/event/request/OB11GroupRequest'; + import { ContextMode, createContext, normalize } from '@/onebot/action/msg/SendMsg'; import { isNull } from '@/common/helper'; export class OneBotQuickActionApi { - constructor( - public obContext: NapCatOneBot11Adapter, - public core: NapCatCore, - ) { + private obContext: NapCatOneBot11Adapter; + private core: NapCatCore; + constructor(obContext: NapCatOneBot11Adapter, core: NapCatCore) { + this.obContext = obContext; + this.core = core; } async handleQuickOperation(eventContext: QuickActionEvent, quickAction: QuickAction) { diff --git a/src/onebot/index.ts b/src/onebot/index.ts index 5a87c5b4..b993dfcc 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -76,7 +76,7 @@ export class NapCatOneBot11Adapter { FriendApi: new OneBotFriendApi(this, core), MsgApi: new OneBotMsgApi(this, core), QuickActionApi: new OneBotQuickActionApi(this, core), - }; + } as const; this.actions = createActionMap(this, core); this.networkManager = new OB11NetworkManager(); } From 1e13483bc363ed9d8f29d487f90e4caf8dc644ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sat, 30 Nov 2024 13:32:21 +0800 Subject: [PATCH 149/418] fix: type --- src/common/request.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/request.ts b/src/common/request.ts index 9e23cfd0..aecc5b1b 100644 --- a/src/common/request.ts +++ b/src/common/request.ts @@ -69,7 +69,7 @@ export class RequestUtil { // 'Content-Length': Buffer.byteLength(postData), // }, return new Promise((resolve, reject) => { - const req = protocol.request(options, (res: any) => { + const req = protocol.request(options, (res: http.IncomingMessage) => { let responseBody = ''; res.on('data', (chunk: string | Buffer) => { responseBody += chunk.toString(); From b44e1618fbbb0fd5dcce7a39ed60e291d5ccc1e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sat, 30 Nov 2024 14:12:23 +0800 Subject: [PATCH 150/418] fix: quick error --- src/onebot/index.ts | 2 +- src/onebot/network/active-http.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/onebot/index.ts b/src/onebot/index.ts index b993dfcc..9d858d74 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -58,7 +58,7 @@ export class NapCatOneBot11Adapter { readonly context: InstanceContext; configLoader: OB11ConfigLoader; - apis: StableOneBotApiWrapper; + public readonly apis: StableOneBotApiWrapper; networkManager: OB11NetworkManager; actions: ActionMap; private readonly bootTime = Date.now() / 1000; diff --git a/src/onebot/network/active-http.ts b/src/onebot/network/active-http.ts index 5e62369f..432be2a3 100644 --- a/src/onebot/network/active-http.ts +++ b/src/onebot/network/active-http.ts @@ -50,7 +50,7 @@ export class OB11ActiveHttpAdapter implements IOB11NetworkAdapter { try { this.obContext.apis.QuickActionApi .handleQuickOperation(event as QuickActionEvent, resJson) - .catch(e=>this.logger.logError(e)); + .catch(e => this.logger.logError(e)); } catch (e: any) { this.logger.logError('[OneBot] [Http Client] 新消息事件HTTP上报返回快速操作失败', e); } From 040b5535f3b8613e98244b207d7c7e73b5800787 Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Sat, 30 Nov 2024 06:12:44 +0000 Subject: [PATCH 151/418] release: v4.2.9 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index d506b6e7..9b04b238 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.8", + "version": "4.2.9", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index e3a5a3cf..9bfbc4f6 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.8", + "version": "4.2.9", "scripts": { "build:universal": "npm run build:webui && vite build --mode universal || exit 1", "build:framework": "npm run build:webui && vite build --mode framework || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index ded03b1a..944ed73c 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.8'; +export const napCatVersion = '4.2.9'; From d13db5e8eb5594b70d8094e5fb9143084d8be524 Mon Sep 17 00:00:00 2001 From: bietiaop <1527109126@qq.com> Date: Sun, 1 Dec 2024 09:31:47 +0800 Subject: [PATCH 152/418] =?UTF-8?q?feat:=20=E5=AE=9E=E6=97=B6=E6=97=A5?= =?UTF-8?q?=E5=BF=97=20(#584)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 历史日志 * feat: 实时日志 * fix: EventEmitter实现事件监听 --- src/common/log.ts | 80 +++++++++++++++++++++++++------------ src/webui/src/api/Log.ts | 15 +++++++ src/webui/src/router/Log.ts | 6 ++- 3 files changed, 75 insertions(+), 26 deletions(-) diff --git a/src/common/log.ts b/src/common/log.ts index 60603b58..7b34f46a 100644 --- a/src/common/log.ts +++ b/src/common/log.ts @@ -3,7 +3,7 @@ import { truncateString } from '@/common/helper'; import path from 'node:path'; import fs from 'node:fs'; import { NTMsgAtType, ChatType, ElementType, MessageElement, RawMessage, SelfInfo } from '@/core'; - +import EventEmitter from 'node:events'; export enum LogLevel { DEBUG = 'debug', INFO = 'info', @@ -24,6 +24,36 @@ function getFormattedTimestamp() { return `${year}-${month}-${day}_${hours}-${minutes}-${seconds}.${milliseconds}`; } +const logEmitter = new EventEmitter(); +export type LogListener = (msg: string) => void; +class Subscription { + public static MAX_HISTORY = 100; + public static history: string[] = []; + + subscribe(listener: LogListener) { + for (const history of Subscription.history) { + try { + listener(history); + } catch (_) { + // ignore + } + } + logEmitter.on('log', listener); + } + unsubscribe(listener: LogListener) { + logEmitter.off('log', listener); + } + notify(msg: string) { + logEmitter.emit('log', msg); + if (Subscription.history.length >= Subscription.MAX_HISTORY) { + Subscription.history.shift(); + } + Subscription.history.push(msg); + } +} + +export const logSubscription = new Subscription(); + export class LogWrapper { fileLogEnabled = true; consoleLogEnabled = true; @@ -47,7 +77,7 @@ export class LogWrapper { filename: logPath, level: 'debug', maxsize: 5 * 1024 * 1024, // 5MB - maxFiles: 5 + maxFiles: 5, }), new transports.Console({ format: format.combine( @@ -56,9 +86,9 @@ export class LogWrapper { const userInfo = meta.userInfo ? `${meta.userInfo} | ` : ''; return `${timestamp} [${level}] ${userInfo}${message}`; }) - ) - }) - ] + ), + }), + ], }); this.setLogSelfInfo({ nick: '', uid: '' }); @@ -72,7 +102,7 @@ export class LogWrapper { this.logger.error('Failed to read log directory', err); return; } - files.forEach(file => { + files.forEach((file) => { const filePath = path.join(logDir, file); this.deleteOldLogFile(filePath, oneWeekAgo); }); @@ -86,7 +116,7 @@ export class LogWrapper { return; } if (stats.mtime.getTime() < oneWeekAgo) { - fs.unlink(filePath, err => { + fs.unlink(filePath, (err) => { if (err) { if (err.code === 'ENOENT') { this.logger.warn(`File already deleted: ${filePath}`); @@ -111,7 +141,7 @@ export class LogWrapper { }); } - setLogSelfInfo(selfInfo: { nick: string, uid: string }) { + setLogSelfInfo(selfInfo: { nick: string; uid: string }) { const userInfo = `${selfInfo.nick}`; this.logger.defaultMeta = { userInfo }; } @@ -135,14 +165,16 @@ export class LogWrapper { } formatMsg(msg: any[]) { - return msg.map(msgItem => { - if (msgItem instanceof Error) { - return msgItem.stack; - } else if (typeof msgItem === 'object') { - return JSON.stringify(truncateString(JSON.parse(JSON.stringify(msgItem, null, 2)))); - } - return msgItem; - }).join(' '); + return msg + .map((msgItem) => { + if (msgItem instanceof Error) { + return msgItem.stack; + } else if (typeof msgItem === 'object') { + return JSON.stringify(truncateString(JSON.parse(JSON.stringify(msgItem, null, 2)))); + } + return msgItem; + }) + .join(' '); } _log(level: LogLevel, ...args: any[]) { @@ -155,6 +187,7 @@ export class LogWrapper { // eslint-disable-next-line no-control-regex this.logger.log(level, message.replace(/\x1B[@-_][0-?]*[ -/]*[@-~]/g, '')); } + logSubscription.notify(message); } log(...args: any[]) { @@ -282,13 +315,10 @@ function textElementToText(textElement: any): string { } function replyElementToText(replyElement: any, msg: RawMessage, recursiveLevel: number): string { - const recordMsgOrNull = msg.records.find( - record => replyElement.sourceMsgIdInRecords === record.msgId, - ); - return `[回复消息 ${recordMsgOrNull && - recordMsgOrNull.peerUin != '284840486' && recordMsgOrNull.peerUin != '1094950020' - ? - rawMessageToText(recordMsgOrNull, recursiveLevel + 1) : - `未找到消息记录 (MsgId = ${replyElement.sourceMsgIdInRecords})` + const recordMsgOrNull = msg.records.find((record) => replyElement.sourceMsgIdInRecords === record.msgId); + return `[回复消息 ${ + recordMsgOrNull && recordMsgOrNull.peerUin != '284840486' && recordMsgOrNull.peerUin != '1094950020' + ? rawMessageToText(recordMsgOrNull, recursiveLevel + 1) + : `未找到消息记录 (MsgId = ${replyElement.sourceMsgIdInRecords})` }]`; -} \ No newline at end of file +} diff --git a/src/webui/src/api/Log.ts b/src/webui/src/api/Log.ts index 5b9b8c2b..1684183d 100644 --- a/src/webui/src/api/Log.ts +++ b/src/webui/src/api/Log.ts @@ -1,6 +1,7 @@ import type { RequestHandler } from 'express'; import { sendError, sendSuccess } from '../utils/response'; import { WebUiConfigWrapper } from '../helper/config'; +import { logSubscription } from '@/common/log'; // 日志记录 export const LogHandler: RequestHandler = async (req, res) => { @@ -17,3 +18,17 @@ export const LogListHandler: RequestHandler = async (_, res) => { const logList = WebUiConfigWrapper.GetLogsList(); return sendSuccess(res, logList); }; +// 实时日志(SSE) +export const LogRealTimeHandler: RequestHandler = async (req, res) => { + const listener = (log: string) => { + try { + res.write(log + '\n'); + } catch (error) { + // ignore + } + }; + logSubscription.subscribe(listener); + req.on('close', () => { + logSubscription.unsubscribe(listener); + }); +}; diff --git a/src/webui/src/router/Log.ts b/src/webui/src/router/Log.ts index 46187eeb..b72a2245 100644 --- a/src/webui/src/router/Log.ts +++ b/src/webui/src/router/Log.ts @@ -1,9 +1,13 @@ import { Router } from 'express'; -import { LogHandler, LogListHandler } from '../api/Log'; +import { LogHandler, LogListHandler, LogRealTimeHandler } from '../api/Log'; + const router = Router(); // router:读取日志内容 router.get('/GetLog', LogHandler); // router:读取日志列表 router.get('/GetLogList', LogListHandler); +// router:实时日志 +router.get('/GetLogRealTime', LogRealTimeHandler); + export { router as LogRouter }; From 1bb6dce2390b43453988e3dedc4ff573e1bd6931 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 1 Dec 2024 12:41:51 +0800 Subject: [PATCH 153/418] refactor: type-check (#586) * refactor: type-check * fix: default * refactor: type-check --- package.json | 4 +- src/onebot/action/OneBotAction.ts | 2 +- src/onebot/action/extends/CreateCollection.ts | 18 +++--- src/onebot/action/extends/FetchCustomFace.ts | 18 +++--- src/onebot/action/extends/FetchEmojiLike.ts | 29 ++++----- .../action/extends/FetchUserProfileLike.ts | 14 +++-- src/onebot/action/extends/GetAiCharacters.ts | 18 +++--- .../action/extends/GetCollectionList.ts | 18 +++--- src/onebot/action/extends/GetGroupInfoEx.ts | 15 ++--- src/onebot/action/extends/GetMiniAppArk.ts | 61 +++++++------------ src/onebot/action/extends/GetProfileLike.ts | 26 +++----- src/onebot/action/extends/GetRkey.ts | 3 +- src/onebot/action/extends/GetRobotUinRange.ts | 2 +- src/onebot/action/extends/GetUserStatus.ts | 16 ++--- src/onebot/action/extends/OCRImage.ts | 18 +++--- src/onebot/action/extends/SetGroupSign.ts | 14 ++--- src/onebot/action/extends/SetInputStatus.ts | 16 ++--- src/onebot/action/extends/SetLongNick.ts | 14 ++--- src/onebot/action/extends/SetOnlineStatus.ts | 25 +++----- src/onebot/action/extends/SetQQAvatar.ts | 27 +++----- src/onebot/action/extends/SetSpecialTittle.ts | 19 +++--- src/onebot/action/extends/ShareContact.ts | 36 +++++------ .../action/extends/TranslateEnWordToZn.ts | 17 ++---- src/onebot/action/file/GetFile.ts | 29 +++------ src/onebot/action/file/GetGroupFileUrl.ts | 16 ++--- .../action/go-cqhttp/CreateGroupFileFolder.ts | 16 ++--- .../action/go-cqhttp/DeleteGroupFile.ts | 17 +++--- .../action/go-cqhttp/DeleteGroupFileFolder.ts | 18 +++--- src/onebot/action/go-cqhttp/DownloadFile.ts | 25 +++----- src/onebot/action/go-cqhttp/GetForwardMsg.ts | 19 +++--- .../action/go-cqhttp/GetFriendMsgHistory.ts | 24 +++----- .../action/go-cqhttp/GetGroupAtAllRemain.ts | 15 ++--- .../go-cqhttp/GetGroupFileSystemInfo.ts | 14 ++--- .../action/go-cqhttp/GetGroupFilesByFolder.ts | 23 +++---- .../action/go-cqhttp/GetGroupHonorInfo.ts | 18 +++--- .../action/go-cqhttp/GetGroupMsgHistory.ts | 25 ++++---- .../action/go-cqhttp/GetGroupRootFiles.ts | 19 +++--- .../action/go-cqhttp/GetOnlineClient.ts | 8 --- .../action/go-cqhttp/GetStrangerInfo.ts | 14 ++--- .../go-cqhttp/GoCQHTTPCheckUrlSafely.ts | 15 ++--- .../action/go-cqhttp/GoCQHTTPDeleteFriend.ts | 23 +++---- .../action/go-cqhttp/GoCQHTTPGetModelShow.ts | 14 ++--- .../action/go-cqhttp/GoCQHTTPSetModelShow.ts | 13 +--- .../action/go-cqhttp/SendGroupNotice.ts | 45 ++++++-------- .../action/go-cqhttp/SetGroupPortrait.ts | 27 +++----- src/onebot/action/go-cqhttp/SetQQProfile.ts | 18 +++--- .../action/go-cqhttp/UploadGroupFile.ts | 26 ++++---- .../action/go-cqhttp/UploadPrivateFile.ts | 22 +++---- src/onebot/action/group/DelEssenceMsg.ts | 14 ++--- src/onebot/action/group/DelGroupNotice.ts | 17 ++---- src/onebot/action/group/GetAiRecord.ts | 18 +++--- src/onebot/action/group/GetGroupEssence.ts | 14 ++--- .../action/group/GetGroupIgnoredNotifies.ts | 11 ---- src/onebot/action/group/GetGroupInfo.ts | 14 ++--- src/onebot/action/group/GetGroupList.ts | 15 ++--- src/onebot/action/group/GetGroupMemberInfo.ts | 18 +++--- src/onebot/action/group/GetGroupMemberList.ts | 16 ++--- src/onebot/action/group/GetGroupNotice.ts | 15 ++--- src/onebot/action/group/GetGroupShutList.ts | 14 ++--- src/onebot/action/group/GroupPoke.ts | 18 +++--- src/onebot/action/group/SendGroupAiRecord.ts | 19 +++--- src/onebot/action/group/SetEssenceMsg.ts | 16 ++--- src/onebot/action/group/SetGroupAddRequest.ts | 20 +++--- src/onebot/action/group/SetGroupAdmin.ts | 18 +++--- src/onebot/action/group/SetGroupBan.ts | 18 +++--- src/onebot/action/group/SetGroupCard.ts | 18 +++--- src/onebot/action/group/SetGroupKick.ts | 19 +++--- src/onebot/action/group/SetGroupLeave.ts | 17 +++--- src/onebot/action/group/SetGroupName.ts | 20 +++--- src/onebot/action/group/SetGroupWholeBan.ts | 16 ++--- src/onebot/action/msg/DeleteMsg.ts | 19 ++---- src/onebot/action/msg/ForwardSingleMsg.ts | 18 +++--- src/onebot/action/msg/GetMsg.ts | 15 ++--- src/onebot/action/msg/MarkMsgAsRead.ts | 17 +++--- src/onebot/action/msg/SetMsgEmojiLike.ts | 18 +++--- src/onebot/action/system/GetCredentials.ts | 15 ++--- src/onebot/action/system/GetSystemMsg.ts | 13 +--- src/onebot/action/user/FriendPoke.ts | 14 ++--- src/onebot/action/user/GetCookies.ts | 15 ++--- src/onebot/action/user/GetFriendList.ts | 15 ++--- src/onebot/action/user/GetRecentContact.ts | 16 +++-- src/onebot/action/user/SendLike.ts | 18 +++--- src/onebot/action/user/SetFriendAddRequest.ts | 18 +++--- 83 files changed, 566 insertions(+), 943 deletions(-) diff --git a/package.json b/package.json index 9bfbc4f6..09873c0d 100644 --- a/package.json +++ b/package.json @@ -43,13 +43,13 @@ "file-type": "^19.0.0", "globals": "^15.12.0", "image-size": "^1.1.1", - "json-schema-to-ts": "^3.1.1", "typescript": "^5.3.3", "typescript-eslint": "^8.13.0", "vite": "^6.0.1", "vite-plugin-cp": "^4.0.8", "vite-tsconfig-paths": "^5.1.0", - "winston": "^3.17.0" + "winston": "^3.17.0", + "@sinclair/typebox": "^0.34.9" }, "dependencies": { "express": "^5.0.0", diff --git a/src/onebot/action/OneBotAction.ts b/src/onebot/action/OneBotAction.ts index 967d186a..da453c24 100644 --- a/src/onebot/action/OneBotAction.ts +++ b/src/onebot/action/OneBotAction.ts @@ -42,7 +42,7 @@ export abstract class OneBotAction { protected async check(payload: PayloadType): Promise { if (this.payloadSchema) { - this.validate = new Ajv({ allowUnionTypes: true }).compile(this.payloadSchema); + this.validate = new Ajv({ allowUnionTypes: true, useDefaults: true }).compile(this.payloadSchema); } if (this.validate && !this.validate(payload)) { const errors = this.validate.errors as ErrorObject[]; diff --git a/src/onebot/action/extends/CreateCollection.ts b/src/onebot/action/extends/CreateCollection.ts index 92e1f347..2d902ad0 100644 --- a/src/onebot/action/extends/CreateCollection.ts +++ b/src/onebot/action/extends/CreateCollection.ts @@ -1,17 +1,13 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Type, Static } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - rawData: { type: 'string' }, - brief: { type: 'string' }, - }, - required: ['brief', 'rawData'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + rawData: Type.String(), + brief: Type.String(), +}); -type Payload = FromSchema; +type Payload = Static; export class CreateCollection extends OneBotAction { actionName = ActionName.CreateCollection; @@ -25,4 +21,4 @@ export class CreateCollection extends OneBotAction { payload.brief, payload.rawData, ); } -} +} \ No newline at end of file diff --git a/src/onebot/action/extends/FetchCustomFace.ts b/src/onebot/action/extends/FetchCustomFace.ts index c2d5fa00..9a0cfdc8 100644 --- a/src/onebot/action/extends/FetchCustomFace.ts +++ b/src/onebot/action/extends/FetchCustomFace.ts @@ -1,23 +1,19 @@ -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Type, Static } from '@sinclair/typebox'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -const SchemaData = { - type: 'object', - properties: { - count: { type: ['number', 'string'] }, - }, -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + count: Type.Union([Type.Number(), Type.String()], { default: 48 }), +}); -type Payload = FromSchema; +type Payload = Static; export class FetchCustomFace extends OneBotAction { actionName = ActionName.FetchCustomFace; payloadSchema = SchemaData; async _handle(payload: Payload) { - //48 可能正好是QQ需要的一个页面的数量 Tagged Mlikiowa - const ret = await this.core.apis.MsgApi.fetchFavEmojiList(+(payload.count ?? 48)); + const ret = await this.core.apis.MsgApi.fetchFavEmojiList(+payload.count); return ret.emojiInfoList.map(e => e.url); } -} +} \ No newline at end of file diff --git a/src/onebot/action/extends/FetchEmojiLike.ts b/src/onebot/action/extends/FetchEmojiLike.ts index 19ff33e7..59094576 100644 --- a/src/onebot/action/extends/FetchEmojiLike.ts +++ b/src/onebot/action/extends/FetchEmojiLike.ts @@ -1,32 +1,27 @@ -//getMsgEmojiLikesList -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Type, Static } from '@sinclair/typebox'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { MessageUnique } from '@/common/message-unique'; -const SchemaData = { - type: 'object', - properties: { - user_id: { type: 'string' }, - group_id: { type: 'string' }, - emojiId: { type: 'string' }, - emojiType: { type: 'string' }, - message_id: { type: ['string', 'number'] }, - count: { type: ['string', 'number'] }, - }, - required: ['emojiId', 'emojiType', 'message_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + message_id: Type.Union([Type.Number(), Type.String()]), + emojiId: Type.Union([Type.Number(), Type.String()]), + emojiType: Type.Union([Type.Number(), Type.String()]), + count: Type.Union([Type.Number(), Type.String()], { default: 20 }), +}); -type Payload = FromSchema; +type Payload = Static; export class FetchEmojiLike extends OneBotAction { actionName = ActionName.FetchEmojiLike; payloadSchema = SchemaData; async _handle(payload: Payload) { - const msgIdPeer = MessageUnique.getMsgIdAndPeerByShortId(parseInt(payload.message_id.toString())); + const msgIdPeer = MessageUnique.getMsgIdAndPeerByShortId(+payload.message_id); if (!msgIdPeer) throw new Error('消息不存在'); const msg = (await this.core.apis.MsgApi.getMsgsByMsgId(msgIdPeer.Peer, [msgIdPeer.MsgId])).msgList[0]; - return await this.core.apis.MsgApi.getMsgEmojiLikesList(msgIdPeer.Peer, msg.msgSeq, payload.emojiId, payload.emojiType, +(payload.count ?? 20)); + return await this.core.apis.MsgApi.getMsgEmojiLikesList( + msgIdPeer.Peer, msg.msgSeq, payload.emojiId.toString(), payload.emojiType.toString(), +payload.count + ); } } diff --git a/src/onebot/action/extends/FetchUserProfileLike.ts b/src/onebot/action/extends/FetchUserProfileLike.ts index 13cb8f85..d4a32ace 100644 --- a/src/onebot/action/extends/FetchUserProfileLike.ts +++ b/src/onebot/action/extends/FetchUserProfileLike.ts @@ -1,11 +1,17 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; +import { Type, Static } from '@sinclair/typebox'; -export class FetchUserProfileLike extends OneBotAction<{ qq: number }, any> { +const SchemaData = Type.Object({ + user_id: Type.Union([Type.Number(), Type.String()]), +}); + +type Payload = Static; + +export class FetchUserProfileLike extends OneBotAction { actionName = ActionName.FetchUserProfileLike; - async _handle(payload: { qq: number }) { - if (!payload.qq) throw new Error('qq is required'); - return await this.core.apis.UserApi.getUidByUinV2(payload.qq.toString()); + async _handle(payload: Payload) { + return await this.core.apis.UserApi.getUidByUinV2(payload.user_id.toString()); } } diff --git a/src/onebot/action/extends/GetAiCharacters.ts b/src/onebot/action/extends/GetAiCharacters.ts index 58232bdb..f9df0fbe 100644 --- a/src/onebot/action/extends/GetAiCharacters.ts +++ b/src/onebot/action/extends/GetAiCharacters.ts @@ -1,18 +1,14 @@ import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; import { AIVoiceChatType } from "@/core/packet/entities/aiChat"; +import { Type, Static } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - chat_type: { type: ['number', 'string'] }, - }, - required: ['group_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + chat_type: Type.Union([Type.Union([Type.Number(), Type.String()])], { default: 1 }), +}); -type Payload = FromSchema; +type Payload = Static; interface GetAiCharactersResponse { type: string; @@ -28,7 +24,7 @@ export class GetAiCharacters extends GetPacketStatusDepends ({ type: item.category, characters: item.voices.map((voice) => ({ diff --git a/src/onebot/action/extends/GetCollectionList.ts b/src/onebot/action/extends/GetCollectionList.ts index 280ed1e6..f1a31c16 100644 --- a/src/onebot/action/extends/GetCollectionList.ts +++ b/src/onebot/action/extends/GetCollectionList.ts @@ -1,23 +1,19 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Type, Static } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - category: { type: ['number', 'string'] }, - count: { type: ['number', 'string'] }, - }, - required: ['category', 'count'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + category: Type.Union([Type.Number(), Type.String()]), + count: Type.Union([Type.Union([Type.Number(), Type.String()])], { default: 1 }), +}); -type Payload = FromSchema; +type Payload = Static; export class GetCollectionList extends OneBotAction { actionName = ActionName.GetCollectionList; payloadSchema = SchemaData; async _handle(payload: Payload) { - return await this.core.apis.CollectionApi.getAllCollection(parseInt(payload.category.toString()), +(payload.count ?? 1)); + return await this.core.apis.CollectionApi.getAllCollection(parseInt(payload.category.toString()), +payload.count); } } diff --git a/src/onebot/action/extends/GetGroupInfoEx.ts b/src/onebot/action/extends/GetGroupInfoEx.ts index 582a8cec..54b2a65f 100644 --- a/src/onebot/action/extends/GetGroupInfoEx.ts +++ b/src/onebot/action/extends/GetGroupInfoEx.ts @@ -1,16 +1,11 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Type, Static } from '@sinclair/typebox'; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), +}); -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - }, - required: ['group_id'], -} as const satisfies JSONSchema; - -type Payload = FromSchema; +type Payload = Static; export class GetGroupInfoEx extends OneBotAction { actionName = ActionName.GetGroupInfoEx; diff --git a/src/onebot/action/extends/GetMiniAppArk.ts b/src/onebot/action/extends/GetMiniAppArk.ts index d6cd52e7..47786b83 100644 --- a/src/onebot/action/extends/GetMiniAppArk.ts +++ b/src/onebot/action/extends/GetMiniAppArk.ts @@ -1,47 +1,29 @@ import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; import { MiniAppInfo, MiniAppInfoHelper } from "@/core/packet/utils/helper/miniAppHelper"; import { MiniAppData, MiniAppRawData, MiniAppReqCustomParams, MiniAppReqParams } from "@/core/packet/entities/miniApp"; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - type: { - type: 'string', - enum: ['bili', 'weibo'] - }, - title: { type: 'string' }, - desc: { type: 'string' }, - picUrl: { type: 'string' }, - jumpUrl: { type: 'string' }, - iconUrl: { type: 'string' }, - sdkId: { type: 'string' }, - appId: { type: 'string' }, - scene: { type: ['number', 'string'] }, - templateType: { type: ['number', 'string'] }, - businessType: { type: ['number', 'string'] }, - verType: { type: ['number', 'string'] }, - shareType: { type: ['number', 'string'] }, - versionId: { type: 'string' }, - withShareTicket: { type: ['number', 'string'] }, - rawArkData: { type: ['boolean', 'string'] } - }, - oneOf: [ - { - required: ['type', 'title', 'desc', 'picUrl', 'jumpUrl'] - }, - { - required: [ - 'title', 'desc', 'picUrl', 'jumpUrl', - 'iconUrl', 'appId', 'scene', 'templateType', 'businessType', - 'verType', 'shareType', 'versionId', 'withShareTicket' - ] - } - ] -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + type: Type.Optional(Type.Union([Type.Literal('bili'), Type.Literal('weibo')])), + title: Type.String(), + desc: Type.String(), + picUrl: Type.String(), + jumpUrl: Type.String(), + iconUrl: Type.Optional(Type.String()), + sdkId: Type.Optional(Type.String()), + appId: Type.Optional(Type.String()), + scene: Type.Optional(Type.Union([Type.Number(), Type.String()])), + templateType: Type.Optional(Type.Union([Type.Number(), Type.String()])), + businessType: Type.Optional(Type.Union([Type.Number(), Type.String()])), + verType: Type.Optional(Type.Union([Type.Number(), Type.String()])), + shareType: Type.Optional(Type.Union([Type.Number(), Type.String()])), + versionId: Type.Optional(Type.String()), + withShareTicket: Type.Optional(Type.Union([Type.Number(), Type.String()])), + rawArkData: Type.Optional(Type.Union([Type.Boolean(), Type.String()])) +}); -type Payload = FromSchema; +type Payload = Static; export class GetMiniAppArk extends GetPacketStatusDepends; +type Payload = Static; export class GetProfileLike extends OneBotAction { actionName = ActionName.GetProfileLike; payloadSchema = SchemaData; async _handle(payload: Payload) { - const start = payload.start ? Number(payload.start) : 0; - const count = payload.count ? Number(payload.count) : 10; - const type = payload.count ? Number(payload.count) : 2; const user_uid = this.core.selfInfo.uin === payload.user_id || !payload.user_id ? this.core.selfInfo.uid : await this.core.apis.UserApi.getUidByUinV2(payload.user_id.toString()); - const ret = await this.core.apis.UserApi.getProfileLike(user_uid ?? this.core.selfInfo.uid, start, count, type); + const ret = await this.core.apis.UserApi.getProfileLike(user_uid ?? this.core.selfInfo.uid, +payload.start, +payload.count, +payload.type); const listdata = ret.info.userLikeInfos[0].voteInfo.userInfos; for (const item of listdata) { - item.uin = parseInt((await this.core.apis.UserApi.getUinByUidV2(item.uid)) || ''); + item.uin = +((await this.core.apis.UserApi.getUinByUidV2(item.uid)) ?? ''); } return ret.info.userLikeInfos[0].voteInfo; } diff --git a/src/onebot/action/extends/GetRkey.ts b/src/onebot/action/extends/GetRkey.ts index 87b24c53..aa38c6d0 100644 --- a/src/onebot/action/extends/GetRkey.ts +++ b/src/onebot/action/extends/GetRkey.ts @@ -1,8 +1,7 @@ import { ActionName } from '@/onebot/action/router'; import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; - -export class GetRkey extends GetPacketStatusDepends> { +export class GetRkey extends GetPacketStatusDepends> { actionName = ActionName.GetRkey; async _handle() { diff --git a/src/onebot/action/extends/GetRobotUinRange.ts b/src/onebot/action/extends/GetRobotUinRange.ts index ba414cfc..734cc456 100644 --- a/src/onebot/action/extends/GetRobotUinRange.ts +++ b/src/onebot/action/extends/GetRobotUinRange.ts @@ -4,7 +4,7 @@ import { ActionName } from '@/onebot/action/router'; export class GetRobotUinRange extends OneBotAction> { actionName = ActionName.GetRobotUinRange; - async _handle(payload: void) { + async _handle() { return await this.core.apis.UserApi.getRobotUinRange(); } } diff --git a/src/onebot/action/extends/GetUserStatus.ts b/src/onebot/action/extends/GetUserStatus.ts index 40bdc714..56c36b7f 100644 --- a/src/onebot/action/extends/GetUserStatus.ts +++ b/src/onebot/action/extends/GetUserStatus.ts @@ -1,16 +1,12 @@ import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; -// no_cache get时传字符串 -const SchemaData = { - type: 'object', - properties: { - user_id: { type: ['number', 'string'] }, - }, - required: ['user_id'], -} as const satisfies JSONSchema; +import { Static, Type } from '@sinclair/typebox'; -type Payload = FromSchema; +const SchemaData = Type.Object({ + user_id: Type.Union([Type.Number(), Type.String()]), +}); + +type Payload = Static; export class GetUserStatus extends GetPacketStatusDepends { actionName = ActionName.GetUserStatus; diff --git a/src/onebot/action/extends/OCRImage.ts b/src/onebot/action/extends/OCRImage.ts index e3e1e0e3..7f79eab4 100644 --- a/src/onebot/action/extends/OCRImage.ts +++ b/src/onebot/action/extends/OCRImage.ts @@ -1,18 +1,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { checkFileExist, uri2local } from '@/common/file'; import fs from 'fs'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - image: { type: 'string' }, - }, - required: ['image'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + image: Type.String(), +}); -type Payload = FromSchema; +type Payload = Static; export class OCRImage extends OneBotAction { actionName = ActionName.OCRImage; @@ -29,12 +25,12 @@ export class OCRImage extends OneBotAction { fs.unlink(path, () => { }); if (!ret) { - throw new Error(`OCR ${payload.file}失败`); + throw new Error(`OCR ${payload.image}失败`); } return ret.result; } fs.unlink(path, () => { }); - throw new Error(`OCR ${payload.file}失败,文件可能不存在`); + throw new Error(`OCR ${payload.image}失败,文件可能不存在`); } } diff --git a/src/onebot/action/extends/SetGroupSign.ts b/src/onebot/action/extends/SetGroupSign.ts index bea15daf..e0a193a2 100644 --- a/src/onebot/action/extends/SetGroupSign.ts +++ b/src/onebot/action/extends/SetGroupSign.ts @@ -1,16 +1,12 @@ import { GetPacketStatusDepends } from '@/onebot/action/packet/GetPacketStatus'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['string', 'number'] }, - }, - required: ['group_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), +}); -type Payload = FromSchema; +type Payload = Static; export class SetGroupSign extends GetPacketStatusDepends { actionName = ActionName.SetGroupSign; diff --git a/src/onebot/action/extends/SetInputStatus.ts b/src/onebot/action/extends/SetInputStatus.ts index f59fbf3c..174b6cb6 100644 --- a/src/onebot/action/extends/SetInputStatus.ts +++ b/src/onebot/action/extends/SetInputStatus.ts @@ -1,18 +1,14 @@ -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { ChatType } from '@/core'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - event_type: { type: 'number' }, - user_id: { type: ['number', 'string'] }, - }, - required: ['event_type', 'user_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + user_id: Type.Union([Type.Number(), Type.String()]), + event_type: Type.Number(), +}); -type Payload = FromSchema; +type Payload = Static; export class SetInputStatus extends OneBotAction { actionName = ActionName.SetInputStatus; diff --git a/src/onebot/action/extends/SetLongNick.ts b/src/onebot/action/extends/SetLongNick.ts index 89de1d2d..e57df3a3 100644 --- a/src/onebot/action/extends/SetLongNick.ts +++ b/src/onebot/action/extends/SetLongNick.ts @@ -1,16 +1,12 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - longNick: { type: 'string' }, - }, - required: ['longNick'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + longNick: Type.String(), +}); -type Payload = FromSchema; +type Payload = Static; export class SetLongNick extends OneBotAction { actionName = ActionName.SetLongNick; diff --git a/src/onebot/action/extends/SetOnlineStatus.ts b/src/onebot/action/extends/SetOnlineStatus.ts index 8adab108..8ce7a80d 100644 --- a/src/onebot/action/extends/SetOnlineStatus.ts +++ b/src/onebot/action/extends/SetOnlineStatus.ts @@ -1,19 +1,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -// 设置在线状态 +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - status: { type: ['number', 'string'] }, - ext_status: { type: ['number', 'string'] }, - battery_status: { type: ['number', 'string'] }, - }, - required: ['status', 'ext_status', 'battery_status'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + status: Type.Union([Type.Number(), Type.String()]), + ext_status: Type.Union([Type.Number(), Type.String()]), + battery_status: Type.Union([Type.Number(), Type.String()]), +}); -type Payload = FromSchema; +type Payload = Static; export class SetOnlineStatus extends OneBotAction { actionName = ActionName.SetOnlineStatus; @@ -21,9 +16,9 @@ export class SetOnlineStatus extends OneBotAction { async _handle(payload: Payload) { const ret = await this.core.apis.UserApi.setSelfOnlineStatus( - parseInt(payload.status.toString()), - parseInt(payload.ext_status.toString()), - parseInt(payload.battery_status.toString()), + +payload.status, + +payload.ext_status, + +payload.battery_status, ); if (ret.result !== 0) { throw new Error('设置在线状态失败'); diff --git a/src/onebot/action/extends/SetQQAvatar.ts b/src/onebot/action/extends/SetQQAvatar.ts index feac7670..3f96a91c 100644 --- a/src/onebot/action/extends/SetQQAvatar.ts +++ b/src/onebot/action/extends/SetQQAvatar.ts @@ -1,28 +1,18 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName, BaseCheckResult } from '@/onebot/action/router'; +import { ActionName } from '@/onebot/action/router'; import * as fs from 'node:fs'; import { checkFileExist, uri2local } from '@/common/file'; +import { Static, Type } from '@sinclair/typebox'; -interface Payload { - file: string; -} +const SchemaData = Type.Object({ + file: Type.String(), +}); + +type Payload = Static; export default class SetAvatar extends OneBotAction { actionName = ActionName.SetQQAvatar; - - // 用不着复杂检测 - protected async check(payload: Payload): Promise { - if (!payload.file || typeof payload.file != 'string') { - return { - valid: false, - message: 'file字段不能为空或者类型错误', - }; - } - return { - valid: true, - }; - } - + payloadSchema = SchemaData; async _handle(payload: Payload): Promise { const { path, success } = (await uri2local(this.core.NapCatTempPath, payload.file)); if (!success) { @@ -45,7 +35,6 @@ export default class SetAvatar extends OneBotAction { } } else { fs.unlink(path, () => { }); - throw new Error(`头像${payload.file}设置失败,无法获取头像,文件可能不存在`); } return null; diff --git a/src/onebot/action/extends/SetSpecialTittle.ts b/src/onebot/action/extends/SetSpecialTittle.ts index a0adba03..5c862e57 100644 --- a/src/onebot/action/extends/SetSpecialTittle.ts +++ b/src/onebot/action/extends/SetSpecialTittle.ts @@ -1,17 +1,14 @@ import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - user_id: { type: ['number', 'string'] }, - special_title: { type: 'string' }, - }, - required: ['group_id', 'user_id', 'special_title'], -} as const satisfies JSONSchema; +import { Static, Type } from '@sinclair/typebox'; -type Payload = FromSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + user_id: Type.Union([Type.Number(), Type.String()]), + special_title: Type.String(), +}); + +type Payload = Static; export class SetSpecialTittle extends GetPacketStatusDepends { actionName = ActionName.SetSpecialTittle; diff --git a/src/onebot/action/extends/ShareContact.ts b/src/onebot/action/extends/ShareContact.ts index fe1b6a84..595d1a3e 100644 --- a/src/onebot/action/extends/ShareContact.ts +++ b/src/onebot/action/extends/ShareContact.ts @@ -1,18 +1,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - user_id: { type: 'string' }, - group_id: { type: 'string' }, - phoneNumber: { type: 'string' }, - }, -} as const satisfies JSONSchema; - -type Payload = FromSchema; +const SchemaData = Type.Object({ + user_id: Type.Optional(Type.Union([Type.Number(), Type.String()])), + group_id: Type.Optional(Type.Union([Type.Number(), Type.String()])), + phoneNumber: Type.String({ default: '' }), +}); +type Payload = Static; export class SharePeer extends OneBotAction { actionName = ActionName.SharePeer; @@ -20,28 +16,24 @@ export class SharePeer extends OneBotAction { async _handle(payload: Payload) { if (payload.group_id) { - return await this.core.apis.GroupApi.getGroupRecommendContactArkJson(payload.group_id); + return await this.core.apis.GroupApi.getGroupRecommendContactArkJson(payload.group_id.toString()); } else if (payload.user_id) { - return await this.core.apis.UserApi.getBuddyRecommendContactArkJson(payload.user_id, payload.phoneNumber || ''); + return await this.core.apis.UserApi.getBuddyRecommendContactArkJson(payload.user_id.toString(), payload.phoneNumber); } } } -const SchemaDataGroupEx = { - type: 'object', - properties: { - group_id: { type: 'string' }, - }, - required: ['group_id'], -} as const satisfies JSONSchema; +const SchemaDataGroupEx = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), +}); -type PayloadGroupEx = FromSchema; +type PayloadGroupEx = Static; export class ShareGroupEx extends OneBotAction { actionName = ActionName.ShareGroupEx; payloadSchema = SchemaDataGroupEx; async _handle(payload: PayloadGroupEx) { - return await this.core.apis.GroupApi.getArkJsonGroupShare(payload.group_id); + return await this.core.apis.GroupApi.getArkJsonGroupShare(payload.group_id.toString()); } } diff --git a/src/onebot/action/extends/TranslateEnWordToZn.ts b/src/onebot/action/extends/TranslateEnWordToZn.ts index d47dfb8c..0f1ade3d 100644 --- a/src/onebot/action/extends/TranslateEnWordToZn.ts +++ b/src/onebot/action/extends/TranslateEnWordToZn.ts @@ -1,19 +1,12 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - words: { - type: 'array', - items: { type: 'string' }, - }, - }, - required: ['words'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + words: Type.Array(Type.String()), +}); -type Payload = FromSchema; +type Payload = Static; export class TranslateEnWordToZn extends OneBotAction | null> { actionName = ActionName.TranslateEnWordToZn; diff --git a/src/onebot/action/file/GetFile.ts b/src/onebot/action/file/GetFile.ts index d01ca004..04083605 100644 --- a/src/onebot/action/file/GetFile.ts +++ b/src/onebot/action/file/GetFile.ts @@ -2,12 +2,8 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import fs from 'fs/promises'; import { FileNapCatOneBotUUID } from '@/common/helper'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OB11MessageImage, OB11MessageVideo } from '@/onebot/types'; - -// interface GetFilePayload { -// file: string; // 文件名或者fileUuid -// } +import { Static, Type } from '@sinclair/typebox'; export interface GetFileResponse { file?: string; // path @@ -16,19 +12,14 @@ export interface GetFileResponse { file_name?: string; base64?: string; } -const GetFileBase_PayloadSchema = { - type: 'object', - properties: { - file: { type: 'string' }, - file_id: { type: 'string' } - }, - oneOf: [ - { required: ['file'] }, - { required: ['file_id'] } - ] -} as const satisfies JSONSchema; -export type GetFilePayload = FromSchema; +const GetFileBase_PayloadSchema = Type.Object({ + file: Type.Optional(Type.String()), + file_id: Type.Optional(Type.String()) +}); + + +export type GetFilePayload = Static; export class GetFileBase extends OneBotAction { payloadSchema = GetFileBase_PayloadSchema; @@ -50,12 +41,12 @@ export class GetFileBase extends OneBotAction { let url = ''; if (mixElement?.picElement && rawMessage) { const tempData = - await this.obContext.apis.MsgApi.rawToOb11Converters.picElement?.(mixElement?.picElement, rawMessage, mixElement) as OB11MessageImage | undefined; + await this.obContext.apis.MsgApi.rawToOb11Converters.picElement?.(mixElement?.picElement, rawMessage, mixElement, { parseMultMsg: false }) as OB11MessageImage | undefined; url = tempData?.data.url ?? ''; } if (mixElement?.videoElement && rawMessage) { const tempData = - await this.obContext.apis.MsgApi.rawToOb11Converters.videoElement?.(mixElement?.videoElement, rawMessage, mixElement) as OB11MessageVideo | undefined; + await this.obContext.apis.MsgApi.rawToOb11Converters.videoElement?.(mixElement?.videoElement, rawMessage, mixElement, { parseMultMsg: false }) as OB11MessageVideo | undefined; url = tempData?.data.url ?? ''; } const res: GetFileResponse = { diff --git a/src/onebot/action/file/GetGroupFileUrl.ts b/src/onebot/action/file/GetGroupFileUrl.ts index a238a9f7..ae3f5687 100644 --- a/src/onebot/action/file/GetGroupFileUrl.ts +++ b/src/onebot/action/file/GetGroupFileUrl.ts @@ -1,18 +1,14 @@ import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { FileNapCatOneBotUUID } from "@/common/helper"; import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - file_id: { type: ['string'] }, - }, - required: ['group_id', 'file_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + file_id: Type.String(), +}); -type Payload = FromSchema; +type Payload = Static; interface GetGroupFileUrlResponse { url?: string; diff --git a/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts b/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts index 381ef128..01af44c6 100644 --- a/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts +++ b/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts @@ -1,17 +1,13 @@ -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['string', 'number'] }, - folder_name: { type: 'string' }, - }, - required: ['group_id', 'folder_name'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + folder_name: Type.String(), +}); -type Payload = FromSchema; +type Payload = Static; export class CreateGroupFileFolder extends OneBotAction { actionName = ActionName.GoCQHTTP_CreateGroupFileFolder; diff --git a/src/onebot/action/go-cqhttp/DeleteGroupFile.ts b/src/onebot/action/go-cqhttp/DeleteGroupFile.ts index 88f7e0b9..244a5368 100644 --- a/src/onebot/action/go-cqhttp/DeleteGroupFile.ts +++ b/src/onebot/action/go-cqhttp/DeleteGroupFile.ts @@ -1,18 +1,15 @@ -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; + import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { FileNapCatOneBotUUID } from '@/common/helper'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['string', 'number'] }, - file_id: { type: 'string' }, - }, - required: ['group_id', 'file_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + file_id: Type.String(), +}); -type Payload = FromSchema; +type Payload = Static; export class DeleteGroupFile extends OneBotAction { actionName = ActionName.GOCQHTTP_DeleteGroupFile; diff --git a/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts b/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts index 1201d44d..c6e20df9 100644 --- a/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts +++ b/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts @@ -1,18 +1,14 @@ -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { ActionName } from '@/onebot/action/router'; import { OneBotAction } from '@/onebot/action/OneBotAction'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['string', 'number'] }, - folder_id: { type: 'string' }, - folder: { type: 'string' } - }, - required: ['group_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + folder_id: Type.Optional(Type.String()), + folder: Type.Optional(Type.String()), +}); -type Payload = FromSchema; +type Payload = Static; export class DeleteGroupFileFolder extends OneBotAction { actionName = ActionName.GoCQHTTP_DeleteGroupFileFolder; diff --git a/src/onebot/action/go-cqhttp/DownloadFile.ts b/src/onebot/action/go-cqhttp/DownloadFile.ts index 868908dc..82509e5a 100644 --- a/src/onebot/action/go-cqhttp/DownloadFile.ts +++ b/src/onebot/action/go-cqhttp/DownloadFile.ts @@ -4,29 +4,20 @@ import fs from 'fs'; import { join as joinPath } from 'node:path'; import { calculateFileMD5, httpDownload } from '@/common/file'; import { randomUUID } from 'crypto'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; interface FileResponse { file: string; } -const SchemaData = { - type: 'object', - properties: { - thread_count: { type: ['number', 'string'] }, - url: { type: 'string' }, - base64: { type: 'string' }, - name: { type: 'string' }, - headers: { - type: ['string', 'array'], - items: { - type: 'string', - }, - }, - }, -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + url: Type.Optional(Type.String()), + base64: Type.Optional(Type.String()), + name: Type.Optional(Type.String()), + headers: Type.Optional(Type.Union([Type.String(), Type.Array(Type.String())])), +}); -type Payload = FromSchema; +type Payload = Static; export default class GoCQHTTPDownloadFile extends OneBotAction { actionName = ActionName.GoCQHTTP_DownloadFile; diff --git a/src/onebot/action/go-cqhttp/GetForwardMsg.ts b/src/onebot/action/go-cqhttp/GetForwardMsg.ts index 4e902c04..6d7923c9 100644 --- a/src/onebot/action/go-cqhttp/GetForwardMsg.ts +++ b/src/onebot/action/go-cqhttp/GetForwardMsg.ts @@ -1,20 +1,15 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { OB11Message, OB11MessageData, OB11MessageDataType, OB11MessageForward, OB11MessageNodePlain as OB11MessageNode } from '@/onebot'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; +import { Static, Type } from '@sinclair/typebox'; +const SchemaData = Type.Object({ + message_id: Type.Union([Type.Number(), Type.String()]), + id: Type.Union([Type.Number(), Type.String()]), +}); - -const SchemaData = { - type: 'object', - properties: { - message_id: { type: 'string' }, - id: { type: 'string' }, - }, -} as const satisfies JSONSchema; - -type Payload = FromSchema; +type Payload = Static; export class GoCQHTTPGetForwardMsgAction extends OneBotAction { actionName = ActionName.GoCQHTTP_GetForwardMsg; @@ -60,7 +55,7 @@ export class GoCQHTTPGetForwardMsgAction extends OneBotAction { throw new Error('message_id is required'); } - const rootMsgId = MessageUnique.getShortIdByMsgId(msgId); + const rootMsgId = MessageUnique.getShortIdByMsgId(msgId.toString()); const rootMsg = MessageUnique.getMsgIdAndPeerByShortId(rootMsgId ?? +msgId); if (!rootMsg) { throw new Error('msg not found'); diff --git a/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts b/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts index 302f58b8..c8106e6b 100644 --- a/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts +++ b/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts @@ -2,26 +2,22 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { OB11Message } from '@/onebot'; import { ActionName } from '@/onebot/action/router'; import { ChatType } from '@/core/types'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; import { AdapterConfigWrap } from '@/onebot/config/config'; +import { Static, Type } from '@sinclair/typebox'; interface Response { messages: OB11Message[]; } +const SchemaData = Type.Object({ + user_id: Type.Union([Type.Number(), Type.String()]), + message_seq: Type.Optional(Type.Union([Type.Number(), Type.String()])), + count: Type.Union([Type.Number(), Type.String()], { default: 20 }), + reverseOrder: Type.Optional(Type.Union([Type.Boolean(), Type.String()])) +}); -const SchemaData = { - type: 'object', - properties: { - user_id: { type: ['number', 'string'] }, - message_seq: { type: ['number', 'string'] }, - count: { type: ['number', 'string'] }, - reverseOrder: { type: ['boolean', 'string'] }, - }, - required: ['user_id'], -} as const satisfies JSONSchema; -type Payload = FromSchema; +type Payload = Static; export default class GetFriendMsgHistory extends OneBotAction { actionName = ActionName.GetFriendMsgHistory; @@ -30,7 +26,7 @@ export default class GetFriendMsgHistory extends OneBotAction async _handle(payload: Payload, adapter: string): Promise { //处理参数 const uid = await this.core.apis.UserApi.getUidByUinV2(payload.user_id.toString()); - const MsgCount = +(payload.count ?? 20); + const isReverseOrder = typeof payload.reverseOrder === 'string' ? payload.reverseOrder === 'true' : !!payload.reverseOrder; if (!uid) throw new Error(`记录${payload.user_id}不存在`); const friend = await this.core.apis.FriendApi.isBuddy(uid); @@ -38,7 +34,7 @@ export default class GetFriendMsgHistory extends OneBotAction const hasMessageSeq = !payload.message_seq ? !!payload.message_seq : !(payload.message_seq?.toString() === '' || payload.message_seq?.toString() === '0'); const startMsgId = hasMessageSeq ? (MessageUnique.getMsgIdAndPeerByShortId(+payload.message_seq!)?.MsgId ?? payload.message_seq!.toString()) : '0'; const msgList = hasMessageSeq ? - (await this.core.apis.MsgApi.getMsgHistory(peer, startMsgId, MsgCount)).msgList : (await this.core.apis.MsgApi.getAioFirstViewLatestMsgs(peer, MsgCount)).msgList; + (await this.core.apis.MsgApi.getMsgHistory(peer, startMsgId, +payload.count)).msgList : (await this.core.apis.MsgApi.getAioFirstViewLatestMsgs(peer, +payload.count)).msgList; if (msgList.length === 0) throw new Error(`消息${payload.message_seq}不存在`); //翻转消息 if (isReverseOrder) msgList.reverse(); diff --git a/src/onebot/action/go-cqhttp/GetGroupAtAllRemain.ts b/src/onebot/action/go-cqhttp/GetGroupAtAllRemain.ts index dc466284..64c4c10c 100644 --- a/src/onebot/action/go-cqhttp/GetGroupAtAllRemain.ts +++ b/src/onebot/action/go-cqhttp/GetGroupAtAllRemain.ts @@ -1,15 +1,12 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] } - }, - required: ['group_id'], -} as const satisfies JSONSchema; -type Payload = FromSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]) +}); + +type Payload = Static; export class GoCQHTTPGetGroupAtAllRemain extends OneBotAction { actionName = ActionName.GoCQHTTP_GetGroupAtAllRemain; diff --git a/src/onebot/action/go-cqhttp/GetGroupFileSystemInfo.ts b/src/onebot/action/go-cqhttp/GetGroupFileSystemInfo.ts index 4139137e..6fe9fe9b 100644 --- a/src/onebot/action/go-cqhttp/GetGroupFileSystemInfo.ts +++ b/src/onebot/action/go-cqhttp/GetGroupFileSystemInfo.ts @@ -1,16 +1,12 @@ -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['string', 'number'] }, - }, - required: ['group_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]) +}); -type Payload = FromSchema; +type Payload = Static; export class GetGroupFileSystemInfo extends OneBotAction; +type Payload = Static; export class GetGroupFilesByFolder extends OneBotAction { actionName = ActionName.GoCQHTTP_GetGroupFilesByFolder; @@ -23,7 +20,7 @@ export class GetGroupFilesByFolder extends OneBotAction { const ret = await this.core.apis.MsgApi.getGroupFileList(payload.group_id.toString(), { sortType: 1, - fileCount: +(payload.file_count ?? 50), + fileCount: +payload.file_count, startIndex: 0, sortOrder: 2, showOnlinedocFolder: 0, diff --git a/src/onebot/action/go-cqhttp/GetGroupHonorInfo.ts b/src/onebot/action/go-cqhttp/GetGroupHonorInfo.ts index 0dd9b8ff..6782228e 100644 --- a/src/onebot/action/go-cqhttp/GetGroupHonorInfo.ts +++ b/src/onebot/action/go-cqhttp/GetGroupHonorInfo.ts @@ -1,18 +1,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { WebHonorType } from '@/core/types'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - type: { enum: [WebHonorType.ALL, WebHonorType.EMOTION, WebHonorType.LEGEND, WebHonorType.PERFORMER, WebHonorType.STRONG_NEWBIE, WebHonorType.TALKATIVE] }, - }, - required: ['group_id'], -} as const satisfies JSONSchema; -// enum是不是有点抽象 -type Payload = FromSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + type: Type.Optional(Type.Enum(WebHonorType)) +}); + +type Payload = Static; export class GetGroupHonorInfo extends OneBotAction> { actionName = ActionName.GetGroupHonorInfo; diff --git a/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts b/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts index b8958605..7c0d6f30 100644 --- a/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts +++ b/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts @@ -2,26 +2,24 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { OB11Message } from '@/onebot'; import { ActionName } from '@/onebot/action/router'; import { ChatType, Peer } from '@/core/types'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; import { AdapterConfigWrap } from '@/onebot/config/config'; +import { Static, Type } from '@sinclair/typebox'; interface Response { messages: OB11Message[]; } -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - message_seq: { type: ['number', 'string'] }, - count: { type: ['number', 'string'] }, - reverseOrder: { type: ['boolean', 'string'] }, - }, - required: ['group_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + message_seq: Type.Optional(Type.Union([Type.Number(), Type.String()])), + count: Type.Union([Type.Number(), Type.String()], { default: 20 }), + reverseOrder: Type.Optional(Type.Union([Type.Boolean(), Type.String()])) +}); + + +type Payload = Static; -type Payload = FromSchema; export default class GoCQHTTPGetGroupMsgHistory extends OneBotAction { actionName = ActionName.GoCQHTTP_GetGroupMsgHistory; @@ -30,13 +28,12 @@ export default class GoCQHTTPGetGroupMsgHistory extends OneBotAction { //处理参数 const isReverseOrder = typeof payload.reverseOrder === 'string' ? payload.reverseOrder === 'true' : !!payload.reverseOrder; - const MsgCount = +(payload.count ?? 20); const peer: Peer = { chatType: ChatType.KCHATTYPEGROUP, peerUid: payload.group_id.toString() }; const hasMessageSeq = !payload.message_seq ? !!payload.message_seq : !(payload.message_seq?.toString() === '' || payload.message_seq?.toString() === '0'); //拉取消息 const startMsgId = hasMessageSeq ? (MessageUnique.getMsgIdAndPeerByShortId(+payload.message_seq!)?.MsgId ?? payload.message_seq!.toString()) : '0'; const msgList = hasMessageSeq ? - (await this.core.apis.MsgApi.getMsgHistory(peer, startMsgId, MsgCount)).msgList : (await this.core.apis.MsgApi.getAioFirstViewLatestMsgs(peer, MsgCount)).msgList; + (await this.core.apis.MsgApi.getMsgHistory(peer, startMsgId, +payload.count)).msgList : (await this.core.apis.MsgApi.getAioFirstViewLatestMsgs(peer, +payload.count)).msgList; if (msgList.length === 0) throw new Error(`消息${payload.message_seq}不存在`); //翻转消息 if (isReverseOrder) msgList.reverse(); diff --git a/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts b/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts index 948ec1e4..217e7956 100644 --- a/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts +++ b/src/onebot/action/go-cqhttp/GetGroupRootFiles.ts @@ -1,19 +1,16 @@ -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; + import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { OB11GroupFile, OB11GroupFileFolder } from '@/onebot'; import { OB11Construct } from '@/onebot/helper/data'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['string', 'number'] }, - file_count: { type: ['string', 'number'] }, - }, - required: ['group_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + file_count: Type.Union([Type.Number(), Type.String()], { default: 50 }), +}); -type Payload = FromSchema; +type Payload = Static; export class GetGroupRootFiles extends OneBotAction> { actionName = ActionName.GetOnlineClient; diff --git a/src/onebot/action/go-cqhttp/GetStrangerInfo.ts b/src/onebot/action/go-cqhttp/GetStrangerInfo.ts index 19fe5fc2..6cb1b63b 100644 --- a/src/onebot/action/go-cqhttp/GetStrangerInfo.ts +++ b/src/onebot/action/go-cqhttp/GetStrangerInfo.ts @@ -2,18 +2,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { OB11User, OB11UserSex } from '@/onebot'; import { OB11Construct } from '@/onebot/helper/data'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { calcQQLevel } from '@/common/helper'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - user_id: { type: ['number', 'string'] }, - }, - required: ['user_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + user_id: Type.Union([Type.Number(), Type.String()]), +}); -type Payload = FromSchema; +type Payload = Static; export default class GoCQHTTPGetStrangerInfo extends OneBotAction { actionName = ActionName.GoCQHTTP_GetStrangerInfo; diff --git a/src/onebot/action/go-cqhttp/GoCQHTTPCheckUrlSafely.ts b/src/onebot/action/go-cqhttp/GoCQHTTPCheckUrlSafely.ts index 1f6c7d7d..76b03d9e 100644 --- a/src/onebot/action/go-cqhttp/GoCQHTTPCheckUrlSafely.ts +++ b/src/onebot/action/go-cqhttp/GoCQHTTPCheckUrlSafely.ts @@ -1,15 +1,12 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - url: { type: 'string' }, - }, - required: ['url'], -} as const satisfies JSONSchema; -type Payload = FromSchema; +const SchemaData = Type.Object({ + url: Type.String(), +}); + +type Payload = Static; export class GoCQHTTPCheckUrlSafely extends OneBotAction { actionName = ActionName.GoCQHTTP_CheckUrlSafely; diff --git a/src/onebot/action/go-cqhttp/GoCQHTTPDeleteFriend.ts b/src/onebot/action/go-cqhttp/GoCQHTTPDeleteFriend.ts index 849535dc..c67d283b 100644 --- a/src/onebot/action/go-cqhttp/GoCQHTTPDeleteFriend.ts +++ b/src/onebot/action/go-cqhttp/GoCQHTTPDeleteFriend.ts @@ -1,22 +1,15 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - friend_id: { type: ['string', 'number'] }, - user_id: { type: ['string', 'number'] }, - temp_block: { type: 'boolean' }, - temp_both_del: { type: 'boolean' }, - }, - oneOf: [ - { required: ['friend_id'] }, - { required: ['user_id'] }, - ], +const SchemaData = Type.Object({ + friend_id: Type.Optional(Type.Union([Type.String(), Type.Number()])), + user_id: Type.Optional(Type.Union([Type.String(), Type.Number()])), + temp_block: Type.Optional(Type.Boolean()), + temp_both_del: Type.Optional(Type.Boolean()), +}); -} as const satisfies JSONSchema; -type Payload = FromSchema; +type Payload = Static; export class GoCQHTTPDeleteFriend extends OneBotAction { actionName = ActionName.GoCQHTTP_DeleteFriend; diff --git a/src/onebot/action/go-cqhttp/GoCQHTTPGetModelShow.ts b/src/onebot/action/go-cqhttp/GoCQHTTPGetModelShow.ts index 811e3d62..2e61f13d 100644 --- a/src/onebot/action/go-cqhttp/GoCQHTTPGetModelShow.ts +++ b/src/onebot/action/go-cqhttp/GoCQHTTPGetModelShow.ts @@ -1,14 +1,12 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - model: { type: 'string' }, - } -} as const satisfies JSONSchema; -type Payload = FromSchema; +const SchemaData = Type.Object({ + model: Type.String(), +}); + +type Payload = Static; export class GoCQHTTPGetModelShow extends OneBotAction { actionName = ActionName.GoCQHTTP_GetModelShow; diff --git a/src/onebot/action/go-cqhttp/GoCQHTTPSetModelShow.ts b/src/onebot/action/go-cqhttp/GoCQHTTPSetModelShow.ts index 3bc9141f..17ef253b 100644 --- a/src/onebot/action/go-cqhttp/GoCQHTTPSetModelShow.ts +++ b/src/onebot/action/go-cqhttp/GoCQHTTPSetModelShow.ts @@ -1,19 +1,10 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; - -const SchemaData = { - type: 'object', - properties: {}, -} as const satisfies JSONSchema; -type Payload = FromSchema; - //兼容性代码 -export class GoCQHTTPSetModelShow extends OneBotAction { +export class GoCQHTTPSetModelShow extends OneBotAction { actionName = ActionName.GoCQHTTP_SetModelShow; - payloadSchema = SchemaData; - async _handle(payload: Payload) { + async _handle(payload: void) { return null; } } diff --git a/src/onebot/action/go-cqhttp/SendGroupNotice.ts b/src/onebot/action/go-cqhttp/SendGroupNotice.ts index c30a50c8..b36146a8 100644 --- a/src/onebot/action/go-cqhttp/SendGroupNotice.ts +++ b/src/onebot/action/go-cqhttp/SendGroupNotice.ts @@ -2,24 +2,20 @@ import { checkFileExist, uri2local } from '@/common/file'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { unlink } from 'node:fs'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - content: { type: 'string' }, - image: { type: 'string' }, - pinned: { type: ['number', 'string'] }, - type: { type: ['number', 'string'] }, - confirm_required: { type: ['number', 'string'] }, - is_show_edit_card: { type: ['number', 'string'] }, - tip_window_type: { type: ['number', 'string'] }, - }, - required: ['group_id', 'content'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + content: Type.String(), + image: Type.Optional(Type.String()), + pinned: Type.Union([Type.Number(), Type.String()], { default: 0 }), + type: Type.Union([Type.Number(), Type.String()], { default: 1 }), + confirm_required: Type.Union([Type.Number(), Type.String()], { default: 1 }), + is_show_edit_card: Type.Union([Type.Number(), Type.String()], { default: 0 }), + tip_window_type: Type.Union([Type.Number(), Type.String()], { default: 0 }) +}); -type Payload = FromSchema; +type Payload = Static; export class SendGroupNotice extends OneBotAction { actionName = ActionName.GoCQHTTP_SendGroupNotice; @@ -50,21 +46,14 @@ export class SendGroupNotice extends OneBotAction { UploadImage = ImageUploadResult.picInfo; } - - const noticeType = +(payload.type ?? 1); - const noticePinned = +(payload.pinned ?? 0); - - const noticeShowEditCard = +(payload.is_show_edit_card ?? 0); - const noticeTipWindowType = +(payload.tip_window_type ?? 0); - const noticeConfirmRequired = +(payload.confirm_required ?? 1); const publishGroupBulletinResult = await this.core.apis.WebApi.setGroupNotice( payload.group_id.toString(), payload.content, - noticePinned, - noticeType, - noticeShowEditCard, - noticeTipWindowType, - noticeConfirmRequired, + +payload.pinned, + +payload.type, + +payload.is_show_edit_card, + +payload.tip_window_type, + +payload.confirm_required, UploadImage?.id, UploadImage?.width, UploadImage?.height diff --git a/src/onebot/action/go-cqhttp/SetGroupPortrait.ts b/src/onebot/action/go-cqhttp/SetGroupPortrait.ts index fc86a92c..9845aad7 100644 --- a/src/onebot/action/go-cqhttp/SetGroupPortrait.ts +++ b/src/onebot/action/go-cqhttp/SetGroupPortrait.ts @@ -2,28 +2,19 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName, BaseCheckResult } from '@/onebot/action/router'; import * as fs from 'node:fs'; import { checkFileExistV2, uri2local } from '@/common/file'; +import { Static, Type } from '@sinclair/typebox'; -interface Payload { - file: string, - group_id: number -} +const SchemaData = Type.Object({ + file: Type.String(), + group_id: Type.Union([Type.Number(), Type.String()]) +}); + +type Payload = Static; export default class SetGroupPortrait extends OneBotAction { actionName = ActionName.SetGroupPortrait; - - // 用不着复杂检测 - protected async check(payload: Payload): Promise { - if (!payload.file || typeof payload.file != 'string' || !payload.group_id || typeof payload.group_id != 'number') { - return { - valid: false, - message: 'file和group_id字段不能为空或者类型错误', - }; - } - return { - valid: true, - }; - } - + payloadSchema = SchemaData; + async _handle(payload: Payload): Promise { const { path, success } = (await uri2local(this.core.NapCatTempPath, payload.file)); if (!success) { diff --git a/src/onebot/action/go-cqhttp/SetQQProfile.ts b/src/onebot/action/go-cqhttp/SetQQProfile.ts index 6062e0a8..21b0623a 100644 --- a/src/onebot/action/go-cqhttp/SetQQProfile.ts +++ b/src/onebot/action/go-cqhttp/SetQQProfile.ts @@ -1,18 +1,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - nickname: { type: 'string' }, - personal_note: { type: 'string' }, - sex: { type: ['number', 'string'] },//传Sex值?建议传0 - }, - required: ['nickname'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + nickname: Type.String(), + personal_note: Type.Optional(Type.String()), + sex: Type.Optional(Type.Union([Type.Number(), Type.String()])), // 传Sex值?建议传0 +}); -type Payload = FromSchema; +type Payload = Static; export class SetQQProfile extends OneBotAction { actionName = ActionName.SetQQProfile; diff --git a/src/onebot/action/go-cqhttp/UploadGroupFile.ts b/src/onebot/action/go-cqhttp/UploadGroupFile.ts index f526e816..62e5cf70 100644 --- a/src/onebot/action/go-cqhttp/UploadGroupFile.ts +++ b/src/onebot/action/go-cqhttp/UploadGroupFile.ts @@ -3,22 +3,18 @@ import { ActionName } from '@/onebot/action/router'; import { ChatType, Peer } from '@/core/types'; import fs from 'fs'; import { uri2local } from '@/common/file'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -import { MessageContext } from '@/onebot/api'; +import { SendMessageContext } from '@/onebot/api'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - file: { type: 'string' }, - name: { type: 'string' }, - folder: { type: 'string' }, - folder_id: { type: 'string' },//临时扩展 - }, - required: ['group_id', 'file', 'name'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + file: Type.String(), + name: Type.String(), + folder: Type.Optional(Type.String()), + folder_id: Type.Optional(Type.String()),//临时扩展 +}); -type Payload = FromSchema; +type Payload = Static; export default class GoCQHTTPUploadGroupFile extends OneBotAction { actionName = ActionName.GoCQHTTP_UploadGroupFile; @@ -37,7 +33,7 @@ export default class GoCQHTTPUploadGroupFile extends OneBotAction if (!downloadResult.success) { throw new Error(downloadResult.errMsg); } - const msgContext: MessageContext = { + const msgContext: SendMessageContext = { peer: peer, deleteAfterSentFiles: [] }; diff --git a/src/onebot/action/go-cqhttp/UploadPrivateFile.ts b/src/onebot/action/go-cqhttp/UploadPrivateFile.ts index 97c20278..4633162e 100644 --- a/src/onebot/action/go-cqhttp/UploadPrivateFile.ts +++ b/src/onebot/action/go-cqhttp/UploadPrivateFile.ts @@ -3,21 +3,17 @@ import { ActionName } from '@/onebot/action/router'; import { ChatType, Peer, SendFileElement } from '@/core/types'; import fs from 'fs'; import { uri2local } from '@/common/file'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -import { MessageContext } from '@/onebot/api'; +import { SendMessageContext } from '@/onebot/api'; import { ContextMode, createContext } from '@/onebot/action/msg/SendMsg'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - user_id: { type: ['number', 'string'] }, - file: { type: 'string' }, - name: { type: 'string' }, - }, - required: ['user_id', 'file', 'name'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + user_id: Type.Union([Type.Number(), Type.String()]), + file: Type.String(), + name: Type.String(), +}); -type Payload = FromSchema; +type Payload = Static; export default class GoCQHTTPUploadPrivateFile extends OneBotAction { actionName = ActionName.GOCQHTTP_UploadPrivateFile; @@ -45,7 +41,7 @@ export default class GoCQHTTPUploadPrivateFile extends OneBotAction; +type Payload = Static; export default class DelEssenceMsg extends OneBotAction { actionName = ActionName.DelEssenceMsg; diff --git a/src/onebot/action/group/DelGroupNotice.ts b/src/onebot/action/group/DelGroupNotice.ts index 56ecfa4b..5b932ebf 100644 --- a/src/onebot/action/group/DelGroupNotice.ts +++ b/src/onebot/action/group/DelGroupNotice.ts @@ -1,18 +1,13 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + notice_id: Type.String() +}); -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - notice_id: { type: 'string' }, - }, - required: ['group_id', 'notice_id'], -} as const satisfies JSONSchema; - -type Payload = FromSchema; +type Payload = Static; export class DelGroupNotice extends OneBotAction { actionName = ActionName.DelGroupNotice; diff --git a/src/onebot/action/group/GetAiRecord.ts b/src/onebot/action/group/GetAiRecord.ts index d1659875..15e1f094 100644 --- a/src/onebot/action/group/GetAiRecord.ts +++ b/src/onebot/action/group/GetAiRecord.ts @@ -1,19 +1,15 @@ import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; import { AIVoiceChatType } from "@/core/packet/entities/aiChat"; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - character: { type: ['string'] }, - group_id: { type: ['number', 'string'] }, - text: { type: 'string' }, - }, - required: ['character', 'group_id', 'text'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + character: Type.String(), + group_id: Type.Union([Type.Number(), Type.String()]), + text: Type.String(), +}); -type Payload = FromSchema; +type Payload = Static; export class GetAiRecord extends GetPacketStatusDepends { actionName = ActionName.GetAiRecord; diff --git a/src/onebot/action/group/GetGroupEssence.ts b/src/onebot/action/group/GetGroupEssence.ts index e1cc760c..579d2d5e 100644 --- a/src/onebot/action/group/GetGroupEssence.ts +++ b/src/onebot/action/group/GetGroupEssence.ts @@ -1,20 +1,16 @@ import { ChatType, Peer } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; import crypto from 'crypto'; import { AdapterConfigWrap } from '@/onebot/config/config'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] } - }, - required: ['group_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), +}); -type Payload = FromSchema; +type Payload = Static; export class GetGroupEssence extends OneBotAction { actionName = ActionName.GoCQHTTP_GetEssenceMsg; diff --git a/src/onebot/action/group/GetGroupIgnoredNotifies.ts b/src/onebot/action/group/GetGroupIgnoredNotifies.ts index b5a5e134..0faa1826 100644 --- a/src/onebot/action/group/GetGroupIgnoredNotifies.ts +++ b/src/onebot/action/group/GetGroupIgnoredNotifies.ts @@ -1,17 +1,6 @@ import { GroupNotifyMsgStatus } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; - -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - }, -} as const satisfies JSONSchema; - -type Payload = FromSchema; - export class GetGroupIgnoredNotifies extends OneBotAction { actionName = ActionName.GetGroupIgnoredNotifies; diff --git a/src/onebot/action/group/GetGroupInfo.ts b/src/onebot/action/group/GetGroupInfo.ts index ead464c9..6af13419 100644 --- a/src/onebot/action/group/GetGroupInfo.ts +++ b/src/onebot/action/group/GetGroupInfo.ts @@ -2,17 +2,13 @@ import { OB11Group } from '@/onebot'; import { OB11Construct } from '@/onebot/helper/data'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - }, - required: ['group_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), +}); -type Payload = FromSchema; +type Payload = Static; class GetGroupInfo extends OneBotAction { actionName = ActionName.GetGroupInfo; diff --git a/src/onebot/action/group/GetGroupList.ts b/src/onebot/action/group/GetGroupList.ts index b4792207..4a34128d 100644 --- a/src/onebot/action/group/GetGroupList.ts +++ b/src/onebot/action/group/GetGroupList.ts @@ -2,16 +2,13 @@ import { OB11Group } from '@/onebot'; import { OB11Construct } from '@/onebot/helper/data'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; -// no_cache get时传字符串 -const SchemaData = { - type: 'object', - properties: { - no_cache: { type: ['boolean', 'string'] }, - }, -} as const satisfies JSONSchema; +import { Static, Type } from '@sinclair/typebox'; -type Payload = FromSchema; +const SchemaData = Type.Object({ + no_cache: Type.Optional(Type.Union([Type.Boolean(), Type.String()])), +}); + +type Payload = Static; class GetGroupList extends OneBotAction { actionName = ActionName.GetGroupList; diff --git a/src/onebot/action/group/GetGroupMemberInfo.ts b/src/onebot/action/group/GetGroupMemberInfo.ts index 8cacd2a0..d136c938 100644 --- a/src/onebot/action/group/GetGroupMemberInfo.ts +++ b/src/onebot/action/group/GetGroupMemberInfo.ts @@ -2,19 +2,15 @@ import { OB11GroupMember } from '@/onebot'; import { OB11Construct } from '@/onebot/helper/data'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - user_id: { type: ['number', 'string'] }, - no_cache: { type: ['boolean', 'string'] }, - }, - required: ['group_id', 'user_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + user_id: Type.Union([Type.Number(), Type.String()]), + no_cache: Type.Optional(Type.Union([Type.Boolean(), Type.String()])), +}); -type Payload = FromSchema; +type Payload = Static; class GetGroupMemberInfo extends OneBotAction { actionName = ActionName.GetGroupMemberInfo; diff --git a/src/onebot/action/group/GetGroupMemberList.ts b/src/onebot/action/group/GetGroupMemberList.ts index 9c7d4df5..451ae6e1 100644 --- a/src/onebot/action/group/GetGroupMemberList.ts +++ b/src/onebot/action/group/GetGroupMemberList.ts @@ -2,18 +2,14 @@ import { OB11GroupMember } from '@/onebot'; import { OB11Construct } from '@/onebot/helper/data'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - no_cache: { type: ['boolean', 'string'] }, - }, - required: ['group_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + no_cache: Type.Optional(Type.Union([Type.Boolean(), Type.String()])) +}); -type Payload = FromSchema; +type Payload = Static; export class GetGroupMemberList extends OneBotAction { actionName = ActionName.GetGroupMemberList; diff --git a/src/onebot/action/group/GetGroupNotice.ts b/src/onebot/action/group/GetGroupNotice.ts index ffaa858c..84aa42c2 100644 --- a/src/onebot/action/group/GetGroupNotice.ts +++ b/src/onebot/action/group/GetGroupNotice.ts @@ -1,8 +1,7 @@ import { WebApiGroupNoticeFeed } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; - +import { Static, Type } from '@sinclair/typebox'; interface GroupNotice { sender_id: number; publish_time: number; @@ -17,15 +16,11 @@ interface GroupNotice { }; } -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - }, - required: ['group_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), +}); -type Payload = FromSchema; +type Payload = Static; type ApiGroupNotice = GroupNotice & WebApiGroupNoticeFeed; diff --git a/src/onebot/action/group/GetGroupShutList.ts b/src/onebot/action/group/GetGroupShutList.ts index 22e8cf7e..683a8c6b 100644 --- a/src/onebot/action/group/GetGroupShutList.ts +++ b/src/onebot/action/group/GetGroupShutList.ts @@ -1,16 +1,12 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - }, - required: ['group_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), +}); -type Payload = FromSchema; +type Payload = Static; export class GetGroupShutList extends OneBotAction { actionName = ActionName.GetGroupShutList; diff --git a/src/onebot/action/group/GroupPoke.ts b/src/onebot/action/group/GroupPoke.ts index 2281a194..4db865f6 100644 --- a/src/onebot/action/group/GroupPoke.ts +++ b/src/onebot/action/group/GroupPoke.ts @@ -1,17 +1,13 @@ import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; -// no_cache get时传字符串 -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - user_id: { type: ['number', 'string'] }, - }, - required: ['group_id', 'user_id'], -} as const satisfies JSONSchema; +import { Static, Type } from '@sinclair/typebox'; -type Payload = FromSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + user_id: Type.Union([Type.Number(), Type.String()]), +}); + +type Payload = Static; export class GroupPoke extends GetPacketStatusDepends { actionName = ActionName.GroupPoke; diff --git a/src/onebot/action/group/SendGroupAiRecord.ts b/src/onebot/action/group/SendGroupAiRecord.ts index f6199af1..e76c70e0 100644 --- a/src/onebot/action/group/SendGroupAiRecord.ts +++ b/src/onebot/action/group/SendGroupAiRecord.ts @@ -1,21 +1,18 @@ import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; import { uri2local } from "@/common/file"; import { ChatType, Peer } from "@/core"; import { AIVoiceChatType } from "@/core/packet/entities/aiChat"; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - character: { type: ['string'] }, - group_id: { type: ['number', 'string'] }, - text: { type: 'string' }, - }, - required: ['character', 'group_id', 'text'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + character: Type.String(), + group_id: Type.Union([Type.Number(), Type.String()]), + text: Type.String(), +}); + +type Payload = Static; -type Payload = FromSchema; export class SendGroupAiRecord extends GetPacketStatusDepends; +type Payload = Static; export default class SetEssenceMsg extends OneBotAction { actionName = ActionName.SetEssenceMsg; payloadSchema = SchemaData; async _handle(payload: Payload): Promise { - const msg = MessageUnique.getMsgIdAndPeerByShortId(parseInt(payload.message_id.toString())); + const msg = MessageUnique.getMsgIdAndPeerByShortId(+payload.message_id); if (!msg) { throw new Error('msg not found'); } diff --git a/src/onebot/action/group/SetGroupAddRequest.ts b/src/onebot/action/group/SetGroupAddRequest.ts index 9c447d84..af64a653 100644 --- a/src/onebot/action/group/SetGroupAddRequest.ts +++ b/src/onebot/action/group/SetGroupAddRequest.ts @@ -1,19 +1,15 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { NTGroupRequestOperateTypes } from '@/core/types'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - flag: { type: 'string' }, - approve: { type: ['string', 'boolean'] }, - reason: { type: 'string', nullable: true }, - }, - required: ['flag'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + flag: Type.String(), + approve: Type.Optional(Type.Union([Type.Boolean(), Type.String()])), + reason: Type.String({ default: ' ' }), +}); -type Payload = FromSchema; +type Payload = Static; export default class SetGroupAddRequest extends OneBotAction { actionName = ActionName.SetGroupAddRequest; @@ -24,7 +20,7 @@ export default class SetGroupAddRequest extends OneBotAction { const approve = payload.approve?.toString() !== 'false'; await this.core.apis.GroupApi.handleGroupRequest(flag, approve ? NTGroupRequestOperateTypes.KAGREE : NTGroupRequestOperateTypes.KREFUSE, - payload.reason ?? ' ', + payload.reason, ); return null; } diff --git a/src/onebot/action/group/SetGroupAdmin.ts b/src/onebot/action/group/SetGroupAdmin.ts index 5c33a32c..42348791 100644 --- a/src/onebot/action/group/SetGroupAdmin.ts +++ b/src/onebot/action/group/SetGroupAdmin.ts @@ -1,19 +1,15 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { NTGroupMemberRole } from '@/core/types'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - user_id: { type: ['number', 'string'] }, - enable: { type: ['boolean', 'string'] }, - }, - required: ['group_id', 'user_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + user_id: Type.Union([Type.Number(), Type.String()]), + enable: Type.Optional(Type.Union([Type.Boolean(), Type.String()])), +}); -type Payload = FromSchema; +type Payload = Static; export default class SetGroupAdmin extends OneBotAction { actionName = ActionName.SetGroupAdmin; diff --git a/src/onebot/action/group/SetGroupBan.ts b/src/onebot/action/group/SetGroupBan.ts index ed9ea36d..88687582 100644 --- a/src/onebot/action/group/SetGroupBan.ts +++ b/src/onebot/action/group/SetGroupBan.ts @@ -1,18 +1,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - user_id: { type: ['number', 'string'] }, - duration: { type: ['number', 'string'] }, - }, - required: ['group_id', 'user_id', 'duration'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + user_id: Type.Union([Type.Number(), Type.String()]), + duration: Type.Union([Type.Number(), Type.String()], { default: 0 }), +}); -type Payload = FromSchema; +type Payload = Static; export default class SetGroupBan extends OneBotAction { actionName = ActionName.SetGroupBan; diff --git a/src/onebot/action/group/SetGroupCard.ts b/src/onebot/action/group/SetGroupCard.ts index c889b6b5..03a1b844 100644 --- a/src/onebot/action/group/SetGroupCard.ts +++ b/src/onebot/action/group/SetGroupCard.ts @@ -1,18 +1,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - user_id: { type: ['number', 'string'] }, - card: { type: 'string' }, - }, - required: ['group_id', 'user_id', 'card'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + user_id: Type.Union([Type.Number(), Type.String()]), + card: Type.Optional(Type.String()) +}); -type Payload = FromSchema; +type Payload = Static; export default class SetGroupCard extends OneBotAction { actionName = ActionName.SetGroupCard; diff --git a/src/onebot/action/group/SetGroupKick.ts b/src/onebot/action/group/SetGroupKick.ts index 90919d33..339350f0 100644 --- a/src/onebot/action/group/SetGroupKick.ts +++ b/src/onebot/action/group/SetGroupKick.ts @@ -1,19 +1,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + user_id: Type.Union([Type.Number(), Type.String()]), + reject_add_request: Type.Optional(Type.Union([Type.Boolean(), Type.String()])), +}); -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - user_id: { type: ['number', 'string'] }, - reject_add_request: { type: ['boolean', 'string'] }, - }, - required: ['group_id', 'user_id'], -} as const satisfies JSONSchema; - -type Payload = FromSchema; +type Payload = Static; export default class SetGroupKick extends OneBotAction { actionName = ActionName.SetGroupKick; diff --git a/src/onebot/action/group/SetGroupLeave.ts b/src/onebot/action/group/SetGroupLeave.ts index d46a6b65..6618d9cd 100644 --- a/src/onebot/action/group/SetGroupLeave.ts +++ b/src/onebot/action/group/SetGroupLeave.ts @@ -1,17 +1,14 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - is_dismiss: { type: ['boolean', 'string'] }, - }, - required: ['group_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + is_dismiss: Type.Optional(Type.Union([Type.Boolean(), Type.String()])), +}); + +type Payload = Static; -type Payload = FromSchema; export default class SetGroupLeave extends OneBotAction { actionName = ActionName.SetGroupLeave; payloadSchema = SchemaData; diff --git a/src/onebot/action/group/SetGroupName.ts b/src/onebot/action/group/SetGroupName.ts index 719649c5..0820d39b 100644 --- a/src/onebot/action/group/SetGroupName.ts +++ b/src/onebot/action/group/SetGroupName.ts @@ -1,23 +1,21 @@ -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; + import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - group_name: { type: 'string' }, - }, - required: ['group_id', 'group_name'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + group_name: Type.String(), +}); + +type Payload = Static; -type Payload = FromSchema; export default class SetGroupName extends OneBotAction { actionName = ActionName.SetGroupName; payloadSchema = SchemaData; async _handle(payload: Payload): Promise { - let ret = await this.core.apis.GroupApi.setGroupName(payload.group_id.toString(), payload.group_name); + const ret = await this.core.apis.GroupApi.setGroupName(payload.group_id.toString(), payload.group_name); if (ret.result !== 0) { throw new Error(`设置群名称失败 ErrCode: ${ret.result} ErrMsg: ${ret.errMsg}`); } diff --git a/src/onebot/action/group/SetGroupWholeBan.ts b/src/onebot/action/group/SetGroupWholeBan.ts index 9b460c38..af9c5025 100644 --- a/src/onebot/action/group/SetGroupWholeBan.ts +++ b/src/onebot/action/group/SetGroupWholeBan.ts @@ -1,17 +1,13 @@ -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - enable: { type: ['boolean', 'string'] }, - }, - required: ['group_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + group_id: Type.Union([Type.Number(), Type.String()]), + enable: Type.Optional(Type.Union([Type.Boolean(), Type.String()])), +}); -type Payload = FromSchema; +type Payload = Static; export default class SetGroupWholeBan extends OneBotAction { actionName = ActionName.SetGroupWholeBan; diff --git a/src/onebot/action/msg/DeleteMsg.ts b/src/onebot/action/msg/DeleteMsg.ts index c6dcd808..7636561d 100644 --- a/src/onebot/action/msg/DeleteMsg.ts +++ b/src/onebot/action/msg/DeleteMsg.ts @@ -1,22 +1,13 @@ import { ActionName } from '@/onebot/action/router'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - message_id: { - oneOf: [ - { type: 'number' }, - { type: 'string' }, - ], - }, - }, - required: ['message_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + message_id: Type.Union([Type.Number(), Type.String()]), +}); -type Payload = FromSchema; +type Payload = Static; class DeleteMsg extends OneBotAction { actionName = ActionName.DeleteMsg; diff --git a/src/onebot/action/msg/ForwardSingleMsg.ts b/src/onebot/action/msg/ForwardSingleMsg.ts index beba68a7..f37bf4c9 100644 --- a/src/onebot/action/msg/ForwardSingleMsg.ts +++ b/src/onebot/action/msg/ForwardSingleMsg.ts @@ -1,20 +1,16 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ChatType, Peer } from '@/core/types'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - message_id: { type: ['number', 'string'] }, - group_id: { type: ['number', 'string'] }, - user_id: { type: ['number', 'string'] }, - }, - required: ['message_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + message_id: Type.Union([Type.Number(), Type.String()]), + group_id: Type.Optional(Type.Union([Type.Number(), Type.String()])), + user_id: Type.Optional(Type.Union([Type.Number(), Type.String()])), +}); -type Payload = FromSchema; +type Payload = Static; class ForwardSingleMsg extends OneBotAction { protected async getTargetPeer(payload: Payload): Promise { diff --git a/src/onebot/action/msg/GetMsg.ts b/src/onebot/action/msg/GetMsg.ts index 32532fa2..3b4054bb 100644 --- a/src/onebot/action/msg/GetMsg.ts +++ b/src/onebot/action/msg/GetMsg.ts @@ -1,23 +1,18 @@ import { OB11Message } from '@/onebot'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; import { RawMessage } from '@/core'; import { AdapterConfigWrap } from '@/onebot/config/config'; - +import { Static, Type } from '@sinclair/typebox'; export type ReturnDataType = OB11Message -const SchemaData = { - type: 'object', - properties: { - message_id: { type: ['number', 'string'] }, - }, - required: ['message_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + message_id: Type.Union([Type.Number(), Type.String()]), +}); -type Payload = FromSchema; +type Payload = Static; class GetMsg extends OneBotAction { actionName = ActionName.GetMsg; diff --git a/src/onebot/action/msg/MarkMsgAsRead.ts b/src/onebot/action/msg/MarkMsgAsRead.ts index 85e9aeb4..1769c8f1 100644 --- a/src/onebot/action/msg/MarkMsgAsRead.ts +++ b/src/onebot/action/msg/MarkMsgAsRead.ts @@ -1,19 +1,16 @@ import { ChatType, Peer } from '@/core/types'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { MessageUnique } from '@/common/message-unique'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - user_id: { type: ['number', 'string'] }, - group_id: { type: ['number', 'string'] }, - message_id: { type: ['number', 'string'] }, - }, -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + user_id: Type.Optional(Type.Union([Type.String(), Type.Number()])), + group_id: Type.Optional(Type.Union([Type.String(), Type.Number()])), + message_id: Type.Optional(Type.Union([Type.String(), Type.Number()])), +}); -type PlayloadType = FromSchema; +type PlayloadType = Static; class MarkMsgAsRead extends OneBotAction { async getPeer(payload: PlayloadType): Promise { diff --git a/src/onebot/action/msg/SetMsgEmojiLike.ts b/src/onebot/action/msg/SetMsgEmojiLike.ts index a98114d4..1211a62b 100644 --- a/src/onebot/action/msg/SetMsgEmojiLike.ts +++ b/src/onebot/action/msg/SetMsgEmojiLike.ts @@ -1,19 +1,15 @@ import { ActionName } from '@/onebot/action/router'; import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { MessageUnique } from '@/common/message-unique'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - message_id: { type: ['string', 'number'] }, - emoji_id: { type: ['string', 'number'] }, - set: { type: ['boolean', 'string'] } - }, - required: ['message_id', 'emoji_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + message_id: Type.Union([Type.Number(), Type.String()]), + emoji_id: Type.Union([Type.Number(), Type.String()]), + set: Type.Optional(Type.Union([Type.Boolean(), Type.String()])) +}); -type Payload = FromSchema; +type Payload = Static; export class SetMsgEmojiLike extends OneBotAction { actionName = ActionName.SetMsgEmojiLike; diff --git a/src/onebot/action/system/GetCredentials.ts b/src/onebot/action/system/GetCredentials.ts index b8173108..0e918d2a 100644 --- a/src/onebot/action/system/GetCredentials.ts +++ b/src/onebot/action/system/GetCredentials.ts @@ -1,21 +1,18 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; interface Response { cookies: string, token: number } -const SchemaData = { - type: 'object', - properties: { - domain: { type: 'string' }, - }, - required: ['domain'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + domain: Type.String() +}); + +type Payload = Static; -type Payload = FromSchema; export class GetCredentials extends OneBotAction { actionName = ActionName.GetCredentials; diff --git a/src/onebot/action/system/GetSystemMsg.ts b/src/onebot/action/system/GetSystemMsg.ts index adbdba65..435d17bb 100644 --- a/src/onebot/action/system/GetSystemMsg.ts +++ b/src/onebot/action/system/GetSystemMsg.ts @@ -1,21 +1,10 @@ import { GroupNotifyMsgStatus } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; - -const SchemaData = { - type: 'object', - properties: { - group_id: { type: ['number', 'string'] }, - }, -} as const satisfies JSONSchema; - -type Payload = FromSchema; - export class GetGroupSystemMsg extends OneBotAction { actionName = ActionName.GetGroupSystemMsg; - async _handle(payload: void) { + async _handle() { const NTQQUserApi = this.core.apis.UserApi; const NTQQGroupApi = this.core.apis.GroupApi; // 默认10条 该api未完整实现 包括响应数据规范化 类型规范化 diff --git a/src/onebot/action/user/FriendPoke.ts b/src/onebot/action/user/FriendPoke.ts index 35ca1ac3..923b504c 100644 --- a/src/onebot/action/user/FriendPoke.ts +++ b/src/onebot/action/user/FriendPoke.ts @@ -1,16 +1,12 @@ import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { GetPacketStatusDepends } from "@/onebot/action/packet/GetPacketStatus"; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - user_id: { type: ['number', 'string'] }, - }, - required: ['user_id'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + user_id: Type.Union([Type.Number(), Type.String()]) +}); -type Payload = FromSchema; +type Payload = Static; export class FriendPoke extends GetPacketStatusDepends { actionName = ActionName.FriendPoke; diff --git a/src/onebot/action/user/GetCookies.ts b/src/onebot/action/user/GetCookies.ts index a82d98d8..49269c54 100644 --- a/src/onebot/action/user/GetCookies.ts +++ b/src/onebot/action/user/GetCookies.ts @@ -1,21 +1,16 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; - +import { Static, Type } from '@sinclair/typebox'; interface Response { cookies: string, bkn: string } -const SchemaData = { - type: 'object', - properties: { - domain: { type: 'string' }, - }, - required: ['domain'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + domain: Type.String() +}); -type Payload = FromSchema; +type Payload = Static; export class GetCookies extends OneBotAction { actionName = ActionName.GetCookies; diff --git a/src/onebot/action/user/GetFriendList.ts b/src/onebot/action/user/GetFriendList.ts index 79e063ef..d95099a8 100644 --- a/src/onebot/action/user/GetFriendList.ts +++ b/src/onebot/action/user/GetFriendList.ts @@ -2,17 +2,14 @@ import { OB11User } from '@/onebot'; import { OB11Construct } from '@/onebot/helper/data'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -// no_cache get时传字符串 -const SchemaData = { - type: 'object', - properties: { - no_cache: { type: ['boolean', 'string'] }, - }, -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + no_cache: Type.Union([Type.Boolean(), Type.String()]), +}); + +type Payload = Static; -type Payload = FromSchema; export default class GetFriendList extends OneBotAction { actionName = ActionName.GetFriendList; payloadSchema = SchemaData; diff --git a/src/onebot/action/user/GetRecentContact.ts b/src/onebot/action/user/GetRecentContact.ts index 83f4338f..96a180fe 100644 --- a/src/onebot/action/user/GetRecentContact.ts +++ b/src/onebot/action/user/GetRecentContact.ts @@ -1,23 +1,21 @@ -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; + import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { AdapterConfigWrap } from '@/onebot/config/config'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - count: { type: ['number', 'string'] }, - }, -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + count: Type.Union([Type.Number(), Type.String()], { default: 10 }), +}); -type Payload = FromSchema; +type Payload = Static; export default class GetRecentContact extends OneBotAction { actionName = ActionName.GetRecentContact; payloadSchema = SchemaData; async _handle(payload: Payload, adapter: string) { - const ret = await this.core.apis.UserApi.getRecentContactListSnapShot(+(payload.count || 10)); + const ret = await this.core.apis.UserApi.getRecentContactListSnapShot(+payload.count); const network = Object.values(this.obContext.configLoader.configData.network) as Array; //烘焙消息 const msgFormat = network.flat().find(e => e.name === adapter)?.messagePostFormat ?? 'array'; diff --git a/src/onebot/action/user/SendLike.ts b/src/onebot/action/user/SendLike.ts index 099684c8..ee661cdd 100644 --- a/src/onebot/action/user/SendLike.ts +++ b/src/onebot/action/user/SendLike.ts @@ -1,17 +1,13 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - user_id: { type: ['number', 'string'] }, - times: { type: ['number', 'string'] }, - }, - required: ['user_id', 'times'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + times: Type.Union([Type.Number(), Type.String()], { default: 1 }), + user_id: Type.Union([Type.Number(), Type.String()]) +}); -type Payload = FromSchema; +type Payload = Static; export default class SendLike extends OneBotAction { actionName = ActionName.SendLike; @@ -20,7 +16,7 @@ export default class SendLike extends OneBotAction { async _handle(payload: Payload): Promise { const qq = payload.user_id.toString(); const uid: string = await this.core.apis.UserApi.getUidByUinV2(qq) ?? ''; - const result = await this.core.apis.UserApi.like(uid, parseInt(payload.times?.toString()) || 1); + const result = await this.core.apis.UserApi.like(uid, +payload.times); if (result.result !== 0) { throw new Error(`点赞失败 ${result.errMsg}`); } diff --git a/src/onebot/action/user/SetFriendAddRequest.ts b/src/onebot/action/user/SetFriendAddRequest.ts index 3aa58b75..1170b552 100644 --- a/src/onebot/action/user/SetFriendAddRequest.ts +++ b/src/onebot/action/user/SetFriendAddRequest.ts @@ -1,18 +1,14 @@ -import { FromSchema, JSONSchema } from 'json-schema-to-ts'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; +import { Static, Type } from '@sinclair/typebox'; -const SchemaData = { - type: 'object', - properties: { - flag: { type: 'string' }, - approve: { type: ['string', 'boolean'] }, - remark: { type: 'string' }, - }, - required: ['flag'], -} as const satisfies JSONSchema; +const SchemaData = Type.Object({ + flag: Type.String(), + approve: Type.Optional(Type.Union([Type.String(), Type.Boolean()])), + remark: Type.Optional(Type.String()) +}); -type Payload = FromSchema; +type Payload = Static; export default class SetFriendAddRequest extends OneBotAction { actionName = ActionName.SetFriendAddRequest; From 7221f4ac02b6a739dc369ecbd1a36349d485cddf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 1 Dec 2024 12:50:13 +0800 Subject: [PATCH 154/418] fix: type-check --- src/onebot/action/user/GetFriendList.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/onebot/action/user/GetFriendList.ts b/src/onebot/action/user/GetFriendList.ts index d95099a8..48971172 100644 --- a/src/onebot/action/user/GetFriendList.ts +++ b/src/onebot/action/user/GetFriendList.ts @@ -5,7 +5,7 @@ import { ActionName } from '@/onebot/action/router'; import { Static, Type } from '@sinclair/typebox'; const SchemaData = Type.Object({ - no_cache: Type.Union([Type.Boolean(), Type.String()]), + no_cache: Type.Optional(Type.Union([Type.Boolean(), Type.String()])), }); type Payload = Static; From 9eaf51e15fbc8d74f9d77a3aede0debb95af8c6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 1 Dec 2024 13:04:00 +0800 Subject: [PATCH 155/418] fix: nullable --- src/onebot/action/go-cqhttp/GetForwardMsg.ts | 4 ++-- src/onebot/action/group/SetGroupAddRequest.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/onebot/action/go-cqhttp/GetForwardMsg.ts b/src/onebot/action/go-cqhttp/GetForwardMsg.ts index 6d7923c9..41fb7fa1 100644 --- a/src/onebot/action/go-cqhttp/GetForwardMsg.ts +++ b/src/onebot/action/go-cqhttp/GetForwardMsg.ts @@ -5,8 +5,8 @@ import { MessageUnique } from '@/common/message-unique'; import { Static, Type } from '@sinclair/typebox'; const SchemaData = Type.Object({ - message_id: Type.Union([Type.Number(), Type.String()]), - id: Type.Union([Type.Number(), Type.String()]), + message_id: Type.Optional(Type.Union([Type.Number(), Type.String()])), + id: Type.Optional(Type.Union([Type.Number(), Type.String()])), }); type Payload = Static; diff --git a/src/onebot/action/group/SetGroupAddRequest.ts b/src/onebot/action/group/SetGroupAddRequest.ts index af64a653..389e71ff 100644 --- a/src/onebot/action/group/SetGroupAddRequest.ts +++ b/src/onebot/action/group/SetGroupAddRequest.ts @@ -6,7 +6,7 @@ import { Static, Type } from '@sinclair/typebox'; const SchemaData = Type.Object({ flag: Type.String(), approve: Type.Optional(Type.Union([Type.Boolean(), Type.String()])), - reason: Type.String({ default: ' ' }), + reason: Type.Union([Type.String({ default: ' ' }), Type.Null()]), }); type Payload = Static; @@ -20,7 +20,7 @@ export default class SetGroupAddRequest extends OneBotAction { const approve = payload.approve?.toString() !== 'false'; await this.core.apis.GroupApi.handleGroupRequest(flag, approve ? NTGroupRequestOperateTypes.KAGREE : NTGroupRequestOperateTypes.KREFUSE, - payload.reason, + payload.reason ?? ' ', ); return null; } From 97f317254e2d28e4d8103df41e6dadb733079ad1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 1 Dec 2024 13:11:56 +0800 Subject: [PATCH 156/418] fix: MiniApp type check --- src/onebot/action/extends/GetMiniAppArk.ts | 51 ++++++++++++---------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/src/onebot/action/extends/GetMiniAppArk.ts b/src/onebot/action/extends/GetMiniAppArk.ts index 47786b83..9f3f19a1 100644 --- a/src/onebot/action/extends/GetMiniAppArk.ts +++ b/src/onebot/action/extends/GetMiniAppArk.ts @@ -4,25 +4,33 @@ import { MiniAppInfo, MiniAppInfoHelper } from "@/core/packet/utils/helper/miniA import { MiniAppData, MiniAppRawData, MiniAppReqCustomParams, MiniAppReqParams } from "@/core/packet/entities/miniApp"; import { Static, Type } from '@sinclair/typebox'; -const SchemaData = Type.Object({ - type: Type.Optional(Type.Union([Type.Literal('bili'), Type.Literal('weibo')])), - title: Type.String(), - desc: Type.String(), - picUrl: Type.String(), - jumpUrl: Type.String(), - iconUrl: Type.Optional(Type.String()), - sdkId: Type.Optional(Type.String()), - appId: Type.Optional(Type.String()), - scene: Type.Optional(Type.Union([Type.Number(), Type.String()])), - templateType: Type.Optional(Type.Union([Type.Number(), Type.String()])), - businessType: Type.Optional(Type.Union([Type.Number(), Type.String()])), - verType: Type.Optional(Type.Union([Type.Number(), Type.String()])), - shareType: Type.Optional(Type.Union([Type.Number(), Type.String()])), - versionId: Type.Optional(Type.String()), - withShareTicket: Type.Optional(Type.Union([Type.Number(), Type.String()])), - rawArkData: Type.Optional(Type.Union([Type.Boolean(), Type.String()])) -}); - +const SchemaData = Type.Union([ + Type.Object({ + type: Type.Union([Type.Literal('bili'), Type.Literal('weibo')]), + title: Type.String(), + desc: Type.String(), + picUrl: Type.String(), + jumpUrl: Type.String(), + rawArkData: Type.Optional(Type.Union([Type.Boolean(), Type.String()])) + }), + Type.Object({ + title: Type.String(), + desc: Type.String(), + picUrl: Type.String(), + jumpUrl: Type.String(), + iconUrl: Type.String(), + appId: Type.String(), + scene: Type.Union([Type.Number(), Type.String()]), + templateType: Type.Union([Type.Number(), Type.String()]), + businessType: Type.Union([Type.Number(), Type.String()]), + verType: Type.Union([Type.Number(), Type.String()]), + shareType: Type.Union([Type.Number(), Type.String()]), + versionId: Type.String(), + sdkId: Type.String(), + withShareTicket: Type.Union([Type.Number(), Type.String()]), + rawArkData: Type.Optional(Type.Union([Type.Boolean(), Type.String()])) + }) +]); type Payload = Static; export class GetMiniAppArk extends GetPacketStatusDepends Date: Sun, 1 Dec 2024 13:20:20 +0800 Subject: [PATCH 157/418] =?UTF-8?q?fix:=20=E8=87=AA=E5=8A=A8=E8=BF=81?= =?UTF-8?q?=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/onebot/config/config.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/onebot/config/config.ts b/src/onebot/config/config.ts index e31626fd..d59247d6 100644 --- a/src/onebot/config/config.ts +++ b/src/onebot/config/config.ts @@ -172,6 +172,7 @@ export function migrateOneBotConfigsV1(config: Partial): OneBotConfig if (config.http) { mergedConfig.network.httpServers = [ mergeConfigs(httpServerDefaultConfigs, { + name: 'http-server', enable: config.http.enable, port: config.http.port, host: config.http.host, @@ -184,6 +185,7 @@ export function migrateOneBotConfigsV1(config: Partial): OneBotConfig if (config.ws) { mergedConfig.network.websocketServers = [ mergeConfigs(websocketServerDefaultConfigs, { + name: 'websocket-server', enable: config.ws.enable, port: config.ws.port, host: config.ws.host, @@ -197,6 +199,7 @@ export function migrateOneBotConfigsV1(config: Partial): OneBotConfig if (config.reverseWs) { mergedConfig.network.websocketClients = config.reverseWs.urls.map((url) => mergeConfigs(websocketClientDefaultConfigs, { + name: 'websocket-client-' + config.reverseWs?.urls.indexOf(url).toString(), enable: config.reverseWs?.enable, url: url, token: config.token, From 1206d1fcf6a90a23052c57e32054768569eb67fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 1 Dec 2024 13:25:36 +0800 Subject: [PATCH 158/418] chore: bug report --- .github/ISSUE_TEMPLATE/bug_report.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 10d2eb1a..4853bf9b 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -10,13 +10,12 @@ body: 在提交新的 Bug 反馈前,请确保您: * 已经搜索了现有的 issues,并且没有找到可以解决您问题的方法 * 不与现有的某一 issue 重复 - * 不涉及[已经停止维护的特性](https://github.com/NapNeko/NapCatQQ?tab=readme-ov-file#挥别昨日),例如 CQ 码 - type: input id: system-version attributes: label: 系统版本 description: 运行 QQNT 的系统版本 - placeholder: Windows 10 Pro Workstation 22H2 + placeholder: Windows 11 24H2 validations: required: true - type: input @@ -24,7 +23,7 @@ body: attributes: label: QQNT 版本 description: 可在 QQNT 的「关于」的设置页中找到 - placeholder: 9.9.7-21804 + placeholder: 9.9.16-29927 validations: required: true - type: input @@ -40,21 +39,21 @@ body: attributes: label: OneBot 客户端 description: 连接至 NapCat 的客户端版本信息 - placeholder: Overflow 2.16.0-2cf7991-SNAPSHOT + placeholder: Karin 1.0.0 validations: required: true - type: textarea id: what-happened attributes: label: 发生了什么? - description: 填写你认为的 NapCat 的不正常行为 + description: 填写你认为的 NapCat 的异常行为 validations: required: true - type: textarea id: how-reproduce attributes: label: 如何复现 - description: 填写应当如何操作才能触发这个不正常行为 + description: 填写应当如何操作才能触发这个异常行为 placeholder: | 1. xxx 2. xxx From 85e0b715455efa65d190f5bb8e262425791252c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 1 Dec 2024 13:26:56 +0800 Subject: [PATCH 159/418] chore: daily -> weekly --- .github/dependabot.yml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index b4179835..aff82a10 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,11 +1,6 @@ -# To get started with Dependabot version updates, you'll need to specify which -# package ecosystems to update and where the package manifests are located. -# Please see the documentation for all configuration options: -# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file - version: 2 updates: - - package-ecosystem: "npm" # See documentation for possible values - directory: "/" # Location of package manifests + - package-ecosystem: "npm" + directory: "/" schedule: - interval: "daily" + interval: "weekly" From af052242fa74ca6acbb2f2048789bc2a0c6dce85 Mon Sep 17 00:00:00 2001 From: bietiaop <1527109126@qq.com> Date: Sun, 1 Dec 2024 15:16:16 +0800 Subject: [PATCH 160/418] =?UTF-8?q?feat:=E5=B8=A6=E7=AD=89=E7=BA=A7?= =?UTF-8?q?=E7=9A=84=E5=AE=9E=E6=97=B6=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/log.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/common/log.ts b/src/common/log.ts index 7b34f46a..0965f4ea 100644 --- a/src/common/log.ts +++ b/src/common/log.ts @@ -187,7 +187,7 @@ export class LogWrapper { // eslint-disable-next-line no-control-regex this.logger.log(level, message.replace(/\x1B[@-_][0-?]*[ -/]*[@-~]/g, '')); } - logSubscription.notify(message); + logSubscription.notify(JSON.stringify({ level, message })); } log(...args: any[]) { From 5376e16c9fdaae2f6f320b92f03ac7f57f884274 Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Sun, 1 Dec 2024 11:12:10 +0000 Subject: [PATCH 161/418] release: v4.2.10 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 9b04b238..374483a7 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.9", + "version": "4.2.10", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 09873c0d..d2ece823 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.9", + "version": "4.2.10", "scripts": { "build:universal": "npm run build:webui && vite build --mode universal || exit 1", "build:framework": "npm run build:webui && vite build --mode framework || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index 944ed73c..4fc9deb7 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.9'; +export const napCatVersion = '4.2.10'; From 3b5d2c8f6f69082401b993b3e906d430436a5bde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Mon, 2 Dec 2024 11:16:12 +0800 Subject: [PATCH 162/418] =?UTF-8?q?style:=20=E7=AE=80=E5=8C=96=E5=86=99?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/extends/GetCollectionList.ts | 2 +- src/onebot/action/group/SetGroupBan.ts | 2 +- src/onebot/action/msg/ForwardSingleMsg.ts | 2 +- src/onebot/action/msg/SetMsgEmojiLike.ts | 2 +- src/onebot/api/msg.ts | 19 +++++++++---------- 5 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/onebot/action/extends/GetCollectionList.ts b/src/onebot/action/extends/GetCollectionList.ts index f1a31c16..a80484dd 100644 --- a/src/onebot/action/extends/GetCollectionList.ts +++ b/src/onebot/action/extends/GetCollectionList.ts @@ -14,6 +14,6 @@ export class GetCollectionList extends OneBotAction { payloadSchema = SchemaData; async _handle(payload: Payload) { - return await this.core.apis.CollectionApi.getAllCollection(parseInt(payload.category.toString()), +payload.count); + return await this.core.apis.CollectionApi.getAllCollection(+payload.category, +payload.count); } } diff --git a/src/onebot/action/group/SetGroupBan.ts b/src/onebot/action/group/SetGroupBan.ts index 88687582..1a02dcc7 100644 --- a/src/onebot/action/group/SetGroupBan.ts +++ b/src/onebot/action/group/SetGroupBan.ts @@ -18,7 +18,7 @@ export default class SetGroupBan extends OneBotAction { const uid = await this.core.apis.UserApi.getUidByUinV2(payload.user_id.toString()); if (!uid) throw new Error('uid error'); await this.core.apis.GroupApi.banMember(payload.group_id.toString(), - [{ uid: uid, timeStamp: parseInt(payload.duration.toString()) }]); + [{ uid: uid, timeStamp: +payload.duration}]); return null; } } diff --git a/src/onebot/action/msg/ForwardSingleMsg.ts b/src/onebot/action/msg/ForwardSingleMsg.ts index f37bf4c9..61beb99d 100644 --- a/src/onebot/action/msg/ForwardSingleMsg.ts +++ b/src/onebot/action/msg/ForwardSingleMsg.ts @@ -25,7 +25,7 @@ class ForwardSingleMsg extends OneBotAction { } async _handle(payload: Payload): Promise { - const msg = MessageUnique.getMsgIdAndPeerByShortId(parseInt(payload.message_id.toString())); + const msg = MessageUnique.getMsgIdAndPeerByShortId(+payload.message_id); if (!msg) { throw new Error(`无法找到消息${payload.message_id}`); } diff --git a/src/onebot/action/msg/SetMsgEmojiLike.ts b/src/onebot/action/msg/SetMsgEmojiLike.ts index 1211a62b..0ac44b1a 100644 --- a/src/onebot/action/msg/SetMsgEmojiLike.ts +++ b/src/onebot/action/msg/SetMsgEmojiLike.ts @@ -16,7 +16,7 @@ export class SetMsgEmojiLike extends OneBotAction { payloadSchema = SchemaData; async _handle(payload: Payload) { - const msg = MessageUnique.getMsgIdAndPeerByShortId(parseInt(payload.message_id.toString())); + const msg = MessageUnique.getMsgIdAndPeerByShortId(+payload.message_id); if (!msg) { throw new Error('msg not found'); } diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index eba61da8..cac41fdc 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -452,7 +452,7 @@ export class OneBotMsgApi { }, [OB11MessageDataType.face]: async ({ data: { id } }) => { - let parsedFaceId = parseInt(id); + let parsedFaceId = +id; // 从face_config.json中获取表情名称 const sysFaces = faceConfig.sysface; const face: any = sysFaces.find((systemFace) => systemFace.QSid === parsedFaceId.toString()); @@ -460,7 +460,6 @@ export class OneBotMsgApi { this.core.context.logger.logError('不支持的ID', id); return undefined; } - parsedFaceId = parseInt(parsedFaceId.toString()); let faceType = 1; if (parsedFaceId >= 222) { faceType = 2; @@ -958,14 +957,14 @@ export class OneBotMsgApi { } groupChangDecreseType2String(type: number): GroupDecreaseSubType { switch (type) { - case 130: - return 'leave'; - case 131: - return 'kick'; - case 3: - return 'kick_me'; - default: - return 'kick'; + case 130: + return 'leave'; + case 131: + return 'kick'; + case 3: + return 'kick_me'; + default: + return 'kick'; } } From 45b1f369ac6e96eb5f9af4c2e38edba39fb2013c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Mon, 2 Dec 2024 11:44:37 +0800 Subject: [PATCH 163/418] =?UTF-8?q?style:=20=E5=BC=82=E6=AD=A5=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/log.ts | 29 ++++++++----------- src/common/request.ts | 21 -------------- src/onebot/action/extends/SetQQAvatar.ts | 8 ++--- .../action/go-cqhttp/SendGroupNotice.ts | 5 ++-- .../action/go-cqhttp/SetGroupPortrait.ts | 11 ++++--- src/onebot/api/msg.ts | 18 +++++------- src/webui/src/api/Log.ts | 4 +-- src/webui/src/helper/config.ts | 22 +++++++------- 8 files changed, 42 insertions(+), 76 deletions(-) diff --git a/src/common/log.ts b/src/common/log.ts index 0965f4ea..870f0c66 100644 --- a/src/common/log.ts +++ b/src/common/log.ts @@ -1,7 +1,7 @@ import winston, { format, transports } from 'winston'; import { truncateString } from '@/common/helper'; import path from 'node:path'; -import fs from 'node:fs'; +import fs from 'node:fs/promises'; import { NTMsgAtType, ChatType, ElementType, MessageElement, RawMessage, SelfInfo } from '@/core'; import EventEmitter from 'node:events'; export enum LogLevel { @@ -97,26 +97,20 @@ export class LogWrapper { cleanOldLogs(logDir: string) { const oneWeekAgo = Date.now() - 7 * 24 * 60 * 60 * 1000; - fs.readdir(logDir, (err, files) => { - if (err) { - this.logger.error('Failed to read log directory', err); - return; - } + fs.readdir(logDir).then((files) => { files.forEach((file) => { const filePath = path.join(logDir, file); this.deleteOldLogFile(filePath, oneWeekAgo); }); + }).catch((err) => { + this.logger.error('Failed to read log directory', err); }); } private deleteOldLogFile(filePath: string, oneWeekAgo: number) { - fs.stat(filePath, (err, stats) => { - if (err) { - this.logger.error('Failed to get file stats', err); - return; - } + fs.stat(filePath).then((stats) => { if (stats.mtime.getTime() < oneWeekAgo) { - fs.unlink(filePath, (err) => { + fs.unlink(filePath).catch((err) => { if (err) { if (err.code === 'ENOENT') { this.logger.warn(`File already deleted: ${filePath}`); @@ -128,6 +122,8 @@ export class LogWrapper { } }); } + }).catch((err) => { + this.logger.error('Failed to get file stats', err); }); } @@ -316,9 +312,8 @@ function textElementToText(textElement: any): string { function replyElementToText(replyElement: any, msg: RawMessage, recursiveLevel: number): string { const recordMsgOrNull = msg.records.find((record) => replyElement.sourceMsgIdInRecords === record.msgId); - return `[回复消息 ${ - recordMsgOrNull && recordMsgOrNull.peerUin != '284840486' && recordMsgOrNull.peerUin != '1094950020' - ? rawMessageToText(recordMsgOrNull, recursiveLevel + 1) - : `未找到消息记录 (MsgId = ${replyElement.sourceMsgIdInRecords})` - }]`; + return `[回复消息 ${recordMsgOrNull && recordMsgOrNull.peerUin != '284840486' && recordMsgOrNull.peerUin != '1094950020' + ? rawMessageToText(recordMsgOrNull, recursiveLevel + 1) + : `未找到消息记录 (MsgId = ${replyElement.sourceMsgIdInRecords})` + }]`; } diff --git a/src/common/request.ts b/src/common/request.ts index aecc5b1b..11523842 100644 --- a/src/common/request.ts +++ b/src/common/request.ts @@ -1,6 +1,5 @@ import https from 'node:https'; import http from 'node:http'; -import { readFileSync } from 'node:fs'; export class RequestUtil { // 适用于获取服务器下发cookies时获取,仅GET @@ -112,24 +111,4 @@ export class RequestUtil { static async HttpGetText(url: string, method: string = 'GET', data?: any, headers: { [key: string]: string } = {}) { return this.HttpGetJson(url, method, data, headers, false, false); } - - static async createFormData(boundary: string, filePath: string): Promise { - let type = 'image/png'; - if (filePath.endsWith('.jpg')) { - type = 'image/jpeg'; - } - const formDataParts = [ - `------${boundary}\r\n`, - `Content-Disposition: form-data; name="share_image"; filename="${filePath}"\r\n`, - 'Content-Type: ' + type + '\r\n\r\n', - ]; - - const fileContent = readFileSync(filePath); - const footer = `\r\n------${boundary}--`; - return Buffer.concat([ - Buffer.from(formDataParts.join(''), 'utf8'), - fileContent, - Buffer.from(footer, 'utf8'), - ]); - } } diff --git a/src/onebot/action/extends/SetQQAvatar.ts b/src/onebot/action/extends/SetQQAvatar.ts index 3f96a91c..f8003fec 100644 --- a/src/onebot/action/extends/SetQQAvatar.ts +++ b/src/onebot/action/extends/SetQQAvatar.ts @@ -1,6 +1,6 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import * as fs from 'node:fs'; +import fs from 'node:fs/promises'; import { checkFileExist, uri2local } from '@/common/file'; import { Static, Type } from '@sinclair/typebox'; @@ -21,9 +21,7 @@ export default class SetAvatar extends OneBotAction { if (path) { await checkFileExist(path, 5000);// 避免崩溃 const ret = await this.core.apis.UserApi.setQQAvatar(path); - fs.unlink(path, () => { - }); - + fs.unlink(path).catch(() => { }); if (!ret) { throw new Error(`头像${payload.file}设置失败,api无返回`); } @@ -34,7 +32,7 @@ export default class SetAvatar extends OneBotAction { throw new Error(`头像${payload.file}设置失败,未知的错误,${ret.result}:${ret.errMsg}`); } } else { - fs.unlink(path, () => { }); + fs.unlink(path).catch(() => { }); throw new Error(`头像${payload.file}设置失败,无法获取头像,文件可能不存在`); } return null; diff --git a/src/onebot/action/go-cqhttp/SendGroupNotice.ts b/src/onebot/action/go-cqhttp/SendGroupNotice.ts index b36146a8..998d711f 100644 --- a/src/onebot/action/go-cqhttp/SendGroupNotice.ts +++ b/src/onebot/action/go-cqhttp/SendGroupNotice.ts @@ -1,7 +1,7 @@ import { checkFileExist, uri2local } from '@/common/file'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { unlink } from 'node:fs'; +import { unlink } from 'node:fs/promises'; import { Static, Type } from '@sinclair/typebox'; const SchemaData = Type.Object({ @@ -41,8 +41,7 @@ export class SendGroupNotice extends OneBotAction { throw new Error(`群公告${payload.image}设置失败,图片上传失败`); } - unlink(path, () => { - }); + unlink(path).catch(() => { }); UploadImage = ImageUploadResult.picInfo; } diff --git a/src/onebot/action/go-cqhttp/SetGroupPortrait.ts b/src/onebot/action/go-cqhttp/SetGroupPortrait.ts index 9845aad7..b9354dd5 100644 --- a/src/onebot/action/go-cqhttp/SetGroupPortrait.ts +++ b/src/onebot/action/go-cqhttp/SetGroupPortrait.ts @@ -1,9 +1,8 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; -import { ActionName, BaseCheckResult } from '@/onebot/action/router'; -import * as fs from 'node:fs'; +import { ActionName } from '@/onebot/action/router'; import { checkFileExistV2, uri2local } from '@/common/file'; import { Static, Type } from '@sinclair/typebox'; - +import fs from 'node:fs/promises'; const SchemaData = Type.Object({ file: Type.String(), group_id: Type.Union([Type.Number(), Type.String()]) @@ -14,7 +13,7 @@ type Payload = Static; export default class SetGroupPortrait extends OneBotAction { actionName = ActionName.SetGroupPortrait; payloadSchema = SchemaData; - + async _handle(payload: Payload): Promise { const { path, success } = (await uri2local(this.core.NapCatTempPath, payload.file)); if (!success) { @@ -23,7 +22,7 @@ export default class SetGroupPortrait extends OneBotAction { if (path) { await checkFileExistV2(path, 5000); // 文件不存在QQ会崩溃,需要提前判断 const ret = await this.core.apis.GroupApi.setGroupAvatar(payload.group_id.toString(), path); - fs.unlink(path, () => { }); + fs.unlink(path).catch(() => { }); if (!ret) { throw new Error(`头像${payload.file}设置失败,api无返回`); } @@ -34,7 +33,7 @@ export default class SetGroupPortrait extends OneBotAction { } return ret; } else { - fs.unlink(path, () => { }); + fs.unlink(path).catch(() => { }); throw new Error(`头像${payload.file}设置失败,无法获取头像,文件可能不存在`); } } diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index cac41fdc..bf8f790c 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -15,7 +15,6 @@ import { RawMessage, SendMessageElement, SendTextElement, - BaseEmojiType, FaceType, GrayTipElement, } from '@/core'; @@ -26,12 +25,9 @@ import { EventType } from '@/onebot/event/OneBotEvent'; import { encodeCQCode } from '@/onebot/helper/cqcode'; import { uri2local } from '@/common/file'; import { RequestUtil } from '@/common/request'; -import fs from 'node:fs'; -import fsPromise from 'node:fs/promises'; +import fsPromise, { constants } from 'node:fs/promises'; import { OB11FriendAddNoticeEvent } from '@/onebot/event/notice/OB11FriendAddNoticeEvent'; -// import { decodeSysMessage } from '@/core/packet/proto/old/ProfileLike'; import { ForwardMsgBuilder } from "@/common/forward-msg-builder"; -import { decodeSysMessage } from "@/core/helper/adaptDecoder"; import { GroupChange, PushMsgBody } from "@/core/packet/transformer/proto"; import { NapProtoMsg } from '@napneko/nap-proto-core'; import { OB11GroupIncreaseEvent } from '../event/notice/OB11GroupIncreaseEvent'; @@ -887,16 +883,16 @@ export class OneBotMsgApi { try { for (const fileElement of sendElements) { if (fileElement.elementType === ElementType.PTT) { - totalSize += fs.statSync(fileElement.pttElement.filePath).size; + totalSize += (await fsPromise.stat(fileElement.pttElement.filePath)).size; } if (fileElement.elementType === ElementType.FILE) { - totalSize += fs.statSync(fileElement.fileElement.filePath).size; + totalSize += (await fsPromise.stat(fileElement.fileElement.filePath)).size; } if (fileElement.elementType === ElementType.VIDEO) { - totalSize += fs.statSync(fileElement.videoElement.filePath).size; + totalSize += (await fsPromise.stat(fileElement.videoElement.filePath)).size; } if (fileElement.elementType === ElementType.PIC) { - totalSize += fs.statSync(fileElement.picElement.sourcePath).size; + totalSize += (await fsPromise.stat(fileElement.picElement.sourcePath)).size; } } //且 PredictTime ((totalSize / 1024 / 512) * 1000)不等于Nan @@ -916,9 +912,9 @@ export class OneBotMsgApi { }, returnMsg.msgId); setTimeout(() => { - deleteAfterSentFiles.forEach(file => { + deleteAfterSentFiles.forEach(async file => { try { - if (fs.existsSync(file)) { + if (await fsPromise.access(file, constants.W_OK).then(() => true).catch(() => false)) { fsPromise.unlink(file).then().catch(e => this.core.context.logger.logError('发送消息删除文件失败', e)); } } catch (error) { diff --git a/src/webui/src/api/Log.ts b/src/webui/src/api/Log.ts index 1684183d..5429e0b6 100644 --- a/src/webui/src/api/Log.ts +++ b/src/webui/src/api/Log.ts @@ -9,13 +9,13 @@ export const LogHandler: RequestHandler = async (req, res) => { if (filename.includes('..')) { return sendError(res, 'ID不合法'); } - const logContent = WebUiConfigWrapper.GetLogContent(filename); + const logContent = await WebUiConfigWrapper.GetLogContent(filename); return sendSuccess(res, logContent); }; // 日志列表 export const LogListHandler: RequestHandler = async (_, res) => { - const logList = WebUiConfigWrapper.GetLogsList(); + const logList = await WebUiConfigWrapper.GetLogsList(); return sendSuccess(res, logList); }; // 实时日志(SSE) diff --git a/src/webui/src/helper/config.ts b/src/webui/src/helper/config.ts index 9c1d7413..6f74e93e 100644 --- a/src/webui/src/helper/config.ts +++ b/src/webui/src/helper/config.ts @@ -1,5 +1,5 @@ import { webUiPathWrapper } from '@/webui'; -import { existsSync, readFileSync, writeFileSync, readdirSync } from 'node:fs'; +import fs, { constants } from 'node:fs/promises'; import * as net from 'node:net'; import { resolve } from 'node:path'; @@ -90,18 +90,18 @@ export class WebUiConfigWrapper { try { const configPath = resolve(webUiPathWrapper.configPath, './webui.json'); - if (!existsSync(configPath)) { - writeFileSync(configPath, JSON.stringify(defaultconfig, null, 4)); + if (!await fs.access(configPath, constants.R_OK | constants.W_OK).then(() => true).catch(() => false)) { + await fs.writeFile(configPath, JSON.stringify(defaultconfig, null, 4)); } - const fileContent = readFileSync(configPath, 'utf-8'); + const fileContent = await fs.readFile(configPath, 'utf-8'); // 更新配置字段后新增字段可能会缺失,同步一下 const parsedConfig = this.applyDefaults(JSON.parse(fileContent) as Partial, defaultconfig); if (!parsedConfig.prefix.startsWith('/')) parsedConfig.prefix = '/' + parsedConfig.prefix; if (parsedConfig.prefix.endsWith('/')) parsedConfig.prefix = parsedConfig.prefix.slice(0, -1); // 配置已经被操作过了,还是回写一下吧,不然新配置不会出现在配置文件里 - writeFileSync(configPath, JSON.stringify(parsedConfig, null, 4)); + await fs.writeFile(configPath, JSON.stringify(parsedConfig, null, 4)); // 不希望回写的配置放后面 // 查询主机地址是否可用 @@ -137,19 +137,19 @@ export class WebUiConfigWrapper { return resolve(webUiPathWrapper.logsPath); } // 获取日志列表 - public static GetLogsList(): string[] { - if (existsSync(webUiPathWrapper.logsPath)) { - return readdirSync(webUiPathWrapper.logsPath) + public static async GetLogsList(): Promise { + if (await fs.access(webUiPathWrapper.logsPath, constants.F_OK).then(() => true).catch(() => false)) { + return (await fs.readdir(webUiPathWrapper.logsPath)) .filter((file) => file.endsWith('.log')) .map((file) => file.replace('.log', '')); } return []; } // 获取指定日志文件内容 - public static GetLogContent(filename: string): string { + public static async GetLogContent(filename: string): Promise { const logPath = resolve(webUiPathWrapper.logsPath, `${filename}.log`); - if (existsSync(logPath)) { - return readFileSync(logPath, 'utf-8'); + if (await fs.access(logPath, constants.R_OK).then(() => true).catch(() => false)) { + return await fs.readFile(logPath, 'utf-8'); } return ''; } From 2abc7e541de7f45251517693d18ac3d5685b7423 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Mon, 2 Dec 2024 21:23:13 +0800 Subject: [PATCH 164/418] =?UTF-8?q?fix:=20=E7=A9=BA=E6=A0=BC=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E5=90=AF=E5=8A=A8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- launcher/NapCatWinBootMain.exe | Bin 29696 -> 31232 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/launcher/NapCatWinBootMain.exe b/launcher/NapCatWinBootMain.exe index 813f342766861ad90ee61f1517c2182e8c81d704..9501691cff77d5244e000b11e6e43af0e14250a0 100644 GIT binary patch literal 31232 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 M690Ps*Gl030XV-{xc~qF literal 29696 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 N<==x6{`boG{{Uzp&{qHe From 672ae8decfdf698d0ef198bdc1ac1132151a95d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Mon, 2 Dec 2024 22:08:08 +0800 Subject: [PATCH 165/418] =?UTF-8?q?fix:=20Once=E5=A4=84=E7=90=86=E7=A9=BA?= =?UTF-8?q?=E6=A0=BC=E7=9B=AE=E5=BD=95=20=E4=B8=AD=E6=96=87=E7=9B=AE?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- external/LiteLoaderWrapper.zip | Bin 86771 -> 87700 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/external/LiteLoaderWrapper.zip b/external/LiteLoaderWrapper.zip index bae1ad15a5558665b688f1b7576a725172929d09..3dde2561c362d21c3002a0624561930ed02ed931 100644 GIT binary patch delta 21638 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 yb{&{I>}3dP!50YswH<&93fBR#$R=G7>eKW z*7&4NAM`;2Hc%8HNPsGWg;s27u?bD!1`;TxKvgg;ZAzP^*Q|ASQFL7w zU2)l6b@{$^7jRuI6lr;=1zjzoYjxe_c8gkHP!!GooSC^z(g&jZ{eQpzV*|No?#!7p zXU;iu=6}rGxvBluMiNN~QNuS7AY>n5A0zqhPY-;Dj(vV8d2Yxn?YE~(E-Q*e)A2Ddts}x50rwIN>4URum zbbmI80M{<$4CMv;p?vf}VydgOSS%(a{boj!8c0Dn9%LD(GBi><1TH%{t)KP7Ynoci z5NRKwuT+pb2B7D1yGjU`3CIRzPaYcx&skYh!kcR2csu*y%^qA5|9^f2e_|r2zH^^3 zn0^}4$N5L_EjMTdpUn`vbeXBZwA8dr@PD37wMicc(uK5hKG9HX^}ZIc23lrkq|fx6 z7bKNXBB+JP*8;j}i-6?jrVUdBDW*4bG-O({S~etyX2w9KP3pE!KHn8-NjoPz zK`);lMo8nvb%qq;iF*+ZrSk)1Ii%*xV6GFIz&5-+Msc=%^SKSPLW|3g1*u(-G=D;g zm1W%qS=-tK=~zIwGY{(pJW>AIsIF3L;MJ}dLn~hkn0BefD!m~{tpVMdJj%Hz16!FH zib(pm@?~CcD>Hd3qrI=HQC`8CX(t1^Bq(j{8j6koT9DQmili_UOInlkWS*8)z9AT2kP3*JMiCWq;E z({jh{%~ZDqT(^siG}gcpA+aplC(U7y9V=-346FroZ4Ug@4+fk9shL zBJEz-PY=ImsxnO3P`iCzZNc~SP z7*PF+=2xKZZv*8E-ZjZFHh*chwk}eThId*(w2*f;Mev&@30Vi~QlPSY(@bQh73mEV zyiJn?Z%2pV6MBGLN^?M03#N8l9-fTe0{uj+;HyM~5)H}AxGCwaFMb=KpS!J6yG{BE z?8=^XShM9g_S5@yO#L;2?-s2PdD(D;Q+tX~B0BFk|!8gYCX5e>w-$=(|1*?ZhZZl?Fk8 zA({sw(4#~h&GN93D1U}yBdOEm{t`q$2UggyvP(TS>0gTDYzQ4gQMLibQ1^W5aq7ax z(CPUD`^uWczP|FaK4a+N`N|l2K^a5yz^Fw_C{n4dpHbgp3mWzI`P8U8Jn^&*>_*qM zXuy988|OCeIsZzBP&w-d9YSJuDB`*K{aWjqA8c)s(i-=j4S(U|r+r?p@7$&M&W3)2 z=id1^ct+k7HhBIzf1ts$YX0E9lltY*VbpwF059Py1gkFxjn{(08}z+Xq+a;5V)%CH zf=&7i)GlPbuGtc)!Y)@N3*MtKmb4EcuYQ;yy#h8aoahuL9}u$Sel|W$@T;#yr<~O$ zXlA#Emd-~L*MDsJHR?Ll%u_FhnR(R=G;^!;1(7!Ofc>bPO?sJ1s?&)p0V{)tl%UT0BIO9Tu`Ay1XNO} zj1$vxa2Po@94YT#f!CiW^^TV?zY!cSdYg2YHYi4rkbhn3v`#)ONS_K>2Q~N3<&w1f zvqwOeK;0{X*jJ$MeT4$;Q3N{rMkdf6K{6X^7y8vRY?0kI-v;Q$?ZA;CLy%sx z`LhWX=&gb@2Idoa*KB26Sf%6gLvRN?b3vEQ_NnW8r7cMFskDX3rv!g4lXjvYoq}N@ zznczC8-D`2Pv@b}mfn;XgpoB;vW%SXW^Sd?e>)8*kAnC{;O1QebV6wK+Vmw{jXX;mX3rsO z7vlh4g$eEg6MBwfk6n2>Gd)*~o8FY`%2{z0J2ui|(De9GKL{f^(NiEY|De%P%GVyMc`^ zO+fckhi52|WFH=!v%}#b}1Zf`hWHdO%)1Fmb5oxD4t}zht3V(UURK%!F zc7uwIh!KMr7VN%&sVo8FG-y?T^)h-$SgeY(S*edYt7Gy9Q?SiQ>_J{EFS>dhvc|am z+icb=D51m9ar=s9c~k=J0{Sp8hH^cu9B>n1DTcx(snaBNv#`ipluW#^`XQoT@JB5c zu*2YZ4(uk_-7a9MvBhjCQh(7A;E1)P9l@y{muCbnLNk;Kp_l4 zUqR+YDrc&J=jl#IRLNY#j69sXjvUT)G397z_kXpK%2bNVxEE1!MZsHAPQ0&1n59?D z(qStO$Yb)Bku+BHB!>l@CVyT8qoYKQg*af?())H8EQ+nbSUV{A6Mr{D;H6pCB>3V5 z|6Tifvbe)cS?p(LysmY?x{Fy|u}@vWTdc+WN}6v1^r%HF!gz^ z6r`VSrE6)ak%EJCP@DvmjceBtF&52!c|3JwR82x)f(HtF^?$o48QbxGrKy9^Vu%np zc*(`X7+gFIyADTO37AhyZn6eiJse4x2?TV*a2vAo^BA^Hz`Y3|3R5M>Q1v`|gMgN9 zMDVgOiC4|)zmgja_pU*4{Zaoga*-W~?F`IN_DCdaEHW|*7zyNQvF=ctL?}-{z@+fi zD|`9j6uSC^7JuSlUYJF_!xf=C{3UxJ9zw^wyd;!{ZU7p;8H~n2apY1)7GftW?n-b0PQ{ zWA!J@0UQ=;K!sHFeB2gcf)!|dc6;Z}8&RRbIn)0zI)8ehBoFvq$< z8_nkT=-u--A?;E_DlzTHr%RAbArh=sEcMV!5ChQF?Hv}&npLX!VHDefbMB1 zpA`W;$E`V*^*Fj1|Dy)9ajSHj-YU6a39&ZAD*YW7$}8BoTp~zkVIZ*m@+gl7Kz|wx z7fVmt>9Q8f7bFS{LiVlbKy%0g+wX=-f@!}VItVEvj1E1(jQ@^+YbtzGXn^Qj0d=|q zx^L2{vyBbt=Ho_>0kkXI{FaWiBLUqhRu&!5-M~60ga3xS%oQD)?GTvSdxW&(@=qsX z*`sWYcF!T?bA=MupkF8gu3r*4*MI0wy{pTi!YMIt<7yWX=YjWo3Absbw*q;|Wm!F% zO+MPy`Q?Himw*1nBDHiIMBs%s$jS)let9EuCZ@oeN1WvCiSXQlq3s?OZh96XQ{PTt zUIrI%MUG|`_^v~0xYC^5Bf^?dq9O&V8L;|e^Q>+J8d+A4XUN92E~5EaQ-9Yp)0?_} z!{$OC#fRw-1oC4#Hu*d&u#M?^zeGo^JH3ce)ysdmfz6}5{6$tiKVK>T#SH_*6m(Z| z2uw9gzH?V{ECv?)#?j3+h$>>J_s`XqLBz@{}hN-mq5qm*Ytcp zhUHa26eb@~@<5--bYB7V`G1M4SD&f4qXnEpV5rCEY$?F0)(*cKlg1Q(1_0bcaYel>e9+jC^-*9VtNzWMk?CI2jiJ-;D4T!(a{|CEQ3E4 zJY`3ZZ-wY0H<|9{HPv4)c-JP!%=4$K1fLrUzDDk{1b@Opdt{UR{1mzuiCd9Ub62u? z8@PO%bkr)HwE5`X`!V@zI-@KPK2}K$w#}b4pRj25wqv_iX?8N*erc;uv(g7x{)Az6 z-#o2dI#?HJmtf6n^?zpzxGyloip$ZXWuO19EY~+0=AMIHBZAEzEi>bAm*cvW#>3jh zJ)>moxSnsd9mUz(do+;t5k$3Rrp)UXdCm!0i<0ZFr8#pXubj(=jqA|ovTt3b^#+}nVeztHTjiLrs;i^||mfY~dR?OmZ~LPuxXKZ-=q zIKj`xY0Cj{1semp%p0irLxiyDK|+_7nqiTGZ!IvkHW`qo(Yg1Se9PYh0pr%SdK%SQ zv;JC_@gh1A8~{SEW0AnR-gJ$kyJM2I2d&N9ME#0pOMfR|$d0S|R)?SV1qRM<^lZMu z&cb{J^OV~N^Ob<}72n#0Ig2`N+^ZA(o0WY#J%&Gi-HsWI3-I9nsnmnVLVr5bF!J?p zZ{+S+kc()@3&vv01TjG@1xY-8VFSe!+BcumY{Fr0dI7^ai*$%agpG3cb<~Y4o`H{e zGRL{+Xn+2sI&6+=#6?X61gF{9dRD9F1FL@l1SBoitk(q1>;n)s%qg>E>fP}s&0b>6 zSQpjkxy6=sSX^%P$`M^3_Q&3jehZMbxNZVNGyAQ#m6@}Siq{C<3o3D#5P(>(DWWV> z>-iXWPU4Z;P)hBPZSrC3i5@%^(87(PT(j)R=YN{JZH5MWR<~U<`>^0I2==_dKxdC~ zdDHuW09PZ|>WrW+QL#*+qX$rET}(jt%rxA(l&(U3fDH!i&$LfZ{k6 zHDpbLdpSqt9O^z>p^1PlehS^fh@qQhU4MzV8uP6!59t0pMOoOeHC5P}COO1s^sZ~b zVLWxG63$JsqJx?6t&qSi9`xb0jui3Oc5|4z$D8t^;V)HrQg714)Z)?CB zXeyhVX_)IdhY$As_7-{RdocIe{1`?rc@O$)(mVtl*;_zQ;I3g!0%I@TCN(=0AfJbCfU=U+thqN5x+hF- zrk%-ZVicf{nN{z>7_hW}r56I7Gk@|1N(WpF#2S{pd<5x%)E4;OFG%ap+x(t0P%i*I z^_&s*^*;W9z;eqUBk=kBH}%78zN-7VL1HA<1+(^h*7$dYtoFJq@G*V3Ro<|VS!H|g z!=g}=)NCmPvSH6V9(@-~lRvY2XC#ExkyeQYOBi?G4=!XqGtXARw|)yQyMH_ot~N5+ zJOmy2HGF>$of!$8iGj|H#m>a^>C8JS))_5y=Jz12hggTY-2YZzHmdscrR|+yU$nu# zSRR6|{JyssY+aWM^CZlbYmH&^WI%T%jP=HV?g|DH z5Xkp_0pgN(e~zwbB~3p{(@P#M ze&jyfZOmP#>fQYxb}ee`&wNFhbq5J<{xiiP(tRm3ux^!e|H&gcSdVK`LVe#*bbJ)~ zC5CK+N&nK@g%BJ^;4_WoblWzS?;j;ES<22)g|2j^vfh=h=|x;1YWCto6qsl~^CaMr zJ-sqi z%GNTUr-?n@^e+=3qld1UY<~MexM^q4H2oIzc5T!_z&tXMMt??HT-(Ou+IF^Puf3`3 z5kXqfO6yE+7suFGzzajH9h@#-yxwvh9oZgOWm%da)Kv+YmbNmp#&Qm1by!)i|9u2o zuQvtP>-2or?JEY~KV_m1=pLGgf<8x&CZe?GQjx8m7?ieWBIUt7r7Y`XQA3MYLRML3 z?YEv$^mZ-YW`BK2WrS+*QUO227N;jg5i8c%GV9AdLqWCy-TZ42|78z81{3^_TCiW* zMzd&zoHAcpK-V*YW$0-G|C+$q@om{k#qt^6`?gT^`4_tANg(!2tpiFr8^HHz_P#v$ zMsA3W2G5DW@~T*i57Z?Y7DcwK4>b2~rbk1b;}5mZ+J7eh%bq1$HM2jmW_|3Lz}HU) zaQy_U*MvNns_`_9eD_$o3hA7R)hB;s%lgu7=E#RRa&{g+$wUpYS+-#ne^L#Q$y&fS zqUD>$V*P*EBmap<6}q0bNehy3n|tyrR_TCsGHCWb12txJ^N&ITkE7tOm~W2O>b(G~ zZJQKr2Y<%q`_=U}AA16C^(R$Wvkuf<4Vgu@te*NLYt~!!>a+k1e(5Xgs z^R`X2HeHdPu)#7Bbn_}c{ZGL)t6m=R9(pCd>wly?q^E~IS2WAnpP;u4UE}h{v3ir# zY4hJzYsJUPxNQ;89U70*=wXl6`;E#I4~zVA;(;jV;|Rg~XZG}H1Fos2d=v4J0#!%6R(j4LWQ+iv(p~sQ{lBKgM#isFz&Cn^K-XL1yp~R6v(c_a(p) zgMS|d@3<-!tX9(nENKGtj`>XiZ8T5t&DHV^bo#Wl?;eKUDj8#;m)1yv59)%8YwCW) zGI_;W+MgAI;z$Y%sR7;ZCs1}_SkKYYAv9ME=pMP|J3Zn8 z4q3-R<;&Ibr{@`A`v8<>I|kSnzz2BZ?SHuKXz`oWc=WR=Wb4Xkk31646)`r`1nHM- zvcSc?YU^BAKzAc@;^Wy-juK^E??dKVl*uPG2mV<1&5ob%by%}d ztZ6nsO}pLOrUlzPucvrs(JpTA@b=_Xn$2eN3noc zuc7ZcNNt+U=fPc3*+EFzjSq!2Kk{QE0T4IzFBndG23ndI1$4uKRwGXI`@^NDc`>=` zcfnhr){5ttBHLj>wqdLgIHq|qA-*^EFr(o^K{VoZy|3B3qN(!^e17;)JZiI9nf^Z< z%7W94EI5TJ!VS)1Z3+aZD}R)IL1pa=*12m8v(6N1JHH+ioav=8%sPkClJ#S#b#_g_ zQzDR&mjM>EkDC+*0x_Dsbkfb!Q)Yr=(7QU8p5s9NH5OAW`h>s)&luc0SKy#)>D`4r zbpLH5-ENCowp`hNtA(Yq+|UjE-wW|8tgT;Et1x!eY)(|6(>^Ttw|^H!6N1k`#O0wVe}G3|{87I#pcPm)3jWPl6_Q&aPKL@R|2l)p<|{Qc zAbu?rH2T)>g!p0%d!F}Gs-b^f#g>~zh?#1JOA33iNB7RnQWJfaN6&jBrj%$ML$}9| zf@I_s$8f$YFce`(o_}|YK1sOoZMrKF(6wI8Hi5vHwzH~3S=9iHYxx?69iw1B0@$59 zV{yZ}^XGKuG4cF(Wbj%TK4qGk#0O{y?AI#8e{+M1o|@i;@N>=G{;dGzGykGbNKG%| z{*iH81B^q8Xz^E{!C>qmbzwvmhc5PU~wH~@mt*J!7YfaW=~GAa1||l|4M3+o{3Ps3UW;QwKV37GK^=6 zE`pxFgf6J_mKb(4$G`b{x{YxJLKNs|JMSRAgom3db21G^&pBx4dfJX3%jK_Lq1%;t zpgCOoxv^DttAAkZlmmg6n5(<-&^R==7G8wMJb#Q^855LZ+~$%wg_>J{K9d%l?XJiyM{8! zm2Y}!1YN+k0LNO+F+LWTrQ_I3h^7=Pas5M~kQ_$A*1zsT)|kaVH;UrvJ|4%$pfQ9) z`C8h-cCCt+$=ZJ?)l{t7C*y)6qE8cNk15=IHI8!wB<#}R&=y*b^=aYR4|%O{Rb_C> z!XT=`a({WvF-27wTvge?uN`xAFOCc1P5cMdQy$Y(Mwp&56g`D?CRA5U)pa@0cWr;CwQRm!qd`|b$?E?<*i7zIX%MWdnT6g)lDBt(oMA0 zY>!$P;61GAY>&Fndsu>I_NM}S4@~IbWD?vz0(c8K?ek%E5L*yPa5!?q4&P=F$Zn#GLZ-*XesP=!wSzjs>6H z;D3WYCRj$GO}^&SK)@P#uIowgG;EgBjR#Em=wZdvAf~*x6*YY0#n<^ZIIMTR7)col zu`bhod{r77S1b&osSfb`a>pB3&(guqt}a4;edfdtB~LlMn)r?_(^)RMfs1d(vg)!i zoRcZ7{8sn+Se)Bv>6_I3t)%?hW%+S1KYx7gauw3Y=f!|PTZYym0r3{P1CsdJ2-@G@ z0Ucb;CjN`vpGLYzU#2FV!PT(0CD_c@Bl>t*u&Nz=5bZ|%Ky#Tn(@^L+hdT|umW?R# zOD){8bnWN~<-LMtvca~9rKxkVur!?zGFh6= zNmJ;$e0w9^oc?QFwjePU`tPoerlBxBoFDe2Dw4is_&y-xV`D!Cau~N>ujX-U>?Jl; zbe3tC@6&6GysRAzJFN^Oi~6wBKz_88sstb;45&FY?BV`v)_ulg;DlBfqu$wK4_&0bS9xao~Hf5K70 zmt?SJoe-0yc?q_x1Fkq}c5Eab=5WOVc1qWKX(w^FflA4{#z59%Dt`{-8VxXliaD8| zOWk%#F2U8pN$7L@rqiAnVT3loB zD59Lj{w$6u1=-RCB zp0QQB1sM9wj$3V=?39RAx&TXRwOoluOf70d*|~Pgr{$_9(|`GPb7YfwbFNw(W|LmS zH?7dEy&`XjBbPX2+k8CyQ&y%Ki?80`LLkw)08B+I95|pYJAVMoN!2VIIHK*G9uqQd z{ZYs0v*S~OPj&8~N{piiRppiR$&PYJpW*JOdz&+WANlVvR$*GW71Lc{#8SIl32AyT zz?UpPd690exqs!cL+J9P0DznW0f{_9O)GvggpQ_s`H5IOf5}FE0$@HCh0nYY{R{M_ zpWtO%6s;4$+9I@*>p9Og7=x%5~YPK zex9phIPLX30P58Q%{GlxvIro4V<>N7I zL(H2&=*t1}>y$BZIDZKx?T8>n26TQ1l;qtZxJmSkD#Hakj+ghNsK1J&TU+whSX`AI zvq?>Ocz-1Ez28Ag4}Jnx*)ES&QxWIkLNrRwLg}6SFO{4O%t*~$qX6TZNQyCIBd|#T z=N7bv=8%V4ObK(KLyat%1xc6?j>1hNz|l~lQPB_D4^_mPZ*kZ9AU!k4-ZRNaCdzvz zo?#^To=Nab;YoUQMz`!b!p{_1(YQPR5!2@#eScJ}Hmxb`h~^2ibik5!+AN(k-P2ty zIx9{0d{$BIw1PCG?zAH&f3C_B-==xObkC=Aoz)(n+F*%40d&;T1$_6zS71o++$MMv zbLZn6*qsy52rW^Q;f8D^WL8tOiijz*ilQTkIBr%gf-9r;T(}tU_UP*k0+^PHS&8OX z2Y=j2W+`d{j8T)fRb}=?T?xsq7|0t2iG3(HvtRf+t9#uQ~e;?wG zv&0{Ox_`5y6+JqS*`V2%_%I|j&!0)scpqRHn;_%Q_}e?atJkx#tK6&MI@;|9@~SrB zzz2FEzD;1q^~?tSHO(`dJzo~Y69Fw z(Sq^w=nqRpwwcGbo3q;SohhJX=*aHyBzhCoP-^sD{gst@v=p{0j{9I*M>BPVpxd;j z%qW5kZf|P#P8edxTz(GN|FpsQHQnxN!r^;r|46#8bWI!`VruEwE7$Hv2IWIw6@Tk1f2Xs@YJN<=B2jcd2j7_CuFq8ti_&64=WV3VX5YTndQi^25vkEpt zDh+ASGj2@F+tk4t z5Puc5m<@Rlp&0=dut%C@L(sY6;eRna+>8h5A&T#&r|bi|%ppX1FK-5OsEOXMRbs4P zh?Ea}%bpLlVbAY5gaTX943gWyIl>(`|Lk%(hI6YA=sti^dCqKDuA)aI$}|?>2&(R2 zdg(;T9!LGK`4)SOn`kJq%>68CiS^t73yo}8WbimeAB8^?FCMoQJDWADEycR-VVw^2x}sm=!zmIdz)H0=my)P~!K|+t%lYs7aIZ znn_PI(>H`oXEV6fJ6;zoA;7#T$rN_h0m+@$J3u!6wruLiD6@)RSN*!k?!< z@!ph&C$sHKQSds^{oAzx-QUoBB?~xl3k=?N9QIAZG)%w2(tdj~yFZTimSj324|M2- zG)SkxP)R!=>}PuvK!0gG+@uAYg7ESHNPnD#Iix({Jovw;d<&hBQdczZ!(S3>rndQw zo!aKPD72qFD*DdY1v~mC1>#(G2B#x$tU>-KOGGg1MxQnssA_)Jg!rd;y(4zTxAFIf zu3kkqJ7*OE=o*eM0D{z`1G+sp(7nyELe_h(&c4s@l)720Zhv~8y5b;p0~1_m?-N9N zt)tfldR;@W>*#d@y*AS8bb3vv*J^qdV)6O}O+QJmQ)x~&O&_J#$e>6?M858^^vw`E`K*x8KPnbua1#H9Z{Lbren+1P0 zYYFod{}QAnMSsC}@JxGD&(j}L)V-_5lRwIjDbn@O3N#KzX3_v;Y6l{7cwjP@!+|sy z2S(;jC)2ra8~)s1=PwTj0!D?PWGV7?sK82eUT4v_f@II@eHZ%%wL(acXidR;Knt|) zrW2Nu6Wh6k?#67x)q1Dna4>y0OQ&FZJWEq~jKs8mn}2}mc$UUTO`QR{-LwsV9SN<7!)4(!V^-g zeAhR49*@Zg$2Gq9+1c<4kf3uymx;dpJ|ErnbbN~z>lwijO`)&I@n6Wo*DfRYp`#=y zc%C2am47FHg8W|HgKzF{KJEDfTa%Fg6Fy&UVX&LSb`D?QFm7u&{)0ba@M#X4IDC`C ze{$HvVH~HU=kP~7e+Ivw!(l#$r5vjHZ#;hd3(gmZFLL->4jVYVG7cATn9kvq9L6eq zZRY*p_1AD%&fz=`r*e2DhtV9KeU$UV;g~+ZMSuBEF0U(nynh@%%HbCr&fdmgBZqr9 zY~!$-!{HKx1sp!g;oBT0-^XAXhri|U3l3-c8QjR>VGa|1%;|FY2!|hVc-{RBx;T7} zL(<5Ajl=sm{EWlp4>0&3hbK9V`w6ed;h#7({FK2W4j<$2O%A{1Fq{8|Xd{PjaG1QE z!GEnB9^&xU2RS_sKjiSbhj_m@e2T*lIMnmsAZ_J(yq-gW!<8Iv;_xXB)ttWad2CDg z{iZ(mU-5Q^Kg?hyzu&;&Rt|r{;iDWr$Kk6SraT-@_rpHFp*ryq2Gbu2&u{-ZgJzze z$Kk%8hvPlb=l*yfIzQp}J2`xk^V7la>wh>*=5%IqIETXm4qxDSBEP?t-#^Of_3-;j zg+9moEziHB51*fLyk|LV<>hbk`{n%pIKMy0;XV#!r5z4O^LB=Fc#-GF_LWB;ee5n^ zKgX*;vVuWY(CC*y0qNbYT*SZGA?;a$7WpSy#*ySo-t*>_0>nokrt3-Tlow!9;MfEDZ zSW}~~tf^i_8r*}|FDZ88PZX0`1b?2`MQTV1aS}KD)5Co+5lK0jiN8_|9}AQth70a< z0hR)$QWjp$a_2z(3Q`GJrEo7oiGLpGijeDqtDe+`wKuh&{B9!)0Jj#}DyI0e0hW+E z0lyk3u7DgnZK0a-8qT|wn1Ktk`LT2htxv&&LHU|jZBBu zSf7>y-3p+E6y5MGgVqtZg0@>j>LGVIaOI)>MQ%j06rc<8E1R z&bngJsjqdqsw&)WFm*Smxqqa*q*g!U#?;hlgpAt$iKNKmyd*60-S+ZUMNT&O$6y7> z#R;$mx@NO~_sF4|O<| z+(GrNj7J;T$r7-NTq1zAu zt{7~s8Z5G$<}g0LZ#x3NcYt-9V0_`q=zKJJ+w^)M!hDfRpN!5Z*uj7C{6b>$Q4 z^_bV04fr*1Cs24N$flIG^nLO5VRm0pT~}OLQL5+jMQx3{B4joSequNb^!fDgc}1Ha zG9Oh|)|3=8GHt(N`L$0n_`N32@9{D29GG;Gleh02r0M@n{C^DgsT2q1qnz{Cz~M#? zw{qAR!oTu274U(pJ`!S5n7uzNAGp2Hwu&AHA6-r7jzK@Tx!Dv_-j3;-{&+}Bq0M&r z*q4){V5B-iO2G&0rgf7xd4k;UqhuB|n*oSW6Aav>24k_E%2T!5b zm(RZRLi>XsH5s@+q5Os7^`#d|Yu`>7r!Kk{81#eq8Go+ez2FKj-xu8 z+H6W*6`dKnA&i?rf_aA2R7&S#m6F#$k|0K3)qjh#x|GuAe`jZE1^!(d!;Lh{$@rR@ znp#o@6?Qn;xSX1sUtlQAH6hN@p{7ZC?1581kWlee@_VK`m<5Wy@6UZ#2~PW z?0?OxtEm*LP{|}p?OZodr=udYm_aGLGXS!9r_jIJ@;eWV|hP;(-Hgfsjj8gu#68^oUBHA~%tHh8> zmwrW%hwrKIyy@gJKcj9+BooDC)x^?~s)^|%R1;NNRdV-;j-V~V2lMsa#GVay%}trVSrON5yWONs^> z!TMN!7K&27gv&+5NjPKxbhSwCK=&|;^Ne^&t0C6C8ZP7E8!=Q1SrH;2jT(hKCXhH+ zbZsFl{f$tJ!b`D2Vkvyp3HbVBUVl1XjnR*&AB&*2G-_HR87~^h_|oxYeEKzHylONF zl^fE!52~L;TH7J92fnd!NTp*sUJpdfL|}@@M$k0kD@aB(svnMsu8y4&89he5Ka$j` z6JnF2iE3;-87qz_V@t=8vFUm;7TQYc7~Y2Mj2ab7M&;|eujm-orfEv7O@Angr~Os0 z0UtFCE@R=Fx`wtr0eX;{v4HkHB0@b0awCRqM6Ww7I&NG9IjSy>h{z{*;J8u6MWBxJ zMvaIiBhnMei2UK*+K!=33AOP>NWT>6-vyVu;oC^*FYiNt3!{&o{lB8(ddLgvDG?Di zAU|r1nrK1q+Rvi%(7qaa?SF6<*kLx^tW3*YZ^}JB~DS#?Px4av;aj*2pI)7KB^#wjDk9&rt3OJrNojeMIE`a zG>Kf9eg(PmGi@Hq<193{2JP!hNL-|Cn?W9X)IN2@BJiiG;jv_RK^z$lV{rI%7-670 z#!oEp6T|qS_OBsv|9>4_i+tcS)?o?JBmrcXFrD#7`@as_Spkw7W zpaD4#B_muxyB#$eXqOI!HWJC`{9qf%XZm_RUQCe4U(YPqx}I7v#w71Y#dX5~S;Q*7ZCF0?F`n#*B5fn z^abDaD54n-K7TbPg2bqZ_dNuFQ9IDNM0f2wLxBcNZ#3> zgMF6bn=iq_;N?MHJJf9m!K;P54!~;-$$Jp;QUPyYNZy|y zPhUy~{D1uCTmpmtIhVlTf6gT^_@8qL?DL;<2@L+wa|xeE%yo*3#ZsZTy0p@XYfHG# zt*NSlds{`d(?k{{hNZf$!c|jU<*Wu|d;;TM2DYr4<8nF&Dw>RSay>2=WST2n&JwZ4 zwHj(XqMB1tT{@@2VNsT3sPl6jxTPaW1Za z9y>^GxwGWXf|@&>)zFufPM5p9q865URDXAfa&JVwbJfCHXZ3vNY74Y`Ki)6$I9;ok z7FT+lm_(7Z94M( zi-?@!%KGBfZbx-ZNlkT~v81NdSyCrDRu;Q^8<=f!ECAeZBXcUMjX4I6VstDsFLBsc zx<$~9Xfy_~1(U@TT7n&%26+g91%Jn~GwI7JrxA`TZ$bp=)$>LZ4beLbamn-y=e->YUntpGrRT=-+4N z1&}Z}$sa<*guWW6q^5#=Zv$@r{Z5@hzfukE4q2O2m z1mdD{#ES1#m0HVEr9us3eb7qO6_G9K99JoJ?+3T@-R_*VR19-fMP=ppYsic>)9Ebb ztp1)=>FjfNsNctWm+A4345GcuaIRc`L;LIRGNy`wG&p!QCRu499e&TYF2~MUYt8}m zco~h+;XY#^OB zmo*qKcL)Vl4y{B(%su0K*M!h(f-eQ;!J>vK02Z=!3PDemF#)uww z`46T7eVZIA`R_K%;ELz_n%FcW9Xne?N9|>{r;OY=gK6<{hJP;9PZ>y$mr?i9eOw7R zRO=f*-;90FHW)-&ELj@Lt|Vg{ONKHcazm&~St84jN(rfhlSzoml1mvvGDMPFS8j^z zTf&vCn`pWG&y47HyZ1lyc;`n(Qp za{mzUF=&USe++eVNkNHn@&3QCJE3iq9Bo|=zsBd&&dSzqv@ZPiD_mjg*5$Faw-jxj zEZub9$4Q&tz>d3EfwLe&sZHymlGA5lYqxuMBWIuY-1iwTIK1R;a5TEkQYNRAdfuee zB9&fvJ!C7R8x$1M^fpyVk~Kuu5R!)Hix*@zY&{!pUHip;(`_=HmVZ{E;@Y+B9!Ii2 zcjVE=n9e}-Fo1}L=G3G-Be{;j;@~ug6yvyGDL{U&aTIrVJQ}8T3iww zLo*I>J+bQ_IH=sZIyZ7qv>-=+vrvP(f2yI9nf2BWjq>6p52ZRE4jwBm49JB-Ezqv3MGrC)U-Q9X(FLu~97l$UVb9@{96A zhLpBgg2eP5QIdYfq0y8P%p*67SVGXwpgQg+Sz^z_FHYI%jk!13%tn!8hNMz0kPp$< z2o=%CjJxClIX4KVP3H&OiTn69U+2?SXjT@MKGIk&MlS3jXX}%9)RSE@slIn|e$~Bk ztSiNbe7W<(1NXQolQo|_QuNRJsXGcZl;yk;R?P-mh8dz_FW%hvHJwzi!EhKopIU|f zkK4_Rs)&@R*s!}an!aIqU}ZU_(6nd7(ae~;UueHQ|3NG6PD!8OD_2zvZ|%`_4O7d* z|2CAh+o~`oRJR5BRBIY*6+riy)nsh<99n9#mc zGA|u%is{{q=^VxRW1b7)%4Fu-=cuQ63}1YOu(Vp_rqp}39}ev-ASfEy_#(!*en);| zypZj=Ypow$iRh<^C9B`7-@3mijK55A-JcOr^~KfeRb=O1H3{sq(Q^$Ii|Q|v8k~ps z`-n13rX?bDG~y>3J}>dFr5a$VfV#_{UmgcCt1+LrG(C0-%Lfkb>x4WZ+!&XSs~Oj# z5T)IG=cRTNQO*Dpg1k&}?Hc#`)KdmENe|*mJjTrcLz6Zr=c2>WWvmAcH|^9N!fG{W zm&81nGpJePeo?lI(j=ETd$010u>tOk4wq-v0)~-X!vlh>ew* z5$o7;*)LkpZ}7aCC_mrY3o6_2PW`jlGn-~2!ShhX*+TBkiE-NgSLy<0cBshG980`r zOfrd1+82{Yqoc5OWD&_o$$>G8Q=;26DiiW}fl+V|nJdiO+oVhhYsm6h%jQSZE?0?eMfz4=aBSz=m9MW|h;2#KC zh&ShSAL2iC_+***z=gqXu5n_tCYigFC-SMyjcGU7&`+Ys+B?$tRR+*wqs2i+Dcpp8 zR{fx9zP353oX^Wslj7-3pV!MgoIM>5*Y@(gb201xxREOO2AZB23-4cO(Y|rv_VdS~ zJ9Ol6ukWTYtdeRKb{yRgosHW)dw4rT-D7{!WL3 z9tVVAo<5Fc6nO`P$v!cwOwX&p7(8x^gECuw3YzJ8%bv;L3g}!{=lZN=b8Y$Axf=XH zYee$Ii4U??)ICPIF#n8Z=Hj}nMK!h?u`|Az?bwKH=o2=W$}v-bNux>+bYi>&-JqT- z(MN=V`;eV0*D=>;1Ha82i7VqDQ0Jla8bZVV2M8qS(EZc1(E$s;)Ts|_0zG{FvgZDc zy%XKheH_Va>dGs&=;=d@qxjrdAwlX-w4&&9vWzY&|N9D!vFdHj_*daZjx$?}xf#>3 zKBux~v}B(?3heCk>kM-?;H^Gt7`s=;i6J}S%sKpVd)D-){4q+$!B4q220!YI-VjLM z&PM%oo~>VH{Bv`QPk!Nx4qexU1|IrG>nk)pi|Hb@0;SWZM~W=0c;1kjFJC`?{`O;~ z;-Z3(78qP#3Ww z-zY&{wNY2uLyZ*LXkmV=(9fxDz567bpV~}93fsJ?SLya{=Q=3x?aKNQto^Q zk2{aHT1*#cqz*_OX}?}NWLXh-Y4MDExHey(`v?95Z$0~4yKPej_~W?-z3ftPF;uhL zw<7jV7N2p&AKyCFRpmEdY*_7lynJ$Zrc$<$AuT|c~V(jvkrq( zIlUv*e$?aIZ~H34C#D|t>W57C)P&Dx_I?i0p8UDD_ilCM@usPyypgkVhQ&hG zv!$tLOBg#VPOdK#o)gVx5Cr8wkewBlO%&onpYVwVA{IS=h~BVZXvJxX9z;ZtRj%ON z1vUa+CWrY*_Kdv9uL!r|*u>D|i@Xbo7T(JOOk*Nyw9(*Wf-6Q?mRkzW)aAT*O9hMK zcRCFL7NxQ9!HEDYnl$`QVzU^NvXa zTtwo9vm}*S2Bz^+NS+t{rR1L+EWsyoMnAf!%j>Pu&3oT_(Szk6`|7M;uI8ey{*S&zBtCdiSBaOIEA!76^&se- z;9M2d@X7b0R~l27HS|pWCH`d-!m5A%Z&>2vFevGsfj7Jvj zfwUk$#A-FOd53<^_ky(p@>X@8W@LHM{|K;UUquGIZ+g*9L(0Duzbg@KFh|%PwpES? z2916wl9vN}i)aCd#3mqkN1%j(AXw(qCgg}C5RpSq|DybTAjKdF<}k4yOEI~MNVX$T z!J=n^AuZ?y=2-v}5QVcBBoW0uU<+36K7{m{0K7Om1eil>X9X~#*wt}G^h^PsGrk6b zNF;USC>hA5*#I^CPhZ{hE}%i7Z{fg%=lLR2i#>e)KbwJ37f608;Z7bPUq65uiB zeM}PEs>}&j_^;tWcZ2Ca$@I_qW+KT;u`x{u*$Sv)l*hjMY+&x*ze)dYg-T;5kSQym z#7antgbF%LAZ8?>g~~*bP?>@`0=@jf&dY)0}7}T!46%Ei2yj?QQ^Njb;S<7 zEw_jPq{X}4$bF`7=R_6zUo@;Ms@ze0XW%tz1F{X{JYyi=(`3Ukp`FC)~!_g zX*a4~Ee&8BH`V`}6Q3%8v;37-{3`8HzXL2xg88 Date: Mon, 2 Dec 2024 14:08:36 +0000 Subject: [PATCH 166/418] release: v4.2.11 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 374483a7..aa35518d 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.10", + "version": "4.2.11", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index d2ece823..354ff82f 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.10", + "version": "4.2.11", "scripts": { "build:universal": "npm run build:webui && vite build --mode universal || exit 1", "build:framework": "npm run build:webui && vite build --mode framework || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index 4fc9deb7..44fb919d 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.10'; +export const napCatVersion = '4.2.11'; From f429db61af95483a153780ccec649d46793d6d85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Tue, 3 Dec 2024 17:16:58 +0800 Subject: [PATCH 167/418] fix: #594 --- src/core/apis/user.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/apis/user.ts b/src/core/apis/user.ts index 2e4a96cd..cbb62699 100644 --- a/src/core/apis/user.ts +++ b/src/core/apis/user.ts @@ -181,13 +181,13 @@ export class NTQQUserApi { //后期改成流水线处理 async getUinByUidV2(Uid: string) { let uin = (await this.context.session.getGroupService().getUinByUids([Uid])).uins.get(Uid); - if (uin) return uin; + if (uin && uin !== '0') return uin; uin = (await this.context.session.getProfileService().getUinByUid('FriendsServiceImpl', [Uid])).get(Uid); - if (uin) return uin; + if (uin && uin !== '0') return uin; uin = (await this.context.session.getUixConvertService().getUin([Uid])).uinInfo.get(Uid); - if (uin) return uin; + if (uin && uin !== '0') return uin; uin = (await this.core.apis.FriendApi.getBuddyIdMap(true)).getKey(Uid); - if (uin) return uin; + if (uin && uin !== '0') return uin; uin = (await this.getUserDetailInfo(Uid)).uin; //从QQ Native 转换 return uin; } From 491a79ec9640aade86c26cdacf71004e3a46c7d4 Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Tue, 3 Dec 2024 09:22:43 +0000 Subject: [PATCH 168/418] release: v4.2.12 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index aa35518d..25b02629 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.11", + "version": "4.2.12", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 354ff82f..5a5afd73 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.11", + "version": "4.2.12", "scripts": { "build:universal": "npm run build:webui && vite build --mode universal || exit 1", "build:framework": "npm run build:webui && vite build --mode framework || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index 44fb919d..1fe967bf 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.11'; +export const napCatVersion = '4.2.12'; From eeb27d38bcf697a9dd0b7e7bfdd51a84055a73e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Tue, 3 Dec 2024 17:33:13 +0800 Subject: [PATCH 169/418] =?UTF-8?q?fix:=20=E6=B8=85=E7=90=86=E6=97=A7?= =?UTF-8?q?=E7=9A=84=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- external/LiteLoaderWrapper.zip | Bin 87700 -> 68555 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/external/LiteLoaderWrapper.zip b/external/LiteLoaderWrapper.zip index 3dde2561c362d21c3002a0624561930ed02ed931..ef57db0fd3efbd1669029dfc605d23ccbf510984 100644 GIT binary patch delta 1939 zcma)7ZERCj7(Va4W!}?#Mc--NNe8u*7q0M%6)LfYt4u?Z$eUa*#$Z#ld)1BAq z%}W>#t^a!1I#v}5olmlOE$7^aE9N;ZOJC^f%6=IsZgo6l+Acj!XWT#^#XadG*xQYd z4i+bMPt0`YR8{cSV3%9Xyp8pC52ToM)O{nZr;+`N%*mHtTXOVEoRy%*dy3QphjLlT zpM3ii$W#OCq{Y*Dn~rM2*JTiRub2mU!* z1ofK?t(f9hZQg(T#GQ3oT&;U3)i$-*}_yX=R^uYhYBlyH z@Zg@gN8CO*w=}slsONIMqc-<5lEm~;r$DKiyin)_Qd+C-k?JPS?A)!9ec%AroKmh^h)&L-9NhUac3) zys9IW8^`V4eZ&xe`4U3-!JbFSx&Wk+lBJL(A21QldB^gMQ6EvLG>4aSQB1cPz-U&0wZ70l?cfKxo3(LVHpYG%X{AQw2P|lT8igl|% zZ#|GBP)7yKmGZWerV8*$`?r&m72uUN^^xRCsF74VNJAwQn5dJO0@N`D)b_K|t?S!X z{lD^O$7H|X|BeexysTUot^NiZYe=&Tth@tzTwsuFgn>9>R^wwWv*PFmVBPwO@!z=r z%45_MWeH@E)o##Bv-eNr%p;wZkjBME+*Itx1LS8n%;!_;JyfFfASw62N@?I@a>xTu z7^jvyC&us}M-bj$WSTUQUq#o#b(CQlIJsCW9DGm(dO37VpgYP8u@>aLClGeo=S^xT zUh3lJ3DV((6>{xKgpYXAafUNnXql_2mg)V zYNYlCr%*JWT&w|ytp7y-mpAg&eN5i;n*bJfa3GDGT>@Fs?!U+nOQ1kABaWR*E4}Tr K5Nf-_M*jd}_n86! delta 21126 zcmaI7V{jnd7Bw836Wg|J8#A$!$;380&cwEzOl(^d+qP|g&wcLq<9+K^yL0th$5J2?DK6X8BK@< za1$`ySi%39te0~W00sX~jtF<5|7BgfOZ>~?_NasU7hC{bp#K6Ye=CT8K~nH4IQTz> z6CA_r{+-wl+W`9)3`7R}mn##E{ofitW9a`MKFeab{%;3)VYmr|{qPB>v5fyF6pej` z`q!&Kis1h;^HK!=W$mU!!u|^!@`AwrrB}3KC!iD(|F0x`5I(`Ekm+A`LZK+!zhJqF z`oC_$Yxw?GLfDUxU|+-VFEh6$0Qz4*(Gv7uNkuF7|4QK6IR9mdwb}gl#?*Hd{`YQb z_gnsVW_VB;{9g|42;Q-U61CkRfG|8Ls=m`|Aeuld1A^ZzDdo?(Lccg@BN z9RDlnT;Te*%F_Zg%D*hoL;n9|VIJWn_#Tq|%Pc$`hxr#cT^aoMc`w|d{A)hp_$4w9 zOy)nqT15kD@XnfmI7GsPXXj?5L`7Yt$#P{|9`Uy7ls`Dt@>$3F-$n?6rEo@!7{5ccJ!l3I9 zV)BObrMZj@c<$h`A8r#rI=|DIJXzsaM^03iR&Xt}S}wK8{!u8R;NWPqox?2|IVfXM zTTFGtWa3a;O6Dmcr=m)QjLHNiwfdUmXG=BSo0-hxL2#E3=+n2wlZCHUT}gUJ=%Kdz z?5OHBY1y=ZJ8nTMMpN7XV9}mCI6LJ>vO0>*%}70qx~mR?*PmaftIB+gzrs`k8BK$) zYl2EztAm-qu^=&q-l&I+#nV!ijTrey88<61ReM*aP@Bi!*{Gv2oS7GcYtmR~C=v1^ zYTH5CHwTtWuTJ2{D3erf%1kO`ylmfTY>zy-dXSR=*bq3e3uPh7q41KHQQ38hNFR5M zl969Mjdcba*8rT9iObFP0=fBy8>aqUB5$;`O;A%EcgrP_Uv~MX+GvoxFekNFlNT|+ znVJnv3hHS1wXYZEW~P(e?$>3^z7ioQ?X=Gmf7_Pd)7s8w>a%oL(qYR%{FB&s$$D~t zVMGkLAIo?MSWIo&#=Kcc=qjF;<~zk}md{LJp*(UfZxPt*ouq#AiJU z<4xz(&N#`&bEuXTCgmF-V%yO{T{d%W@oNF`CIMkw!ubO27l(=014*&Rv0hH!yHCSh z{~GY@KY1J&QEz0X@`=Rfg0z~pvTmQlGQ{Vnb?abE;b zEz6>s2qORJLXz?2F?{Ekrk)zPyd6*_5a4+1DHnk5haCWOty=$;@+DeP#Y8INadxI#K!B)SKA>>b4e*T)5gAgD%Y@E#kn-P zB)L$~;GSy8f@)AF+^?sB_}JEtWg*QUDiN$Ooi-aWaSJ1okGv_I^VaXT4-rdrAAl6u z)E5tk7JthcPG#8p;StTmR`6zV+Mo`rZ5h{bQ5#EQ+P%!Ivr2@rPXT;O;LHIehflRh zUMkTF&oMu2o|Ic%547Oz2Grt#4~UUBk(B+6t)&DXV*gu=9>jveoH>RUCk|EDw>D9l z*HW`;J;AvGWNf)SqN0nkOOl#sWMFtKhTgmA38N~gdzof4E7#Q zBR@PA8U)jkQE71RYy@T%w6LUBRgNC4AKG^L%enV z6x;7pl-<)2ad;27gKojh<)I|=NG93aoUn^*4086EsJHJGd{p>8J1Z_aeW#n90ZWyu zd*!Q!c4h3-sCY>Wg}eFO4brA-~-GCY(doc10TqKbo3V;0#5?DsP(w;GsDeWkgIq zI+@i!?Uc|@h3es2P;52f?`{A<0=eQ-DYYmmU^sR)Uwd^VweX?EE-=r8neL70_5Y7le z+U8f|zz^~f__CbB`Gk0Y@v7u!r0;%8(vQ+kGycdcW+Q-`a>R~0>ruMx!nIKDzErA~ zD56#ezEv= zBmwWAX(R%P4Jdk^{dn|q7U=u(k>s1W#E(N>_?i$-S%IU!m)dSGVBN0tlJ4_PK05^U zsZZ<2%2U9{MX1*$+Kf}R0+xW3;$H(8fhWfMb=~vUlHvrW`Zrret>YY)HN_$DKhJd= zZ#LFqVS3piU>lT1omi}9WRdC5W4q}7pp9i!4Wzc1-K3Kp?VAkP~qE1+rI>vd!f&_EqYKURU z0+Qeu2-!!LSQqFx6E%11LNRdIAn@?p(kCI%m#OdQ;B}(^;`VGh)U%;2^HV)#X6kf$ zv5D}(oDEFCwb86DK;VuRNivY!rFe_lBZJCNDQaq0zoR(Ehr$f@jh4$#w!p(*%b(^1 z4-X56?D&MEck>U#JSHrGZg$sG>-Ch$^D;g zHDDMrdk~VaE=?WVtZ#pVeqS$dln?PhK;>`7xrB>L{TsZ`C~{jHoDs8FE|KrFejUfU zK4CiL`N8o@_9S0a4A(6ZTeRf1P2D z`&23DJUH)cd0Im)SqI3V;@c4_G zt$cey`);WW%#&b@5FBkXZe%(}*fU2Q%^mrE)+SG^!Q~877N$>B_fFk(y7e3N<)vz<~ov+XwUs zKU?mSAcz-I=I_jMcn5bJ$E%spa21Jdj#i&eF)n=YYYwFm+Ov22Xy!M;lfy;h+R+X5 z)|B0vgr-PgB&b84xmH#Y^NXcHbmKFQ*~8>cgtbqo>*jifVe8r0x=n1eF>XNCzdwU~ zyQy5pd}bceSMSb|zLJ1M^<9V#!s+@T<{6U#*%MoIMdLO$+LqgBh%l`?j3DjGIML;1 zfm_DQA6;j01HdvKcjNPJ{^4#AH5zA-xK$Gf7{vE_fioPt3PXNNCk}IqZL`ZEc2K~E z9m!$h){K+lZ>G!f!Gcll76p{M&Mng&2Z(7~6t~*o`Z^Q#c!k-T2?t@rC}Yipv3O2=7KNo^RxOpKVyAnl;|&n0rfDf_(4%g&DuN}G)w@0eJ|rT@X^bf-y%7)D zbOS|9?rh~jv1(?fK|JFK(@$krwoaO}3XiE!+AqOIpjCoW7f%scgn?o&E(ch~4{G-| z4cz-#|J?F$!BwXh5kaPlEU#B01B-Ft;f2=Y{b#=seWb1us zWx#^jena8gVYzdZRa3#fe=V5zbVDM98hD|3U=lU#Ada|^DN>PdJhqnn9+- z3oB!GWfwM35c@0b?EpHBz_maqIZy|U02)N`k`jP|M$wI4LWExw*%X^>V?b&N=LGsO zYQSRn(mhdpI|!Z_x^KnYIw4!$G0nA&;XIdY-yWx<{Wb{waq4w*>VH~(_)vtXyH#Yi zgyq!rfPtX7vt2byYFm407O=0!&AH*c^lJQk=y^y z6y?oj-)sqM-J4FZktH{iSCjF-0UYila_3*G4rxCdyFjh!^x^PdH)ZBEGsQp79TUfN z8B>~CX*`{wXCj;7-baip{=8)@|Hh5uHh0J`)VAwEZ`FtOZz1m=;0edOlLOrY9bTz7 zfI%GeUaEd`25M2h%jrH9u)Q_L%+(JY6%~jf{roNV>(7(0@uOeZ9Kt^v=(&Fc?nWQV$1*Svg3CX4Xl5HI-B!9eSI6oFJngz{f3Mb z*~Ngh3nQB5$g(N&EBZ@ae%ycD+iz6VdC#{MtTWkRu@A=P%@9E?xR#K<+C5B;v<6 zKc(8mB}xbICp;T!yFCbPUg^ttn0AQTE#I7UaBsTdtr95xQqF7kBt_qNlO?jpE7*2J zg6I}xr~7Osh*!Cw>~=;&`a^k}ZAdIb5dc}rS6{*x$U05pP9lId!95f3x0KPMN#VEW1Sh{`F=APxKmh~Jv&O;7!rFjc)>NUy2bY>w!rNK zr*5&GB>Oq^G08cOb}Jlq$!t*Z2Qeh`Q1E@?8`!gqZ?n?RLTENxai|8V^_|%hl$IPE z$ow1fGMVaw+{Z0D$-ufXI=`aVFxQtM`u2Cm5Qp+U>-cvq7V(@)Vq}^i)a9Jrjmn}ZjJ8wH<%irxp#u`k2RuP+ zBIL~<#DxWcnR4@Wv<@GYY^&&Tms(21$^1o=9&Kt<{O`P~GonaX)#ih`g8hBBs+Kuk z2$8GkRN!i<63qnruF6pa85>7ob{(jx9qp}0H}{9xQgJo8tu)f#36y-qp@5KPP5dp9 z2U7kY_Wa;JldywGl&E}uMxnvTeKt>r%*D|^m9<3)6-Fydq=Uc9@yt=0Ub1I8K;0=_ zzkk6U#$;e(GX1$3jKRJe+D_%N0E==lo<}pu#x?F>zB+%%mG!gv{yh!wKT_3qj#QUp$J?X#V%l;;c=Uva9i`YM><-8|{1?SFGA9yjv`HeGhE zfTTZd;U+$+D32yChnPc4iz$8{{gR*S?8d?9z{&I+l0y0#$KovDbglqzOp7CaIbLDx zHhFp+3~(aqv|>|$#}xe`G{8utfn>IuD|9lHou}Chi!XRwO#oGUumK#qMn-kSPgqif zn(w!W-!g%)N$ZP^*aWoLGV&)kTipF3l_@jJEabHc74pDuAydqn$1Hyq?WIk|!M`n^ zmfx%qnXVz%H*>5p+PQcsWXTsGh>E*-A>G5jSdmPk;NqBFeunVhmgY{E6wSG0l!poq zyfOa;zOLhwfcX^3I1F%53BoygvVQ~n+Gu$}MAMBlbKR9a#BZ^fy~j>Gv6RJKFXSqq zku?v`QS9-&Dk&nJ{>z`PBFRlQiv@$|-a*pm4#T~^l#g2k8F`>?edEZH*`1QHZ-w-t zXcP}>QkDcwy4TgqxfMpvy16<_e`0e55qUK=*y~Nlf8edCA`2+}7^3M>r+Ne}0FP+4 zvHB51wjE$_3tw8x+zn2kcOGJ28^E+_;*7@66id3B=56J_4~*-+WBllT>DRkqZ)ED0 zD1Beda!Bpr*i61bRmgO**J^}&$0(I&k;vz{{;ibejvxFc>|C}8PNs>DNbS4#og1Q| z(NDu10Xt?q-vNNa!nw>RhASQ7_U3?sw(WS03N#P$QEPp3c&$F@G5n+G*Zayj^; zZY@UH1e!Uht_os}EXnJ;2US}Gy(d0Sk4rTqQqkHs6bH~o@28$&SB3sCgzx&$A)XdM zGqDmWxrpUH?;UnZ4NLMe+h^gA0i6{;OQU^p7)i!M-1K)qm;F=`vo{$BrW8?I1rsC# zauPS3{QIxAaDKRJzpCm3Smgu33|ExL!rawdqE0>X($s>`oHw~tGg^s}3iHTK2h$4{G`X*{#Hek`y_0rN z)sgnY8#cyooAtuA5q>LzmCDPrbA5_GN1aZI+l;|j2;bB~3@F95m7GG84J`9oybOv!dKkbJ=BTc51d#-Nv zs%jyeP&cVKeM>yoYOD199HKEY>`k?jh3H$V4f745-@DLz^R1=*-&@i)xJ%9WTTeAF z{{W#Ah;65usJ7Ch-lyKy1m@dIL{MN-hiUA+k0*9-`#R%9HBqlR2EF5;)+bFR-GkSR zF0T9DLe`&Ns__P@U3s;odhu^yL-}b9=UnI^ZkGX~PHLGFueKF1MLmX_++yQIfp?XO z0o$l>sZInKPK@@-Ot$DqqpqzC;4QdW41jzhCZm*v$9@KzfLu2u73rhdf(w@_!kQJ* zmcmufgTLn^t$B?5r)8Df5dY!JwluP+SD-`%01 z05_;eMb}J|j_sk)ju$}WePNY=lxVrs`!0Lam8gAB?jaN zBR8D*m$BF@2o(snSff=pZv~KDDa^ zwfvR}ZkI05j#KIf-PB3xVfPAxfpGcWFMQxAq#}vNAoR+Ua{+0@fpWd&Or`rI>pMk- z)cT4>jUDj-(2Q_F7J}y`&CI>p&;XivRguxLxry_?+PPX-;S$@33O_xiZoBa5OmnPL z5gj#;l~~IoGUWo_xR@kn&P6@U(9z(tUK!lM7>#T1RAV*ze6^J@-kcxLOi1qJP zrV3ED?vE4Sq#R6BrSV_XH}G^Zg9(FaahZpZngSwjNX)N@wgXOP6g*`fj{$-@CotOr zQFjNZbb%0DK1$k(TEK7UGJ?V_*owU=w2dgtx`Keur^lu|srOfNm<^rj&(am4xqBtoOZF{Ht>_v^7jqVrcDje^a4! z)TjDdk+!kn2!Ja#2nF!KPc}I+4KoV^Dgzy8qJEw*ptcRaJ*bc&!GNKP^4wtNuY+w? zq#*}pIRD$VDUlG_IWzwr7E`i~tKv7@mY7TfO?x}*yHI2JgGegwM$IpLMb(El!NBKQ z{x^f{<;X)@I-BZEJKOx$y&{dr!5V%q%Z{Qb^2OLx7L+mobc-&Ll=MVL|2WAO`p3>HVAj#fTIW$xe7Y_y z*$oXM)s)k9Z7c$E$qc6VI9Ulkv#*Au*4EHM!=azwkjM8t2%xivQ_X6`wu8}DQ+2mp@(kK1LH{nxxPH~hdb!H=n@iKX z{(P#$`vpw-IuT^U`?p>#J?Eh=Dk3iM&Eo6@Iw6xeWGFa4mi_~>>1k#*qWnp%(Bv1P#@ zrYq7I|FlQFkk(S&OC!w?l#H@7?#W}KRC{uck^uqa(5_8;%%!(`1R9(IwRCT zN$9*wi<4cv_jrKb1qX4;N z?2?|PCZhZvq2z!y(cdQ%nTjPy3a42CJ)k1KSfV0+){^qFbYxxR$jpz94{m0JN#}hL z#2|NXergkW@53MZiu|R2+K{V7J!-}OwFGo;!D79>IN%p_q}&bc)Ir}zl7%-vp1jgh zVcwqc1_ipefKsH_w@0$(jaGCHu-WDotrLSnB#Z8Cyb?DEE=AA-_WZwYC|sKvB0zx@ zWTcny%2!b0D2e0dZ6%b|>G`K&7EBezgFdkK;oS@Va~?-Q9AJ;zo#B4_X}Hhi34?H z;6>ap@@2XP8SgBR@t^FrOihtb_kqormgYsq$bC}}&CfUJIdzQybSDjUW_Rp((R3mH zsc66tb&o@E`!PF@U5aiNT-xK2dL@3*JNWKRhYIJKs-Q zK1_4BrJme*+baAV=o_9q8fq@h;#CZCiU!d}x*u5J%m~?(A}JmTViTa6ch$;tTPJqb z0`m~r!{2|~P3hMHqRe(}E4w_975tJF)2A7Z@7SEj*+{7ni zzF_5N({+<>K6#40ctKZM=EIyj5}VuEEO$LD3kuy3f5mBR1{_I}1f_?K>AH5iChr4& z&_IXh$2+w9{GTia2zXT0&f8UK-h6)e4E|;_>zWaAkJRbeF{b>J2tM2DPMa#k`tj%Bc?`Ku+`&&epTr7J26}Iv{!H2kkqR;u!K+fL4;2+}-E2v7c*P}oV zf$3hzbqWai7~eg}T=c~cv15`G$)Z!y+0r_^(0h46`5@z+C-u449rwkMIS+59?ovah zFdT)Zc*n5yojN?hX*DE5NUPzN78Z6w1eRx9YxF95_Ljb;_Q{b~h$Pd`<;$M&jD3gu z+C|rNPNgd`t*9*=8CG$9pL=ca8Ha`F5e* zQbY+5!eqks8%(&MePlpgNPShi6Zh)2biK6{uEvF3P={__Bl}@}1oE1sQU+Q5T#zDS%6s|gkG|Iz z`ztQOoPhYWLd!V`8qo~Oht$B;d+u#~{3=Ue&Yp7hW}8K|=t4IM?li#jhq9C`I?3_& zTkRiChv1eb1q@&>@d^#_)DgNt{tTt{U5EA`^=yrsgDo&bM)Dojr-<^+hGPLFaSyr2B9MbkK4%4|H%;?@MU!!p>71^ z_IL8-B!h9Dt3i&oi5umf^}+45*2l=LbWBG<+Zq0{s%S6x~m%AzLO;kR|NvCb8`4YBJY zgTQ^8r~uW}-4|>(X#3vx()J*A=1t(Qg3kA~sf0r(LYXwwA}wI=5uM;9jlM2NO#D zp$7z_6UvqAK9OXY5AenCOH0aM@|=Fs;MO$$W}w;<4~{fbJ;A`{S?SLy$=$a#4`csj zSjNIVi8)UL2+1S7pK|o}gg5}F#B1Z7mT1l0kFn77B~J@SD*T{L*mc6d z)`$AjBzM%dAad4+K^Z|5oQURO3Lo@08Ju7ZBInH#Ndc1LKB{`Xhm>Ra%5NAns^LKf_wIi?;wwkYBj6z;WI5 z6!V}jEBBtN$G=ci!=;@uQVJk4Q5ZWm!t5``>HEu=wB0`7iO}dAFp+BoO|?)95kU0I zlzN33t=({^6}V~lHSOv770C}Xl7nvxFg4mx_+sa9vDaQT!&cQR<@AK`jJtsD6;R?T z?1Bv)xKnMhsh|xJ;d}uvw{Bo~?{eDTiHDK!Y(A{_MJR^mOhewoMe8wR$WBS z#lRORk;i?qr$#MiaXFBE12Qr}g0o1gKz7%}c3l=Bd9I#WGWXVOM;S7o^%XlJ&@}p9 ztHci8;rOjtn0@v@?w2Zm3^_Pl?TSBzpdO&*c%A+zn*v!41_z!_OF_-|pnL*hxsFv< zj~Dl8Erh1^l)H-?1dwx;IX*u0^qR%Xss(-bA6;hFD6 zL#%bfgetb#q`UgKM@n>pl-^O+p5eoWunKOxMkTl(kY-P3_IlTPJ+-rOWbM3q1>)cR zQid*!+#*@Ipn#R`HZ~OQ#ZLZ^oYqHQZk03?C5mBQ3N1dtC~=a(hvUL?*Qc7uLw%Vq z@!Pd>oICH#P5F|o40Zv7usWR>Pve+l{UF__c=SM@j7YBsLK{z~DdxdJqFuIVTC1I= zBLf9o2lAY|O>U=QOY}pTDeWtZiMF#u=-ubf$;D>=UqEU)mvEIao;ZA(d;H!n@2-IC zjqkZ3k&Zrs0BCj7tk+JgN6@4qK}7269zz}_x+Ftg{Y8%K{5-u z_me+bmv*ZnE) zAc#ulg%_1jUtLhCP*2vyK~1kd%LA1-kV)_)ObzIg4zQis+l&_CL5ff6rnqS%_nFM0 za9FHYJBICIq4Qbbse37(6z02z5& z)R=9o9qPRnL~EVBo@=A0t@aC@(;3!YbU~C{Wdq&(aHz&Z=q_m-rG;jXY8`8L{1`QD$8=UxUYbY0Q&^T5? z@Y$+e1ZMzQV=-}1!W*Wv_V?GBMi$S^1dq;<Q#fUG>bS+Z(mTMQJ0g$Oq^2%(?*t%@ zR(#>xJr}pOLzoFi{Uy;oJ6nMGf@#N3FfQSedsI?0&6*z;woy%Puj}%`7Nwnc{tC60 zyA?1;FX!1)=aaBfNFOq=#&@v)VpzJ(bgy%*=6)>?;o0lIr&W@n9%(f}@bj8N%3cki;hJJIlQlm^f<(^Xn`o2OjDVPdZv)p+Wb1Wu zblJXtk?@x58RtITGRyBX)qUKF zVtU3goYQj=NVDq;MupX{kEyh_yWI2&My>bX_?rJUpXB}na7)>a#3^ZV0qRzZHlRKp~_zoSJ<_AxN0Dnu`} zH~~%9=()zhBe;RkauF8X5Gl&9?m15jSSG}*?I);Tr7bHcmT%!k03F~Ow`M&k*YF6S ze6N95LrYX(an!`O3y$xNxD&;wZz}h`Csx+yu+-ob+^@dx6P=mon+jsBHzT@t zz%VR$3zLD=!U3caK*KN~Q^k|%Ylbf4WOuP#`vDyoY2&7T`kB%!P^Iv6peiXOb3EsR zKdTSPcJ~7Jr}>vnMbsX`EwEe2LeHO&4>IwefFVeXOM2Jy6;Pp9C9vyQh&=^gqf*V z;-T3ZtV$(D;JTZo@vY3thnRs_mhq50&Z(Ke}Ea!8>cE9_FB(^G3VrD zrg1_*6Y)>bM;~jFcUPut+QVS)g)%<~JY&cEQ?0y34G|orMwarbQ4T~4d)M}p}r zz{R&K*+cLjJsjZ?(yKlc%Nco^MH@Nmg#2P2$h& zdL`zh4gZdL?R6mTEUp_9WzG?c1Q8i}Y+BKN0@QvOb|iC@U+p-bdH};aOg1o;Yd?uA zBZ^9QlH~k9AZn}+RECbmwG6d#4%r-rvR`$ZadJ#I4DLqAu^10hFV0YN=YLwsv!jA_xF0xMyEDdgnEWZc0S6fJP@l=!q|yYqP~^D2VvJ}LG&9v~DU zix*;Omjad8d+d@vDeY+MaIK-h8!yUE@$zW=Cw~xxeTw`c#f)00s{PCZh?KRqhaO>^ov$f;gax;}@GcyJ@ArkGwdaL>AclJC}u)A9_^O#wPaiEZ4OW>W^hk zH>#ZA;OvBn;5_l#uCtG6o=8D%U>`huz&-dt;O1Mb_FzG4;{Cvu}Hs~y1_%7jS{(e$B%d|#6khcTV=~~gd zH3EwboiJCBgMuS3WPw64IrAuT5(tHBq_6%NfwUjBDI(;1oqR+iDD?B|1>t=JwR#8}OYjbRe0PGU;+5$8NW|_t?&5sD)U9ty4T;?-67kP1okQ0qX^1`+U?8;rVz@~npgxZ2; zK+3NU8b$jx!!FYS+ouNbf{^Fv)7Q+QT40wL*8-q(LAsouA^k^?^Wj^k`o!CMV1%g3 z?V@n$53o&&Z4%IC_~#Hm zWO&ax2!6_0CD`XYzprDeuZyMIoK_7Iy1nUnG(5b`48te?a<~mF3bxYUY_-mdoYnDz5*Q!&%RB=TUBbapCxnUB@JA z<^}Ghv_F{~RvXUxZJQT=DzvN|mlo6iSXwRCbvaEB-WE|jJkNbuQ|fw*4_a!`IMsPR zn*|(wJN$)lPW%1lU$-KE$d8B^SEto}mu5A)6bFezrp!x{BHye_CmJM(jdie~|Y`%4OSxkPAOc zN74-iIKpq^-FSGFZ*R%Ea=gQTWk%JbU+N}?0I{MUb8sE|=%q#iy4S5~PdOs@W;f(W zXOvEmDH7N z3hkr}Hnb*WmoMV#YcEOkdKWr3yRMBNNYBH75k`OXSRZ3Zg!{LOr|=syk7f7oYHB*#eIw5N6z`LB_@AY{H&Wj8 z3g8L0j_^W9f>H}#$Tv<^Q=yywFUw5NR#-J+|GXgD`<^wvFi~xdGxBlDm%%iEjW4=$ zso&+#utSua6TYFSKM|8LDV+JDdWjZOFrGUPy$cSN*rI zOHnV}j59f`p7FI^85ZZfN6=3R2+cv+4E6?~8qm6ETw>l0FYBghrD7lTGCS{259MrE zGF@d0M0Q6E);-9x>v+j-UHlh-XZ({2H-Rq58K0EE--JAt`%I{(V0#V@q(~w~q5RH| zV>baF`!BBSK*re)Ci*K~{s93BL!q{;qg=Tzdj9I1^B%Q~gDw39{V^QTWiF_&rtXAe7@wXTN zXDbh(bNJFis?WAq6F-=n`Sc$~B-DAQ`*RXHlt!ICyrC)?A1Daw)Y zcH(l_2(TrwEn*I=C`;ZCZgpg+h5;s%-jI|c9m3uUGIDebp@53IgVS0jtD8($t9@0{ z=~+rhm`|LA_w8<&bbkR6JtOOdw&gGJ^sH0qlYc_Rz81uioGh$S$3+r_2dJGDf7$!$ z#S0J6veDBd-92I#A;M0#9{X=T#j;+li(zpFIIPj&i#g`iTgz4cVrLjelFoA3u4^_y z1*TlAi3>2g0cB}iF&B~2?a8NIO#BQvdl%u-d+uH&42T}OQy%9XXou*y4=a&gtw`){Nf6Wb^VzUQAnf zS)yv|v&lvceX;cvtF8)r8a;F&We_G;Fl_dgl>0|On>#Hei!<*%jI zc!)l7`p2TM(S{L}hwL>}?L;+n^{gG_^(mi;A#X8rk-Xu!%(iDKYj21@<=?9!cnFI& z3ZlTG@Zz$^$8FizQld-_$0O3T*usnMk*;tT0hYoQkayBbc_I@)LYr-;7^SKOqHs1N zdJBkYgA95{JR_J5eu%_Q>XA%3St%X=$!RGQ8`u`Mjh2x+T5+^}#;yD1M@K?}cv`2s5VU0h zXmR0z(8!iY@xXeh1mev|2@z)OM;I?j_@I9OR^(E%;2t88fD-(X%tgu;7v*GTHI$@R zgpw+l(D9UlCNTvmK5%4}UHXu<-1Rff=N5fR%L=zAaajvR)*ow(ms`z-)}- zkvJn*oQLEO#u#rPv(C2GY0kFRwow;@Zx~xd?wsYuY)rb4zIzM=YbQUaH6d{z*+6DN ztq335>oS>8*mp9F1`EZskVh9KBAU^pNhaT}ridAGTkpTJrzcr1JPs!VN%`KXaRl1bBhB7(_`j01(Ng7 zzeGM<^HW+*G3IKJGtPQ5!c0#LJAw$#r&BCR17Eo zwS?YL$#$22Qw(k9=>_uLPmH+842BgNT)4q>KV!9cd?8(ef4M@x2uG?Q4^SRB5f(Vm@sVyw z1KHf!Lw(%IHRQ!eCq^w1fPpn>B%J{_k1mpi>2m!L_Hd-|7>sW(chDQQf;D=?0zxo9 zK_Ssk$q8S~K>h(M&39Zs2W`wFQXsjw*WsIs7p!s6A=<}L(zD7DIQG|5G#_6RHQ`jA z#nFlf_gB5J=b$1$7>Ia(f}2Yy*6n%i9gd82WqRw|yjZBn~0;#Y5Hi@;=3b`ucv9`TOtJ*D_DsRKX$NhTMj!s*Hjb z#{XBym4`#wfBm^PZK1$wZ^$*>oqL+`j)V(;n8D!`febZDY7GbgA9cWlsTy5?W5p5FE z>1~PRJjpj-qo%Ze?iKD?Rc@zQO{@8N`7O3gBcno7P_aHl*n&`v1{!Y5SGncf{UH8C zLL%4@VSeN1cad?jZ&F6NV5IyNNFaJsNupybWZ0VDdARDEJnS|zzcsde5t(9O^Y?k+o`-&CRgT_%m8(zvfP zQ|m=}XLw+yIhhlxf9N=VM_-l19N>4?d|9wwo>gix6?K%)?c}*i(9jR9svmNO!JW4lWDV=zppo8h9!IgN#R3A+oJvQs#JgsKf$4 zJse3sg|q5*CE_i*EbRJm_Ty!yuiz0P6HIBrc^EYVs$`P9wZc5FJTyQfT;a0n(L98M z8Df{))rPSneMq#%!^kM)(a^Q|c=(hn0()6HH&(&m5-x;*d~Opu68ouw(%+wgka1sv z9yx6zq(ypDc>C@Sh&i9hBgJ#Qwq3=qMVEmW)ZB@tMik0PS%ZXa!>qN3*|5oZ`rkdv z1{YzO-gnG^)1^<}na^Ot9P*>uNX?^ku)f$G%ygh>T6Td(>=Sjp+6F;tohHGg$wzs=6j;z;D}o_4rMF4wf4|J-YR>p-*rPW}?|JN+{Rf>5%a9 zExu0$#an(0>W&`oe~#V)WR|BosLAQ1ZO*`qw?W}&;@6bEbg{b&nu+cZ`Na9R;4c{#C;eV zB&zU`8_XzM2C0bh+KyLm`pr1Y7U5w+nk^G(E48#G^Ae4!OQxM~%X}e%#neho&@C*9X;6C26ti zXSu|iU3GHgBGo#2o?Cx=Uf>6|BI>)V?gif96OX^f9}Hi~>QTrAf0B;xq&S_JDJb1M zGaveRj6u=Vj6|%>b$)vl^>RcY=i?hTF4Q27gE4fWqbK}pbn;8KvgB)VC~4K{Oa6@W zJZb_)ZzHE(B$MrGJv_%gcb?X+5NM0Z{)E)`^!03Ojd?ub@htyU)#2Hjd|Ao%vyrUs zXO!4w(?}s&o$GFt!Da_Ospc6hG09E&lMixABf-tZSGwm(v|nE(yNTMN)kcYF;@QX2 zxWZC&ibaZEgp9v(>&5c{(pdu!7G0h(88Ujh)8ZIy)ch_tJq-#Z$`AC@9zQLB-#sgP z~Tz1(ynC`E@#%RhT|+QDuIfc*>|lfxagyn-qd?rpCV->m%c4f zy0xMF-V=np&4Fq+Z9`cw#P|erRl7DSRfu1`GNAgN<8g6eYYj0x-m&lW^es8=VXFmV zq=lysZ(qNoP0Ywi_p*0v7Bk+&lHxY!*mUnyR8o*4*iFHYONvoV#7%*Et*q>60M3Qc zB04X9DZ}INbC9#0-EV<<8TgiG#LzE`8R~kaAUk9u2j&WvYMt1Dh?LMbi*~;Y5gFi^ zOHfJAX<>g*9`<}K&Nms>cQSdPt&fFq-SF&|;>%@MQ565?$gc0J|4zIwrMca! zCcFfBTu8Q{DBadhM<7jA-~@b-THs}Ap($y3B?IoOV%Zp_1jWSly&bW5UC&TQR zvzq*0y{q` z>2@)7XdN6_SHU2yWE>cA5f@T8k$39dhfZ%;zs7U$5Q!3YRjcL^i&D( z`oe1WZ}`bWF>b%1r=Bh8aMW&k+VKyC`nv^%nase?KV!xQi`K0j##NE=_IJ0oTEgZ! z#<35Q=SIiYQv2Dgw7r{FelALvQ~FC^8t8Pds$bx9itJ6?*wYE3ZI=iUidLH{o~AhYiRyZ_tY%CQKg63+rp=slUX*HLMa?BUtVg8cg2VW?SlE6Rwiir z)y96PO%+>J`neisz@Y;Tr@2V*+hCzl8&lXUP4yrU@tEI*Oz!jQ_fF)lPILp5Tbk;& zU`ho&&6HS>6HoUBdQ;qXX-Bx8je^0=Yzan2Dcteq3%MSTl;FxzbNFiZnUYkTKST zeBIgVaQ)c^YS0uV(c(RWpyQh>?PqDPQOl2T5?x^NASm%C@^Gb+s%O%|sKa`TZJAJz z=9#FM>>6+CCg%d)c5Oe%f?nKQYH?f|R*!4xy*R7^hY*}Jqx{voUu85v9oy%&CrBXQ zsSvG3$!}Pk7CY^h*Z3h?D>$KoWugq3E#!wvt&DpiA;-0W1c~x&kU%RotqT)dZ4J1G zKTSdfHg}scwuP6jqpn2$JRB$`gJqnQsofq3S8L4pBjUqCB zJ%>2cI83B2Bm!`ZJf)8UXjiiiv8s20Kl6rZjeVGutHw+SU_v=~SdKBJT6O*uXUWb> zT?<9sVVQ?ca6qb$65A$1G#fi%-8hSCMJE4gL6bS{(9+ULAI>Sj=#2~Kw~I}EA(A@^ zU=jl{L34{Fq+;u^xv43v7#j%B4&>@A#*C1=nkEsIk2N)fuaSGd)*Y%zr;s2MP-^o{eND|6r+bIVssGRZ!|@QCcwM2nNHx zt4jLY!Yum;7V1Sti;|X>DYb4(?j56eBln_GnS#>H9wpy!mQzW|RC2&ZIc+HP@rToN z)rij|uU(mZyKTs46@};CIMebm#G;pZ?U{!z23{KXXu9&`a=0ZD5=nE<_}^B4}0 zis|Kws%SzW3!7Je=QdnihOt*tH0`*JGY#FPO;9c-Qi=tIekMwGB84;G&=i&FZ_Js_ zwjv(FG0WcOo-~xUojr7yO}BSthxEkn_3FyNXeG(dZ``v=5}Al|y*ifJtkn`IxZyEg zf$jeyP&^3y2rp7J|@Y@ZFeWOus_#j@z=}7!W>w z8-5^9)=7_G1B39Bp+fj7f3Clxgm+{ixBqk>#){!rclhw>JAx1qmS3UoaYA&TGUOWT zz75Aa>?%X*4*$9%?wUhtkAU!(qeba4+<5gp5r`r;2wxv9Oekdp`0#Oif?!r&eE!~b zND?0ie>_2C-_Jo%f&vU;bfLU|@rC}2FO@&}DsYVZ|KOU81BAdb0?Fxs)czQg+W=We zfB*>3@<{QY?E91nX8}M6QZEL=E9MB|rDy-*Oo#^PkfXh zYvL~~2`{050N#ZB_n;!7^p>{|{5M(A)*z6vu_D_07CyV>*nhD#Wu~*8wkOxOBMA2o0V;T(AJRZ1KJ$m>zP=tl@TU;? zSusBKr>yb5#-6FsuZ8+cUhkiM1%U+r=bXY&n;?*h6H3p?$I{jF{JncVSDaiu75*0A wYue?3&_(y~oj+tDO?m*nQA+3-eIpGoU8dJyWZGY8Mf!7{3j~tY2k6#+0OK~77XSbN From 0b8d0e3cac8f0f6cb20e0a968296454601515cea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Tue, 3 Dec 2024 19:28:51 +0800 Subject: [PATCH 170/418] =?UTF-8?q?feat:=20=E8=BF=81=E7=A7=BB=E4=BA=8B?= =?UTF-8?q?=E4=BB=B6=E8=A7=A3=E6=9E=90=E5=8E=9F=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/apis/group.ts | 215 +++++++++--------- src/core/index.ts | 91 +------- src/onebot/action/group/GetGroupMemberList.ts | 9 +- src/onebot/api/group.ts | 91 -------- src/onebot/api/msg.ts | 3 +- src/onebot/index.ts | 143 +++++------- 6 files changed, 175 insertions(+), 377 deletions(-) diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index 074155e9..31efa701 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -139,14 +139,21 @@ export class NTQQGroupApi { async getGroupMemberAll(groupCode: string, forced = false) { return this.context.session.getGroupService().getAllMemberList(groupCode, forced); } - + async refreshGroupMemberCache(groupCode: string) { + try { + const members = await this.getGroupMemberAll(groupCode, true); + this.groupMemberCache.set(groupCode, members.result.infos); + } catch (e) { + this.context.logger.logError(`刷新群成员缓存失败, ${e}`); + } + } async getGroupMember(groupCode: string | number, memberUinOrUid: string | number) { const groupCodeStr = groupCode.toString(); const memberUinOrUidStr = memberUinOrUid.toString(); let members = this.groupMemberCache.get(groupCodeStr); if (!members) { try { - members = await this.getGroupMembers(groupCodeStr); + members = (await this.getGroupMemberAll(groupCodeStr)).result.infos; this.groupMemberCache.set(groupCodeStr, members); } catch (e) { return null; @@ -164,7 +171,7 @@ export class NTQQGroupApi { let member = getMember(); if (!member) { - members = await this.getGroupMembers(groupCodeStr); + members = members = (await this.getGroupMemberAll(groupCodeStr)).result.infos; member = getMember(); } return member; @@ -253,28 +260,28 @@ export class NTQQGroupApi { return notifies; } - async getGroupMemberV2(GroupCode: string, uid: string, forced = false) { - const Listener = this.core.eventWrapper.registerListen( - 'NodeIKernelGroupListener/onMemberInfoChange', - (params, _, members) => params === GroupCode && members.size > 0, - 1, - forced ? 5000 : 250, - ); - const retData = await ( - this.core.eventWrapper - .createEventFunction('NodeIKernelGroupService/getMemberInfo') - )!(GroupCode, [uid], forced); - if (retData.result !== 0) { - throw new Error(`${retData.errMsg}`); - } - const result = await Listener as unknown; - let member: GroupMember | undefined; - if (Array.isArray(result) && result?.[2] instanceof Map) { - const members = result[2] as Map; - member = members.get(uid); - } - return member; - } + // async getGroupMemberV2(GroupCode: string, uid: string, forced = false) { + // const Listener = this.core.eventWrapper.registerListen( + // 'NodeIKernelGroupListener/onMemberInfoChange', + // (params, _, members) => params === GroupCode && members.size > 0, + // 1, + // forced ? 5000 : 250, + // ); + // const retData = await ( + // this.core.eventWrapper + // .createEventFunction('NodeIKernelGroupService/getMemberInfo') + // )!(GroupCode, [uid], forced); + // if (retData.result !== 0) { + // throw new Error(`${retData.errMsg}`); + // } + // const result = await Listener as unknown; + // let member: GroupMember | undefined; + // if (Array.isArray(result) && result?.[2] instanceof Map) { + // const members = result[2] as Map; + // member = members.get(uid); + // } + // return member; + // } async searchGroup(groupCode: string) { const [, ret] = await this.core.eventWrapper.callNormalEventV2( @@ -316,88 +323,88 @@ export class NTQQGroupApi { return undefined; } - async tryGetGroupMembersV2(groupQQ: string, modeListener = false, num = 30, timeout = 100): Promise<{ - infos: Map; - finish: boolean; - hasNext: boolean | undefined; - }> { - const sceneId = this.context.session.getGroupService().createMemberListScene(groupQQ, 'groupMemberList_MainWindow_1'); - const once = this.core.eventWrapper.registerListen('NodeIKernelGroupListener/onMemberListChange', (params) => params.sceneId === sceneId, 0, timeout) - .catch(() => { }); - const result = await this.context.session.getGroupService().getNextMemberList(sceneId, undefined, num); - if (result.errCode !== 0) { - throw new Error('获取群成员列表出错,' + result.errMsg); - } - let resMode2; - if (modeListener) { - const ret = (await once)?.[0]; - if (ret) { - resMode2 = ret; - } - } - this.context.session.getGroupService().destroyMemberListScene(sceneId); - return { - infos: new Map([...(resMode2?.infos ?? []), ...result.result.infos]), - finish: result.result.finish, - hasNext: resMode2?.hasNext, - }; - } + // async tryGetGroupMembersV2(groupQQ: string, modeListener = false, num = 30, timeout = 100): Promise<{ + // infos: Map; + // finish: boolean; + // hasNext: boolean | undefined; + // }> { + // const sceneId = this.context.session.getGroupService().createMemberListScene(groupQQ, 'groupMemberList_MainWindow_1'); + // const once = this.core.eventWrapper.registerListen('NodeIKernelGroupListener/onMemberListChange', (params) => params.sceneId === sceneId, 0, timeout) + // .catch(() => { }); + // const result = await this.context.session.getGroupService().getNextMemberList(sceneId, undefined, num); + // if (result.errCode !== 0) { + // throw new Error('获取群成员列表出错,' + result.errMsg); + // } + // let resMode2; + // if (modeListener) { + // const ret = (await once)?.[0]; + // if (ret) { + // resMode2 = ret; + // } + // } + // this.context.session.getGroupService().destroyMemberListScene(sceneId); + // return { + // infos: new Map([...(resMode2?.infos ?? []), ...result.result.infos]), + // finish: result.result.finish, + // hasNext: resMode2?.hasNext, + // }; + // } - async GetGroupMembersV3(groupQQ: string, num = 3000, timeout = 2500): Promise<{ - infos: Map; - finish: boolean; - hasNext: boolean | undefined; - listenerMode: boolean; - }> { - const sceneId = this.context.session.getGroupService().createMemberListScene(groupQQ, 'groupMemberList_MainWindow_1'); - const once = this.core.eventWrapper.registerListen('NodeIKernelGroupListener/onMemberListChange', (params) => params.sceneId === sceneId, 0, timeout) - .catch(() => { }); - const result = await this.context.session.getGroupService().getNextMemberList(sceneId, undefined, num); - if (result.errCode !== 0) { - throw new Error('获取群成员列表出错,' + result.errMsg); - } - let resMode2; - if (result.result.finish && result.result.infos.size === 0) { - const ret = (await once)?.[0]; - if (ret) { - resMode2 = ret; - } - } - this.context.session.getGroupService().destroyMemberListScene(sceneId); - return { - infos: new Map([...(resMode2?.infos ?? []), ...result.result.infos]), - finish: result.result.finish, - hasNext: resMode2?.hasNext, - listenerMode: resMode2?.hasNext !== undefined - }; - } + // async GetGroupMembersV3(groupQQ: string, num = 3000, timeout = 2500): Promise<{ + // infos: Map; + // finish: boolean; + // hasNext: boolean | undefined; + // listenerMode: boolean; + // }> { + // const sceneId = this.context.session.getGroupService().createMemberListScene(groupQQ, 'groupMemberList_MainWindow_1'); + // const once = this.core.eventWrapper.registerListen('NodeIKernelGroupListener/onMemberListChange', (params) => params.sceneId === sceneId, 0, timeout) + // .catch(() => { }); + // const result = await this.context.session.getGroupService().getNextMemberList(sceneId, undefined, num); + // if (result.errCode !== 0) { + // throw new Error('获取群成员列表出错,' + result.errMsg); + // } + // let resMode2; + // if (result.result.finish && result.result.infos.size === 0) { + // const ret = (await once)?.[0]; + // if (ret) { + // resMode2 = ret; + // } + // } + // this.context.session.getGroupService().destroyMemberListScene(sceneId); + // return { + // infos: new Map([...(resMode2?.infos ?? []), ...result.result.infos]), + // finish: result.result.finish, + // hasNext: resMode2?.hasNext, + // listenerMode: resMode2?.hasNext !== undefined + // }; + // } - async getGroupMembersV2(groupQQ: string, num = 3000, no_cache: boolean = false): Promise> { - if (no_cache) { - return (await this.getGroupMemberAll(groupQQ, true)).result.infos; - } - let res = await this.GetGroupMembersV3(groupQQ, num); - let ret = res.infos; - if (res.infos.size === 0 && !res.listenerMode) { - res = await this.GetGroupMembersV3(groupQQ, num); - ret = res.infos; - } - if (res.infos.size === 0) { - ret = (await this.getGroupMemberAll(groupQQ)).result.infos; - } - return ret; - } + // async getGroupMembersV2(groupQQ: string, num = 3000, no_cache: boolean = false): Promise> { + // if (no_cache) { + // return (await this.getGroupMemberAll(groupQQ, true)).result.infos; + // } + // let res = await this.GetGroupMembersV3(groupQQ, num); + // let ret = res.infos; + // if (res.infos.size === 0 && !res.listenerMode) { + // res = await this.GetGroupMembersV3(groupQQ, num); + // ret = res.infos; + // } + // if (res.infos.size === 0) { + // ret = (await this.getGroupMemberAll(groupQQ)).result.infos; + // } + // return ret; + // } - async getGroupMembers(groupQQ: string, num = 3000): Promise> { - const groupService = this.context.session.getGroupService(); - const sceneId = groupService.createMemberListScene(groupQQ, 'groupMemberList_MainWindow'); - const result = await groupService.getNextMemberList(sceneId, undefined, num); - if (result.errCode !== 0) { - throw new Error('获取群成员列表出错,' + result.errMsg); - } - this.context.logger.logDebug(`获取群(${groupQQ})成员列表结果:`, `members: ${result.result.infos.size}`); - return result.result.infos; - } + // async getGroupMembers(groupQQ: string, num = 3000): Promise> { + // const groupService = this.context.session.getGroupService(); + // const sceneId = groupService.createMemberListScene(groupQQ, 'groupMemberList_MainWindow'); + // const result = await groupService.getNextMemberList(sceneId, undefined, num); + // if (result.errCode !== 0) { + // throw new Error('获取群成员列表出错,' + result.errMsg); + // } + // this.context.logger.logDebug(`获取群(${groupQQ})成员列表结果:`, `members: ${result.result.infos.size}`); + // return result.result.infos; + // } async getGroupFileCount(group_ids: Array) { return this.context.session.getRichMediaService().batchGetGroupFileCount(group_ids); diff --git a/src/core/index.ts b/src/core/index.ts index 3b318054..3cdf6158 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -24,10 +24,10 @@ import path from 'node:path'; import fs from 'node:fs'; import { hostname, systemName, systemVersion } from '@/common/system'; import { NTEventWrapper } from '@/common/event'; -import { DataSource, GroupMember, KickedOffLineInfo, SelfInfo, SelfStatusInfo } from '@/core/types'; +import { GroupMember, KickedOffLineInfo, SelfInfo, SelfStatusInfo } from '@/core/types'; import { NapCatConfigLoader } from '@/core/helper/config'; import os from 'node:os'; -import { NodeIKernelGroupListener, NodeIKernelMsgListener, NodeIKernelProfileListener } from '@/core/listeners'; +import { NodeIKernelMsgListener, NodeIKernelProfileListener } from '@/core/listeners'; import { proxiedListenerOf } from '@/common/proxy-handler'; import { NTQQPacketApi } from './apis/packet'; export * from './wrapper'; @@ -163,7 +163,6 @@ export class NapCatCore { msgListener.onAddSendMsg = (msg) => { this.context.logger.logMessage(msg, this.selfInfo); }; - //await sleep(2500); this.context.session.getMsgService().addKernelMsgListener( proxiedListenerOf(msgListener, this.context.logger), ); @@ -185,92 +184,6 @@ export class NapCatCore { this.context.session.getProfileService().addKernelProfileListener( proxiedListenerOf(profileListener, this.context.logger), ); - - // 群相关 - const groupListener = new NodeIKernelGroupListener(); - groupListener.onGroupListUpdate = (updateType, groupList) => { - // console.log("onGroupListUpdate", updateType, groupList) - groupList.map(g => { - const existGroup = this.apis.GroupApi.groupCache.get(g.groupCode); - //群成员数量变化 应该刷新缓存 - if (existGroup && g.memberCount === existGroup.memberCount) { - Object.assign(existGroup, g); - } else { - this.apis.GroupApi.groupCache.set(g.groupCode, g); - // 获取群成员 - } - const sceneId = this.context.session.getGroupService().createMemberListScene(g.groupCode, 'groupMemberList_MainWindow'); - this.context.session.getGroupService().getNextMemberList(sceneId, undefined, 3000).then( /* r => { - // console.log(`get group ${g.groupCode} members`, r); - // r.result.infos.forEach(member => { - // }); - // groupMembers.set(g.groupCode, r.result.infos); - } */); - this.context.session.getGroupService().destroyMemberListScene(sceneId); - }); - }; - groupListener.onMemberListChange = (arg) => { - // TODO: 应该加一个内部自己维护的成员变动callback,用于判断成员变化通知 - const groupCode = arg.sceneId.split('_')[0]; - if (this.apis.GroupApi.groupMemberCache.has(groupCode)) { - const existMembers = this.apis.GroupApi.groupMemberCache.get(groupCode)!; - arg.infos.forEach((member, uid) => { - //console.log('onMemberListChange', member); - const existMember = existMembers.get(uid); - if (existMember) { - Object.assign(existMember, member); - } else { - existMembers.set(uid, member); - } - //移除成员 - if (member.isDelete) { - existMembers.delete(uid); - } - }); - } else { - this.apis.GroupApi.groupMemberCache.set(groupCode, arg.infos); - } - }; - groupListener.onMemberInfoChange = (groupCode, dataSource, members) => { - if (dataSource === DataSource.LOCAL && members.get(this.selfInfo.uid)?.isDelete) { - // 自身退群或者被踢退群 5s用于Api操作 之后不再出现 - setTimeout(() => { - this.apis.GroupApi.groupCache.delete(groupCode); - }, 5000); - - } - const existMembers = this.apis.GroupApi.groupMemberCache.get(groupCode); - if (existMembers) { - members.forEach((member, uid) => { - const existMember = existMembers.get(uid); - if (existMember) { - // 检查管理变动 - member.isChangeRole = this.checkAdminEvent(groupCode, member, existMember); - // 更新成员信息 - Object.assign(existMember, member); - } else { - existMembers.set(uid, member); - } - //移除成员 - if (member.isDelete) { - existMembers.delete(uid); - } - }); - } else { - this.apis.GroupApi.groupMemberCache.set(groupCode, members); - } - }; - this.context.session.getGroupService().addKernelGroupListener( - proxiedListenerOf(groupListener, this.context.logger), - ); - } - - checkAdminEvent(groupCode: string, memberNew: GroupMember, memberOld: GroupMember | undefined): boolean { - if (memberNew.role !== memberOld?.role) { - this.context.logger.logDebug(`群 ${groupCode} ${memberNew.nick} 角色变更为 ${memberNew.role === 3 ? '管理员' : '群员'}`); - return true; - } - return false; } } diff --git a/src/onebot/action/group/GetGroupMemberList.ts b/src/onebot/action/group/GetGroupMemberList.ts index 451ae6e1..0f26d325 100644 --- a/src/onebot/action/group/GetGroupMemberList.ts +++ b/src/onebot/action/group/GetGroupMemberList.ts @@ -19,11 +19,10 @@ export class GetGroupMemberList extends OneBotAction const groupIdStr = payload.group_id.toString(); const noCache = payload.no_cache ? this.stringToBoolean(payload.no_cache) : false; const memberCache = this.core.apis.GroupApi.groupMemberCache; - let groupMembers; - try { - groupMembers = await this.core.apis.GroupApi.getGroupMembersV2(groupIdStr, 3000, noCache); - } catch (error) { - groupMembers = memberCache.get(groupIdStr) ?? await this.core.apis.GroupApi.getGroupMembersV2(groupIdStr); + let groupMembers = memberCache.get(groupIdStr); + if (noCache || !groupMembers) { + groupMembers = (await this.core.apis.GroupApi.getGroupMemberAll(groupIdStr)).result.infos; + memberCache.set(groupIdStr, groupMembers); } const memberPromises = Array.from(groupMembers.values()).map(item => OB11Construct.groupMember(groupIdStr, item) diff --git a/src/onebot/api/group.ts b/src/onebot/api/group.ts index c760dfd9..0a57086d 100644 --- a/src/onebot/api/group.ts +++ b/src/onebot/api/group.ts @@ -7,15 +7,10 @@ import { MessageElement, NapCatCore, NTGrayTipElementSubTypeV2, - NTMsgType, RawMessage, - TipGroupElement, - TipGroupElementType, } from '@/core'; import { NapCatOneBot11Adapter } from '@/onebot'; import { OB11GroupBanEvent } from '@/onebot/event/notice/OB11GroupBanEvent'; -import { OB11GroupIncreaseEvent } from '@/onebot/event/notice/OB11GroupIncreaseEvent'; -import { OB11GroupDecreaseEvent } from '@/onebot/event/notice/OB11GroupDecreaseEvent'; import fastXmlParser from 'fast-xml-parser'; import { OB11GroupMsgEmojiLikeEvent } from '@/onebot/event/notice/OB11MsgEmojiLikeEvent'; import { MessageUnique } from '@/common/message-unique'; @@ -66,67 +61,6 @@ export class OneBotGroupApi { return undefined; } - // async parseGroupIncreaseEvent(GroupCode: string, grayTipElement: GrayTipElement) { - // this.core.context.logger.logDebug('收到新人被邀请进群消息', grayTipElement); - // const xmlElement = grayTipElement.xmlElement; - // if (xmlElement?.content) { - // const regex = /jp="(\d+)"/g; - - // const matches = []; - // let match = null; - - // while ((match = regex.exec(xmlElement.content)) !== null) { - // matches.push(match[1]); - // } - // if (matches.length === 2) { - // const [inviter, invitee] = matches; - // return new OB11GroupIncreaseEvent( - // this.core, - // parseInt(GroupCode), - // parseInt(invitee), - // parseInt(inviter), - // 'invite', - // ); - // } - // } - // return undefined; - // } - - // async parseGroupMemberIncreaseEvent(GroupCode: string, grayTipElement: GrayTipElement) { - // const groupElement = grayTipElement?.groupElement; - // if (!groupElement) return undefined; - // const member = await this.core.apis.UserApi.getUserDetailInfo(groupElement.memberUid); - // const memberUin = member?.uin; - // const adminMember = await this.core.apis.GroupApi.getGroupMember(GroupCode, groupElement.adminUid); - // if (memberUin) { - // const operatorUin = adminMember?.uin ?? memberUin; - // return new OB11GroupIncreaseEvent( - // this.core, - // parseInt(GroupCode), - // parseInt(memberUin), - // parseInt(operatorUin), - // ); - // } else { - // return undefined; - // } - // } - - // async parseGroupKickEvent(GroupCode: string, grayTipElement: GrayTipElement) { - // const groupElement = grayTipElement?.groupElement; - // if (!groupElement) return undefined; - // const adminUin = (await this.core.apis.GroupApi.getGroupMember(GroupCode, groupElement.adminUid))?.uin ?? (await this.core.apis.UserApi.getUidByUinV2(groupElement.adminUid)); - // if (adminUin) { - // return new OB11GroupDecreaseEvent( - // this.core, - // parseInt(GroupCode), - // parseInt(this.core.selfInfo.uin), - // parseInt(adminUin), - // 'kick_me', - // ); - // } - // return undefined; - // } - async parseGroupEmojiLikeEventByGrayTip( groupCode: string, grayTipElement: GrayTipElement @@ -187,31 +121,6 @@ export class OneBotGroupApi { return undefined; } - // async parseGroupElement(msg: RawMessage, groupElement: TipGroupElement, elementWrapper: GrayTipElement) { - // if (groupElement.type == TipGroupElementType.KMEMBERADD) { - // const MemberIncreaseEvent = await this.obContext.apis.GroupApi.parseGroupMemberIncreaseEvent(msg.peerUid, elementWrapper); - // if (MemberIncreaseEvent) return MemberIncreaseEvent; - // } else if (groupElement.type === TipGroupElementType.KSHUTUP) { - // const BanEvent = await this.obContext.apis.GroupApi.parseGroupBanEvent(msg.peerUid, elementWrapper); - // if (BanEvent) return BanEvent; - // } else if (groupElement.type == TipGroupElementType.KQUITTE) { - // this.core.apis.GroupApi.quitGroup(msg.peerUid).then(); - // try { - // const KickEvent = await this.obContext.apis.GroupApi.parseGroupKickEvent(msg.peerUid, elementWrapper); - // if (KickEvent) return KickEvent; - // } catch (e) { - // return new OB11GroupDecreaseEvent( - // this.core, - // parseInt(msg.peerUid), - // parseInt(this.core.selfInfo.uin), - // 0, - // 'leave', - // ); - // } - // } - // return undefined; - // } - async parsePaiYiPai(msg: RawMessage, jsonStr: string) { const json = JSON.parse(jsonStr); diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index bf8f790c..1ff5ae8d 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -969,7 +969,7 @@ export class OneBotMsgApi { const SysMessage = new NapProtoMsg(PushMsgBody).decode(Uint8Array.from(msg)); if (SysMessage.contentHead.type == 33 && SysMessage.body?.msgContent) { const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent); - console.log(JSON.stringify(groupChange)); + await this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()); return new OB11GroupIncreaseEvent( this.core, groupChange.groupUin, @@ -979,6 +979,7 @@ export class OneBotMsgApi { ); } else if (SysMessage.contentHead.type == 34 && SysMessage.body?.msgContent) { const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent); + await this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()); return new OB11GroupDecreaseEvent( this.core, groupChange.groupUin, diff --git a/src/onebot/index.ts b/src/onebot/index.ts index 9d858d74..1eed43da 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -413,104 +413,73 @@ export class NapCatOneBot11Adapter { this.core.apis.GroupApi.getGroup(notify.group.groupCode) ); } - } else - // if ( - // notify.type == GroupNotifyMsgType.MEMBER_LEAVE_NOTIFY_ADMIN || - // notify.type == GroupNotifyMsgType.KICK_MEMBER_NOTIFY_ADMIN - // ) { - // this.context.logger.logDebug('有成员退出通知', notify); - // const member1Uin = await this.core.apis.UserApi.getUinByUidV2(notify.user1.uid); - // let operatorId = member1Uin; - // let subType: GroupDecreaseSubType = 'leave'; - // if (notify.user2.uid) { - // // 是被踢的 - // const member2Uin = await this.core.apis.UserApi.getUinByUidV2(notify.user2.uid); - // if (member2Uin) { - // operatorId = member2Uin; - // } - // subType = 'kick'; - // } - // const groupDecreaseEvent = new OB11GroupDecreaseEvent( - // this.core, - // parseInt(notify.group.groupCode), - // parseInt(member1Uin), - // parseInt(operatorId), - // subType - // ); - // this.networkManager - // .emitEvent(groupDecreaseEvent) - // .catch((e) => - // this.context.logger.logError('处理群成员退出失败', e) - // ); - // // notify.status == 1 表示未处理 2表示处理完成 - // } else - if ( - [GroupNotifyMsgType.REQUEST_JOIN_NEED_ADMINI_STRATOR_PASS].includes(notify.type) && - notify.status == GroupNotifyMsgStatus.KUNHANDLE - ) { - this.context.logger.logDebug('有加群请求'); - try { - let requestUin = await this.core.apis.UserApi.getUinByUidV2(notify.user1.uid); - if (isNaN(parseInt(requestUin))) { - requestUin = (await this.core.apis.UserApi.getUserDetailInfo(notify.user1.uid)).uin; - } - const groupRequestEvent = new OB11GroupRequestEvent( - this.core, - parseInt(notify.group.groupCode), - parseInt(requestUin), - 'add', - notify.postscript, - flag - ); - this.networkManager - .emitEvent(groupRequestEvent) - .catch((e) => - this.context.logger.logError('处理加群请求失败', e) - ); - } catch (e) { - this.context.logger.logError( - '获取加群人QQ号失败 Uid:', - notify.user1.uid, - e - ); + } else if ( + [GroupNotifyMsgType.REQUEST_JOIN_NEED_ADMINI_STRATOR_PASS].includes(notify.type) && + notify.status == GroupNotifyMsgStatus.KUNHANDLE + ) { + this.context.logger.logDebug('有加群请求'); + try { + let requestUin = await this.core.apis.UserApi.getUinByUidV2(notify.user1.uid); + if (isNaN(parseInt(requestUin))) { + requestUin = (await this.core.apis.UserApi.getUserDetailInfo(notify.user1.uid)).uin; } - } else if ( - notify.type == GroupNotifyMsgType.INVITED_BY_MEMBER && - notify.status == GroupNotifyMsgStatus.KUNHANDLE - ) { - this.context.logger.logDebug(`收到邀请我加群通知:${notify}`); - const groupInviteEvent = new OB11GroupRequestEvent( + const groupRequestEvent = new OB11GroupRequestEvent( this.core, parseInt(notify.group.groupCode), - parseInt(await this.core.apis.UserApi.getUinByUidV2(notify.user2.uid)), - 'invite', - notify.postscript, - flag - ); - this.networkManager - .emitEvent(groupInviteEvent) - .catch((e) => - this.context.logger.logError('处理邀请本人加群失败', e) - ); - } else if ( - notify.type == GroupNotifyMsgType.INVITED_NEED_ADMINI_STRATOR_PASS && - notify.status == GroupNotifyMsgStatus.KUNHANDLE - ) { - this.context.logger.logDebug(`收到群员邀请加群通知:${notify}`); - const groupInviteEvent = new OB11GroupRequestEvent( - this.core, - parseInt(notify.group.groupCode), - parseInt(await this.core.apis.UserApi.getUinByUidV2(notify.user1.uid)), + parseInt(requestUin), 'add', notify.postscript, flag ); this.networkManager - .emitEvent(groupInviteEvent) + .emitEvent(groupRequestEvent) .catch((e) => - this.context.logger.logError('处理邀请本人加群失败', e) + this.context.logger.logError('处理加群请求失败', e) ); + } catch (e) { + this.context.logger.logError( + '获取加群人QQ号失败 Uid:', + notify.user1.uid, + e + ); } + } else if ( + notify.type == GroupNotifyMsgType.INVITED_BY_MEMBER && + notify.status == GroupNotifyMsgStatus.KUNHANDLE + ) { + this.context.logger.logDebug(`收到邀请我加群通知:${notify}`); + const groupInviteEvent = new OB11GroupRequestEvent( + this.core, + parseInt(notify.group.groupCode), + parseInt(await this.core.apis.UserApi.getUinByUidV2(notify.user2.uid)), + 'invite', + notify.postscript, + flag + ); + this.networkManager + .emitEvent(groupInviteEvent) + .catch((e) => + this.context.logger.logError('处理邀请本人加群失败', e) + ); + } else if ( + notify.type == GroupNotifyMsgType.INVITED_NEED_ADMINI_STRATOR_PASS && + notify.status == GroupNotifyMsgStatus.KUNHANDLE + ) { + this.context.logger.logDebug(`收到群员邀请加群通知:${notify}`); + const groupInviteEvent = new OB11GroupRequestEvent( + this.core, + parseInt(notify.group.groupCode), + parseInt(await this.core.apis.UserApi.getUinByUidV2(notify.user1.uid)), + 'add', + notify.postscript, + flag + ); + this.networkManager + .emitEvent(groupInviteEvent) + .catch((e) => + this.context.logger.logError('处理邀请本人加群失败', e) + ); + } } } }; From ddadd381519d6eeb8de54a6e4dedc97a41b9b781 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Tue, 3 Dec 2024 19:44:38 +0800 Subject: [PATCH 171/418] refactor: GroupAdminChange --- src/core/apis/group.ts | 106 ------------------ .../transformer/proto/message/groupAdmin.ts | 18 +++ src/onebot/api/msg.ts | 20 +++- src/onebot/index.ts | 71 ------------ 4 files changed, 37 insertions(+), 178 deletions(-) create mode 100644 src/core/packet/transformer/proto/message/groupAdmin.ts diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index 31efa701..51868c65 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -260,29 +260,6 @@ export class NTQQGroupApi { return notifies; } - // async getGroupMemberV2(GroupCode: string, uid: string, forced = false) { - // const Listener = this.core.eventWrapper.registerListen( - // 'NodeIKernelGroupListener/onMemberInfoChange', - // (params, _, members) => params === GroupCode && members.size > 0, - // 1, - // forced ? 5000 : 250, - // ); - // const retData = await ( - // this.core.eventWrapper - // .createEventFunction('NodeIKernelGroupService/getMemberInfo') - // )!(GroupCode, [uid], forced); - // if (retData.result !== 0) { - // throw new Error(`${retData.errMsg}`); - // } - // const result = await Listener as unknown; - // let member: GroupMember | undefined; - // if (Array.isArray(result) && result?.[2] instanceof Map) { - // const members = result[2] as Map; - // member = members.get(uid); - // } - // return member; - // } - async searchGroup(groupCode: string) { const [, ret] = await this.core.eventWrapper.callNormalEventV2( 'NodeIKernelSearchService/searchGroup', @@ -323,89 +300,6 @@ export class NTQQGroupApi { return undefined; } - // async tryGetGroupMembersV2(groupQQ: string, modeListener = false, num = 30, timeout = 100): Promise<{ - // infos: Map; - // finish: boolean; - // hasNext: boolean | undefined; - // }> { - // const sceneId = this.context.session.getGroupService().createMemberListScene(groupQQ, 'groupMemberList_MainWindow_1'); - // const once = this.core.eventWrapper.registerListen('NodeIKernelGroupListener/onMemberListChange', (params) => params.sceneId === sceneId, 0, timeout) - // .catch(() => { }); - // const result = await this.context.session.getGroupService().getNextMemberList(sceneId, undefined, num); - // if (result.errCode !== 0) { - // throw new Error('获取群成员列表出错,' + result.errMsg); - // } - // let resMode2; - // if (modeListener) { - // const ret = (await once)?.[0]; - // if (ret) { - // resMode2 = ret; - // } - // } - // this.context.session.getGroupService().destroyMemberListScene(sceneId); - // return { - // infos: new Map([...(resMode2?.infos ?? []), ...result.result.infos]), - // finish: result.result.finish, - // hasNext: resMode2?.hasNext, - // }; - // } - - // async GetGroupMembersV3(groupQQ: string, num = 3000, timeout = 2500): Promise<{ - // infos: Map; - // finish: boolean; - // hasNext: boolean | undefined; - // listenerMode: boolean; - // }> { - // const sceneId = this.context.session.getGroupService().createMemberListScene(groupQQ, 'groupMemberList_MainWindow_1'); - // const once = this.core.eventWrapper.registerListen('NodeIKernelGroupListener/onMemberListChange', (params) => params.sceneId === sceneId, 0, timeout) - // .catch(() => { }); - // const result = await this.context.session.getGroupService().getNextMemberList(sceneId, undefined, num); - // if (result.errCode !== 0) { - // throw new Error('获取群成员列表出错,' + result.errMsg); - // } - // let resMode2; - // if (result.result.finish && result.result.infos.size === 0) { - // const ret = (await once)?.[0]; - // if (ret) { - // resMode2 = ret; - // } - // } - // this.context.session.getGroupService().destroyMemberListScene(sceneId); - // return { - // infos: new Map([...(resMode2?.infos ?? []), ...result.result.infos]), - // finish: result.result.finish, - // hasNext: resMode2?.hasNext, - // listenerMode: resMode2?.hasNext !== undefined - // }; - // } - - // async getGroupMembersV2(groupQQ: string, num = 3000, no_cache: boolean = false): Promise> { - // if (no_cache) { - // return (await this.getGroupMemberAll(groupQQ, true)).result.infos; - // } - // let res = await this.GetGroupMembersV3(groupQQ, num); - // let ret = res.infos; - // if (res.infos.size === 0 && !res.listenerMode) { - // res = await this.GetGroupMembersV3(groupQQ, num); - // ret = res.infos; - // } - // if (res.infos.size === 0) { - // ret = (await this.getGroupMemberAll(groupQQ)).result.infos; - // } - // return ret; - // } - - // async getGroupMembers(groupQQ: string, num = 3000): Promise> { - // const groupService = this.context.session.getGroupService(); - // const sceneId = groupService.createMemberListScene(groupQQ, 'groupMemberList_MainWindow'); - // const result = await groupService.getNextMemberList(sceneId, undefined, num); - // if (result.errCode !== 0) { - // throw new Error('获取群成员列表出错,' + result.errMsg); - // } - // this.context.logger.logDebug(`获取群(${groupQQ})成员列表结果:`, `members: ${result.result.infos.size}`); - // return result.result.infos; - // } - async getGroupFileCount(group_ids: Array) { return this.context.session.getRichMediaService().batchGetGroupFileCount(group_ids); } diff --git a/src/core/packet/transformer/proto/message/groupAdmin.ts b/src/core/packet/transformer/proto/message/groupAdmin.ts new file mode 100644 index 00000000..0aa130b9 --- /dev/null +++ b/src/core/packet/transformer/proto/message/groupAdmin.ts @@ -0,0 +1,18 @@ +import { ProtoField, ScalarType } from "@napneko/nap-proto-core"; + +export const GroupAdminExtra = { + adminUid: ProtoField(1, ScalarType.STRING), + isPromote: ProtoField(2, ScalarType.BOOL), +} + +export const GroupAdminBody = { + extraDisable: ProtoField(1, () => GroupAdminExtra), + extraEnable: ProtoField(2, () => GroupAdminExtra), +} + +export const GroupAdmin = { + groupUin: ProtoField(1, ScalarType.UINT32), + flag: ProtoField(2, ScalarType.UINT32), + isPromote: ProtoField(3, ScalarType.BOOL), + body: ProtoField(4, () => GroupAdminBody), +} \ No newline at end of file diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 1ff5ae8d..c9ddd427 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -32,6 +32,8 @@ import { GroupChange, PushMsgBody } from "@/core/packet/transformer/proto"; import { NapProtoMsg } from '@napneko/nap-proto-core'; import { OB11GroupIncreaseEvent } from '../event/notice/OB11GroupIncreaseEvent'; import { OB11GroupDecreaseEvent, GroupDecreaseSubType } from '../event/notice/OB11GroupDecreaseEvent'; +import { GroupAdmin } from '@/core/packet/transformer/proto/message/groupAdmin'; +import { OB11GroupAdminNoticeEvent } from '../event/notice/OB11GroupAdminNoticeEvent'; type RawToOb11Converters = { [Key in keyof MessageElement as Key extends `${string}Element` ? Key : never]: ( @@ -965,8 +967,8 @@ export class OneBotMsgApi { } async parseSysMessage(msg: number[]) { - // Todo Refactor const SysMessage = new NapProtoMsg(PushMsgBody).decode(Uint8Array.from(msg)); + console.log(Buffer.from(msg).toString('hex')); if (SysMessage.contentHead.type == 33 && SysMessage.body?.msgContent) { const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent); await this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()); @@ -987,6 +989,22 @@ export class OneBotMsgApi { groupChange.operatorUid ? +await this.core.apis.UserApi.getUinByUidV2(groupChange.operatorUid) : 0, this.groupChangDecreseType2String(groupChange.decreaseType), ); + } else if (SysMessage.contentHead.type == 44 && SysMessage.body?.msgContent) { + const groupAmin = new NapProtoMsg(GroupAdmin).decode(SysMessage.body.msgContent); + await this.core.apis.GroupApi.refreshGroupMemberCache(groupAmin.groupUin.toString()); + let enabled = false; + let uid = groupAmin.body.extraEnable.adminUid; + if (groupAmin.body.extraEnable != null) { + enabled = true; + } else if (groupAmin.body.extraDisable != null) { + enabled = false; + } + return new OB11GroupAdminNoticeEvent( + this.core, + groupAmin.groupUin, + +await this.core.apis.UserApi.getUinByUidV2(uid), + enabled ? 'set' : 'unset' + ); } else if (SysMessage.contentHead.type == 528 && SysMessage.contentHead.subType == 39 && SysMessage.body?.msgContent) { return await this.obContext.apis.UserApi.parseLikeEvent(SysMessage.body?.msgContent); } diff --git a/src/onebot/index.ts b/src/onebot/index.ts index 1eed43da..010c4177 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -1,8 +1,6 @@ import { BuddyReqType, ChatType, - DataSource, - NTGroupMemberRole, GroupNotifyMsgStatus, GroupNotifyMsgType, InstanceContext, @@ -41,8 +39,6 @@ import { OB11InputStatusEvent } from '@/onebot/event/notice/OB11InputStatusEvent import { MessageUnique } from '@/common/message-unique'; import { proxiedListenerOf } from '@/common/proxy-handler'; import { OB11FriendRequestEvent } from '@/onebot/event/request/OB11FriendRequest'; -import { OB11GroupAdminNoticeEvent } from '@/onebot/event/notice/OB11GroupAdminNoticeEvent'; -// import { GroupDecreaseSubType, OB11GroupDecreaseEvent } from '@/onebot/event/notice/OB11GroupDecreaseEvent'; import { OB11GroupRequestEvent } from '@/onebot/event/request/OB11GroupRequest'; import { OB11FriendRecallNoticeEvent } from '@/onebot/event/notice/OB11FriendRecallNoticeEvent'; import { OB11GroupRecallNoticeEvent } from '@/onebot/event/notice/OB11GroupRecallNoticeEvent'; @@ -373,47 +369,7 @@ export class NapCatOneBot11Adapter { const flag = notify.group.groupCode + '|' + notify.seq + '|' + notify.type; this.context.logger.logDebug('收到群通知', notify); - if ( - [ - GroupNotifyMsgType.SET_ADMIN, - GroupNotifyMsgType.CANCEL_ADMIN_NOTIFY_CANCELED, - GroupNotifyMsgType.CANCEL_ADMIN_NOTIFY_ADMIN, - ].includes(notify.type) - ) { - const member1 = await this.core.apis.GroupApi.getGroupMember( - notify.group.groupCode, - notify.user1.uid - ); - this.context.logger.logDebug('有管理员变动通知'); - // refreshGroupMembers(notify.group.groupCode).then(); - this.context.logger.logDebug('开始获取变动的管理员'); - if (member1) { - this.context.logger.logDebug('变动管理员获取成功'); - const groupAdminNoticeEvent = new OB11GroupAdminNoticeEvent( - this.core, - parseInt(notify.group.groupCode), - parseInt(member1.uin), - [ - GroupNotifyMsgType.CANCEL_ADMIN_NOTIFY_CANCELED, - GroupNotifyMsgType.CANCEL_ADMIN_NOTIFY_ADMIN, - ].includes(notify.type) - ? 'unset' - : 'set' - ); - this.networkManager - .emitEvent(groupAdminNoticeEvent) - .catch((e) => - this.context.logger.logError('处理群管理员变动失败', e) - ); - } else { - this.context.logger.logDebug( - '获取群通知的成员信息失败', - notify, - this.core.apis.GroupApi.getGroup(notify.group.groupCode) - ); - } - } else if ( [GroupNotifyMsgType.REQUEST_JOIN_NEED_ADMINI_STRATOR_PASS].includes(notify.type) && notify.status == GroupNotifyMsgStatus.KUNHANDLE ) { @@ -483,33 +439,6 @@ export class NapCatOneBot11Adapter { } } }; - - groupListener.onMemberInfoChange = async (groupCode, dataSource, members) => { - //this.context.logger.logDebug('收到群成员信息变动通知', groupCode, changeType); - if (dataSource === DataSource.LOCAL) { - const existMembers = this.core.apis.GroupApi.groupMemberCache.get(groupCode); - if (!existMembers) return; - members.forEach((member) => { - const existMember = existMembers.get(member.uid); - if (!existMember?.isChangeRole) return; - this.context.logger.logDebug('变动管理员获取成功'); - const groupAdminNoticeEvent = new OB11GroupAdminNoticeEvent( - this.core, - parseInt(groupCode), - parseInt(member.uin), - member.role === NTGroupMemberRole.KADMIN ? 'set' : 'unset' - ); - this.networkManager - .emitEvent(groupAdminNoticeEvent) - .catch((e) => - this.context.logger.logError('处理群管理员变动失败', e) - ); - existMember.isChangeRole = false; - this.context.logger.logDebug('群管理员变动处理完毕'); - }); - } - }; - this.context.session .getGroupService() .addKernelGroupListener(proxiedListenerOf(groupListener, this.context.logger)); From 8a289d014e50584334c8982dc98eaceea0eb38b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Tue, 3 Dec 2024 19:50:47 +0800 Subject: [PATCH 172/418] fix: error --- src/onebot/api/msg.ts | 27 +++------------------------ src/onebot/index.ts | 1 - 2 files changed, 3 insertions(+), 25 deletions(-) diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index c9ddd427..ace71a72 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -993,10 +993,12 @@ export class OneBotMsgApi { const groupAmin = new NapProtoMsg(GroupAdmin).decode(SysMessage.body.msgContent); await this.core.apis.GroupApi.refreshGroupMemberCache(groupAmin.groupUin.toString()); let enabled = false; - let uid = groupAmin.body.extraEnable.adminUid; + let uid = ''; if (groupAmin.body.extraEnable != null) { + uid = groupAmin.body.extraEnable.adminUid; enabled = true; } else if (groupAmin.body.extraDisable != null) { + uid = groupAmin.body.extraDisable.adminUid; enabled = false; } return new OB11GroupAdminNoticeEvent( @@ -1008,28 +1010,5 @@ export class OneBotMsgApi { } else if (SysMessage.contentHead.type == 528 && SysMessage.contentHead.subType == 39 && SysMessage.body?.msgContent) { return await this.obContext.apis.UserApi.parseLikeEvent(SysMessage.body?.msgContent); } - - /* - if (msgType === 732 && subType === 16 && subSubType === 16) { - const greyTip = GreyTipWrapper.fromBinary(Uint8Array.from(sysMsg.bodyWrapper!.wrappedBody.slice(7))); - if (greyTip.subTypeId === 36) { - const emojiLikeToOthers = EmojiLikeToOthersWrapper1 - .fromBinary(greyTip.rest) - .wrapper! - .body!; - if (emojiLikeToOthers.attributes?.operation !== 1) { // Un-like - return; - } - const eventOrEmpty = await this.apis.GroupApi.createGroupEmojiLikeEvent( - greyTip.groupCode.toString(), - await this.core.apis.UserApi.getUinByUidV2(emojiLikeToOthers.attributes!.senderUid), - emojiLikeToOthers.msgSpec!.msgSeq.toString(), - emojiLikeToOthers.attributes!.emojiId, - ); - // eslint-disable-next-line @typescript-eslint/no-unused-expressions - eventOrEmpty && await this.networkManager.emitEvent(eventOrEmpty); - } - } - */ } } diff --git a/src/onebot/index.ts b/src/onebot/index.ts index 010c4177..85303d87 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -351,7 +351,6 @@ export class NapCatOneBot11Adapter { const groupListener = new NodeIKernelGroupListener(); groupListener.onGroupNotifiesUpdated = async (_, notifies) => { - //console.log('ob11 onGroupNotifiesUpdated', notifies[0]); await this.core.apis.GroupApi.clearGroupNotifiesUnreadCount(false); if ( ![ From c9122a3fee2b470ff1c00c5f73838f744b55e60b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Tue, 3 Dec 2024 20:55:24 +0800 Subject: [PATCH 173/418] =?UTF-8?q?fix:=20=E4=B8=B4=E6=97=B6=E7=9A=84?= =?UTF-8?q?=E6=8A=BD=E8=B1=A1=E6=96=B9=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/apis/group.ts | 22 +++++++++++++------ src/core/apis/user.ts | 2 +- src/onebot/action/group/GetGroupMemberList.ts | 7 ++++-- src/onebot/api/msg.ts | 7 +++--- 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index 51868c65..b4a331ad 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -33,6 +33,7 @@ export class NTQQGroupApi { this.groups = await this.getGroups(); for (const group of this.groups) { this.groupCache.set(group.groupCode, group); + this.refreshGroupMemberCache(group.groupCode).then().catch(e => this.context.logger.logError(e)); } this.context.logger.logDebug(`加载${this.groups.length}个群组缓存完成`); // process.pid 调试点 @@ -54,11 +55,13 @@ export class NTQQGroupApi { pageLimit: 300, }, pskey); } + async getGroupShutUpMemberList(groupCode: string) { const data = this.core.eventWrapper.registerListen('NodeIKernelGroupListener/onShutUpMemberListChanged', (group_id) => group_id === groupCode, 1, 1000); this.context.session.getGroupService().getGroupShutUpMemberList(groupCode); return (await data)[1]; } + async clearGroupNotifiesUnreadCount(uk: boolean) { return this.context.session.getGroupService().clearGroupNotifiesUnreadCount(uk); } @@ -139,26 +142,31 @@ export class NTQQGroupApi { async getGroupMemberAll(groupCode: string, forced = false) { return this.context.session.getGroupService().getAllMemberList(groupCode, forced); } + async refreshGroupMemberCache(groupCode: string) { try { const members = await this.getGroupMemberAll(groupCode, true); + let data = (await Promise.allSettled(members.result.ids.map(e => this.core.apis.UserApi.getUserDetailInfo(e.uid)))).filter(e => e.status === 'fulfilled').map(e => e.value); + data.forEach(e => { + const existingMember = members.result.infos.get(e.uid); + if (existingMember) { + members.result.infos.set(e.uid, { ...existingMember, ...e }); + } + }); this.groupMemberCache.set(groupCode, members.result.infos); } catch (e) { this.context.logger.logError(`刷新群成员缓存失败, ${e}`); } } + async getGroupMember(groupCode: string | number, memberUinOrUid: string | number) { const groupCodeStr = groupCode.toString(); const memberUinOrUidStr = memberUinOrUid.toString(); let members = this.groupMemberCache.get(groupCodeStr); if (!members) { - try { - members = (await this.getGroupMemberAll(groupCodeStr)).result.infos; - this.groupMemberCache.set(groupCodeStr, members); - } catch (e) { - return null; - } + this.refreshGroupMemberCache(groupCodeStr); } + function getMember() { let member: GroupMember | undefined; if (isNumeric(memberUinOrUidStr)) { @@ -171,7 +179,7 @@ export class NTQQGroupApi { let member = getMember(); if (!member) { - members = members = (await this.getGroupMemberAll(groupCodeStr)).result.infos; + members = (await this.getGroupMemberAll(groupCodeStr)).result.infos; member = getMember(); } return member; diff --git a/src/core/apis/user.ts b/src/core/apis/user.ts index cbb62699..90c99c36 100644 --- a/src/core/apis/user.ts +++ b/src/core/apis/user.ts @@ -90,7 +90,7 @@ export class NTQQUserApi { }; return RetUser; } - + async getUserDetailInfo(uid: string): Promise { let retUser = await solveAsyncProblem(async (uid) => this.fetchUserDetailInfo(uid, UserDetailSource.KDB), uid); if (retUser && retUser.uin !== '0') { diff --git a/src/onebot/action/group/GetGroupMemberList.ts b/src/onebot/action/group/GetGroupMemberList.ts index 0f26d325..0bb3fda4 100644 --- a/src/onebot/action/group/GetGroupMemberList.ts +++ b/src/onebot/action/group/GetGroupMemberList.ts @@ -21,8 +21,11 @@ export class GetGroupMemberList extends OneBotAction const memberCache = this.core.apis.GroupApi.groupMemberCache; let groupMembers = memberCache.get(groupIdStr); if (noCache || !groupMembers) { - groupMembers = (await this.core.apis.GroupApi.getGroupMemberAll(groupIdStr)).result.infos; - memberCache.set(groupIdStr, groupMembers); + await this.core.apis.GroupApi.refreshGroupMemberCache(groupIdStr); + groupMembers = memberCache.get(groupIdStr); + if (!groupMembers) { + throw new Error(`Failed to get group member list for group ${groupIdStr}`); + } } const memberPromises = Array.from(groupMembers.values()).map(item => OB11Construct.groupMember(groupIdStr, item) diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index ace71a72..c1b28f7b 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -968,10 +968,9 @@ export class OneBotMsgApi { async parseSysMessage(msg: number[]) { const SysMessage = new NapProtoMsg(PushMsgBody).decode(Uint8Array.from(msg)); - console.log(Buffer.from(msg).toString('hex')); if (SysMessage.contentHead.type == 33 && SysMessage.body?.msgContent) { const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent); - await this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()); + await this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()).then().catch(); return new OB11GroupIncreaseEvent( this.core, groupChange.groupUin, @@ -981,7 +980,7 @@ export class OneBotMsgApi { ); } else if (SysMessage.contentHead.type == 34 && SysMessage.body?.msgContent) { const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent); - await this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()); + this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()).then().catch(); return new OB11GroupDecreaseEvent( this.core, groupChange.groupUin, @@ -991,7 +990,7 @@ export class OneBotMsgApi { ); } else if (SysMessage.contentHead.type == 44 && SysMessage.body?.msgContent) { const groupAmin = new NapProtoMsg(GroupAdmin).decode(SysMessage.body.msgContent); - await this.core.apis.GroupApi.refreshGroupMemberCache(groupAmin.groupUin.toString()); + await this.core.apis.GroupApi.refreshGroupMemberCache(groupAmin.groupUin.toString()).then().catch(); let enabled = false; let uid = ''; if (groupAmin.body.extraEnable != null) { From 501bbbe4df531fec59b3630a82d3029f726074c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Tue, 3 Dec 2024 21:14:18 +0800 Subject: [PATCH 174/418] fix --- src/core/apis/group.ts | 52 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index b4a331ad..04b43e12 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -79,6 +79,35 @@ export class NTQQGroupApi { return groupList; } + async GetGroupMembersV3(groupQQ: string, num = 3000, timeout = 2500): Promise<{ + infos: Map; + finish: boolean; + hasNext: boolean | undefined; + listenerMode: boolean; + }> { + const sceneId = this.context.session.getGroupService().createMemberListScene(groupQQ, 'groupMemberList_MainWindow_1'); + const once = this.core.eventWrapper.registerListen('NodeIKernelGroupListener/onMemberListChange', (params) => params.sceneId === sceneId, 0, timeout) + .catch(() => { }); + const result = await this.context.session.getGroupService().getNextMemberList(sceneId, undefined, num); + if (result.errCode !== 0) { + throw new Error('获取群成员列表出错,' + result.errMsg); + } + let resMode2; + if (result.result.finish && result.result.infos.size === 0) { + const ret = (await once)?.[0]; + if (ret) { + resMode2 = ret; + } + } + this.context.session.getGroupService().destroyMemberListScene(sceneId); + return { + infos: new Map([...(resMode2?.infos ?? []), ...result.result.infos]), + finish: result.result.finish, + hasNext: resMode2?.hasNext, + listenerMode: resMode2?.hasNext !== undefined + }; + } + async getGroupExtFE0Info(groupCode: string[], forced = true) { return this.context.session.getGroupService().getGroupExt0xEF0Info( groupCode, @@ -146,13 +175,22 @@ export class NTQQGroupApi { async refreshGroupMemberCache(groupCode: string) { try { const members = await this.getGroupMemberAll(groupCode, true); - let data = (await Promise.allSettled(members.result.ids.map(e => this.core.apis.UserApi.getUserDetailInfo(e.uid)))).filter(e => e.status === 'fulfilled').map(e => e.value); - data.forEach(e => { - const existingMember = members.result.infos.get(e.uid); - if (existingMember) { - members.result.infos.set(e.uid, { ...existingMember, ...e }); - } - }); + let groupData = (await this.GetGroupMembersV3(groupCode)).infos; + if (groupData.size === 0 || groupData.size !== members.result.infos.size) { + let data = (await Promise.allSettled(members.result.ids.map(e => this.core.apis.UserApi.getUserDetailInfo(e.uid)))).filter(e => e.status === 'fulfilled').map(e => e.value); + data.forEach(e => { + const existingMember = members.result.infos.get(e.uid); + if (existingMember) { + members.result.infos.set(e.uid, { ...existingMember, ...e }); + } + }); + } else { + groupData.forEach((v, k) => { + if (members.result.infos.has(k)) { + members.result.infos.set(k, { ...members.result.infos.get(k), ...v }); + } + }); + } this.groupMemberCache.set(groupCode, members.result.infos); } catch (e) { this.context.logger.logError(`刷新群成员缓存失败, ${e}`); From 94e9c87978f39fd508e671b0c2d768d07faa85e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Tue, 3 Dec 2024 21:36:55 +0800 Subject: [PATCH 175/418] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E5=A4=84?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/apis/group.ts | 23 +++++++++++++---------- src/onebot/api/msg.ts | 4 ++-- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index 04b43e12..0653afdd 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -175,8 +175,13 @@ export class NTQQGroupApi { async refreshGroupMemberCache(groupCode: string) { try { const members = await this.getGroupMemberAll(groupCode, true); - let groupData = (await this.GetGroupMembersV3(groupCode)).infos; - if (groupData.size === 0 || groupData.size !== members.result.infos.size) { + // 首先填入基础信息 + const existingMembers = this.groupMemberCache.get(groupCode) ?? new Map(); + members.result.infos.forEach((value, key) => { + existingMembers.set(value.uid, { ...value, ...existingMembers.get(value.uid) }); + }); + // 后台补全复杂信息 + let event = (async () => { let data = (await Promise.allSettled(members.result.ids.map(e => this.core.apis.UserApi.getUserDetailInfo(e.uid)))).filter(e => e.status === 'fulfilled').map(e => e.value); data.forEach(e => { const existingMember = members.result.infos.get(e.uid); @@ -184,14 +189,12 @@ export class NTQQGroupApi { members.result.infos.set(e.uid, { ...existingMember, ...e }); } }); - } else { - groupData.forEach((v, k) => { - if (members.result.infos.has(k)) { - members.result.infos.set(k, { ...members.result.infos.get(k), ...v }); - } - }); + this.groupMemberCache.set(groupCode, members.result.infos); + })().then().catch(e => this.context.logger.logError(e)); + // 处理首次空缺 + if (!this.groupMemberCache.get(groupCode)) { + await event; } - this.groupMemberCache.set(groupCode, members.result.infos); } catch (e) { this.context.logger.logError(`刷新群成员缓存失败, ${e}`); } @@ -202,7 +205,7 @@ export class NTQQGroupApi { const memberUinOrUidStr = memberUinOrUid.toString(); let members = this.groupMemberCache.get(groupCodeStr); if (!members) { - this.refreshGroupMemberCache(groupCodeStr); + await this.refreshGroupMemberCache(groupCodeStr); } function getMember() { diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index c1b28f7b..a9decfea 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -970,7 +970,7 @@ export class OneBotMsgApi { const SysMessage = new NapProtoMsg(PushMsgBody).decode(Uint8Array.from(msg)); if (SysMessage.contentHead.type == 33 && SysMessage.body?.msgContent) { const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent); - await this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()).then().catch(); + this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()).then().catch(); return new OB11GroupIncreaseEvent( this.core, groupChange.groupUin, @@ -990,7 +990,7 @@ export class OneBotMsgApi { ); } else if (SysMessage.contentHead.type == 44 && SysMessage.body?.msgContent) { const groupAmin = new NapProtoMsg(GroupAdmin).decode(SysMessage.body.msgContent); - await this.core.apis.GroupApi.refreshGroupMemberCache(groupAmin.groupUin.toString()).then().catch(); + this.core.apis.GroupApi.refreshGroupMemberCache(groupAmin.groupUin.toString()).then().catch(); let enabled = false; let uid = ''; if (groupAmin.body.extraEnable != null) { From 03f7d4673f18240bc3733f6eb33e420063e544e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Tue, 3 Dec 2024 21:41:53 +0800 Subject: [PATCH 176/418] fix: code --- src/core/apis/group.ts | 35 +++++------------------------------ 1 file changed, 5 insertions(+), 30 deletions(-) diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index 0653afdd..8a5eb9a1 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -79,35 +79,6 @@ export class NTQQGroupApi { return groupList; } - async GetGroupMembersV3(groupQQ: string, num = 3000, timeout = 2500): Promise<{ - infos: Map; - finish: boolean; - hasNext: boolean | undefined; - listenerMode: boolean; - }> { - const sceneId = this.context.session.getGroupService().createMemberListScene(groupQQ, 'groupMemberList_MainWindow_1'); - const once = this.core.eventWrapper.registerListen('NodeIKernelGroupListener/onMemberListChange', (params) => params.sceneId === sceneId, 0, timeout) - .catch(() => { }); - const result = await this.context.session.getGroupService().getNextMemberList(sceneId, undefined, num); - if (result.errCode !== 0) { - throw new Error('获取群成员列表出错,' + result.errMsg); - } - let resMode2; - if (result.result.finish && result.result.infos.size === 0) { - const ret = (await once)?.[0]; - if (ret) { - resMode2 = ret; - } - } - this.context.session.getGroupService().destroyMemberListScene(sceneId); - return { - infos: new Map([...(resMode2?.infos ?? []), ...result.result.infos]), - finish: result.result.finish, - hasNext: resMode2?.hasNext, - listenerMode: resMode2?.hasNext !== undefined - }; - } - async getGroupExtFE0Info(groupCode: string[], forced = true) { return this.context.session.getGroupService().getGroupExt0xEF0Info( groupCode, @@ -203,6 +174,8 @@ export class NTQQGroupApi { async getGroupMember(groupCode: string | number, memberUinOrUid: string | number) { const groupCodeStr = groupCode.toString(); const memberUinOrUidStr = memberUinOrUid.toString(); + + // 检查群缓存 let members = this.groupMemberCache.get(groupCodeStr); if (!members) { await this.refreshGroupMemberCache(groupCodeStr); @@ -218,9 +191,11 @@ export class NTQQGroupApi { return member; } + let member = getMember(); + // 不存在群友缓存 尝试刷新 if (!member) { - members = (await this.getGroupMemberAll(groupCodeStr)).result.infos; + await this.refreshGroupMemberCache(groupCode.toString()); member = getMember(); } return member; From ef01dd0d777246966b463e71ad7afb19da70e7ca Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Tue, 3 Dec 2024 13:43:37 +0000 Subject: [PATCH 177/418] release: v4.2.13 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 25b02629..cc47ff21 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.12", + "version": "4.2.13", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 5a5afd73..7285cf21 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.12", + "version": "4.2.13", "scripts": { "build:universal": "npm run build:webui && vite build --mode universal || exit 1", "build:framework": "npm run build:webui && vite build --mode framework || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index 1fe967bf..d38f6892 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.12'; +export const napCatVersion = '4.2.13'; From da7636e60c376db1d962457bca4bb5670a302960 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Tue, 3 Dec 2024 21:50:12 +0800 Subject: [PATCH 178/418] fix: #592 --- src/onebot/action/extends/GetGroupAddRequest.ts | 2 +- src/onebot/action/group/GetGroupIgnoredNotifies.ts | 2 +- src/onebot/action/system/GetSystemMsg.ts | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/onebot/action/extends/GetGroupAddRequest.ts b/src/onebot/action/extends/GetGroupAddRequest.ts index c886ed2f..8bdd65d8 100644 --- a/src/onebot/action/extends/GetGroupAddRequest.ts +++ b/src/onebot/action/extends/GetGroupAddRequest.ts @@ -18,7 +18,7 @@ export default class GetGroupAddRequest extends OneBotAction notify.type === 7) .map(async SSNotify => ({ - request_id: SSNotify.seq, + request_id: SSNotify.group.groupCode + '|' + SSNotify.seq + '|' + SSNotify.type, requester_uin: await this.core.apis.UserApi.getUinByUidV2(SSNotify.user1?.uid), requester_nick: SSNotify.user1?.nickName, group_id: SSNotify.group?.groupCode, diff --git a/src/onebot/action/group/GetGroupIgnoredNotifies.ts b/src/onebot/action/group/GetGroupIgnoredNotifies.ts index 0faa1826..a639ed1e 100644 --- a/src/onebot/action/group/GetGroupIgnoredNotifies.ts +++ b/src/onebot/action/group/GetGroupIgnoredNotifies.ts @@ -11,7 +11,7 @@ export class GetGroupIgnoredNotifies extends OneBotAction { ignoredNotifies .filter(notify => notify.type === 7) .map(async SSNotify => ({ - request_id: SSNotify.seq, + request_id: SSNotify.group.groupCode + '|' + SSNotify.seq + '|' + SSNotify.type, requester_uin: await this.core.apis.UserApi.getUinByUidV2(SSNotify.user1?.uid), requester_nick: SSNotify.user1?.nickName, group_id: SSNotify.group?.groupCode, diff --git a/src/onebot/action/system/GetSystemMsg.ts b/src/onebot/action/system/GetSystemMsg.ts index 435d17bb..f1a904c5 100644 --- a/src/onebot/action/system/GetSystemMsg.ts +++ b/src/onebot/action/system/GetSystemMsg.ts @@ -8,12 +8,12 @@ export class GetGroupSystemMsg extends OneBotAction { const NTQQUserApi = this.core.apis.UserApi; const NTQQGroupApi = this.core.apis.GroupApi; // 默认10条 该api未完整实现 包括响应数据规范化 类型规范化 - const SingleScreenNotifies = await NTQQGroupApi.getSingleScreenNotifies(false,10); + const SingleScreenNotifies = await NTQQGroupApi.getSingleScreenNotifies(false, 10); const retData: any = { InvitedRequest: [], join_requests: [] }; for (const SSNotify of SingleScreenNotifies) { if (SSNotify.type == 1) { retData.InvitedRequest.push({ - request_id: SSNotify.seq, + request_id: SSNotify.group.groupCode + '|' + SSNotify.seq + '|' + SSNotify.type, invitor_uin: await NTQQUserApi.getUinByUidV2(SSNotify.user1?.uid), invitor_nick: SSNotify.user1?.nickName, group_id: SSNotify.group?.groupCode, @@ -23,7 +23,7 @@ export class GetGroupSystemMsg extends OneBotAction { }); } else if (SSNotify.type == 7) { retData.join_requests.push({ - request_id: SSNotify.seq, + request_id: SSNotify.group.groupCode + '|' + SSNotify.seq + '|' + SSNotify.type, requester_uin: await NTQQUserApi.getUinByUidV2(SSNotify.user1?.uid), requester_nick: SSNotify.user1?.nickName, group_id: SSNotify.group?.groupCode, From ad052821b0f2419e07b767d98b6a550043e3b191 Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Tue, 3 Dec 2024 13:50:37 +0000 Subject: [PATCH 179/418] release: v4.2.14 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index cc47ff21..57748137 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.13", + "version": "4.2.14", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 7285cf21..a0f5446d 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.13", + "version": "4.2.14", "scripts": { "build:universal": "npm run build:webui && vite build --mode universal || exit 1", "build:framework": "npm run build:webui && vite build --mode framework || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index d38f6892..776bf78b 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.13'; +export const napCatVersion = '4.2.14'; From 6b0d96fe8d297a7c090ba45d577c048ccc530aaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Tue, 3 Dec 2024 22:07:11 +0800 Subject: [PATCH 180/418] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=E5=A4=8D?= =?UTF-8?q?=E6=9D=82=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/apis/group.ts | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index 8a5eb9a1..b0dd6dae 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -146,31 +146,33 @@ export class NTQQGroupApi { async refreshGroupMemberCache(groupCode: string) { try { const members = await this.getGroupMemberAll(groupCode, true); - // 首先填入基础信息 - const existingMembers = this.groupMemberCache.get(groupCode) ?? new Map(); - members.result.infos.forEach((value, key) => { + let existingMembers = this.groupMemberCache.get(groupCode); + if (!existingMembers) { + existingMembers = new Map(); + this.groupMemberCache.set(groupCode, existingMembers); + } + members.result.infos.forEach((value) => { existingMembers.set(value.uid, { ...value, ...existingMembers.get(value.uid) }); }); - // 后台补全复杂信息 - let event = (async () => { - let data = (await Promise.allSettled(members.result.ids.map(e => this.core.apis.UserApi.getUserDetailInfo(e.uid)))).filter(e => e.status === 'fulfilled').map(e => e.value); - data.forEach(e => { - const existingMember = members.result.infos.get(e.uid); - if (existingMember) { - members.result.infos.set(e.uid, { ...existingMember, ...e }); - } - }); - this.groupMemberCache.set(groupCode, members.result.infos); - })().then().catch(e => this.context.logger.logError(e)); - // 处理首次空缺 - if (!this.groupMemberCache.get(groupCode)) { - await event; - } } catch (e) { - this.context.logger.logError(`刷新群成员缓存失败, ${e}`); + this.context.logger.logError(`刷新群成员缓存失败, 群号: ${groupCode}, 错误: ${e}`); } } - + // 后台补全复杂信息 + // let event = (async () => { + // let data = (await Promise.allSettled(members.result.ids.map(e => this.core.apis.UserApi.getUserDetailInfo(e.uid)))).filter(e => e.status === 'fulfilled').map(e => e.value); + // data.forEach(e => { + // const existingMember = members.result.infos.get(e.uid); + // if (existingMember) { + // members.result.infos.set(e.uid, { ...existingMember, ...e }); + // } + // }); + // this.groupMemberCache.set(groupCode, members.result.infos); + // })().then().catch(e => this.context.logger.logError(e)); + // 处理首次空缺 + // if (!this.groupMemberCache.get(groupCode)) { + // await event; + // } async getGroupMember(groupCode: string | number, memberUinOrUid: string | number) { const groupCodeStr = groupCode.toString(); const memberUinOrUidStr = memberUinOrUid.toString(); From 52efb4f9ef673d358681968518b0b2eff68ac74e Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Tue, 3 Dec 2024 14:07:35 +0000 Subject: [PATCH 181/418] release: v4.2.15 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 57748137..32b0fbde 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.14", + "version": "4.2.15", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index a0f5446d..cb2d57e0 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.14", + "version": "4.2.15", "scripts": { "build:universal": "npm run build:webui && vite build --mode universal || exit 1", "build:framework": "npm run build:webui && vite build --mode framework || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index 776bf78b..7e6fde4b 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.14'; +export const napCatVersion = '4.2.15'; From aceece7e90ecc6dca50ea8dbf4ab75a6ad7e4cdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Tue, 3 Dec 2024 22:12:57 +0800 Subject: [PATCH 182/418] fix: code --- src/core/apis/group.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index b0dd6dae..ca03366f 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -157,6 +157,7 @@ export class NTQQGroupApi { } catch (e) { this.context.logger.logError(`刷新群成员缓存失败, 群号: ${groupCode}, 错误: ${e}`); } + return this.groupMemberCache; } // 后台补全复杂信息 // let event = (async () => { @@ -180,7 +181,7 @@ export class NTQQGroupApi { // 检查群缓存 let members = this.groupMemberCache.get(groupCodeStr); if (!members) { - await this.refreshGroupMemberCache(groupCodeStr); + members = (await this.refreshGroupMemberCache(groupCodeStr)).get(groupCodeStr); } function getMember() { From a3c71473aeadcd5c804bca333a4a4067c9cecdf7 Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Tue, 3 Dec 2024 14:15:16 +0000 Subject: [PATCH 183/418] release: v4.2.16 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 32b0fbde..a8b4b262 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.15", + "version": "4.2.16", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index cb2d57e0..cc8c4c22 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.15", + "version": "4.2.16", "scripts": { "build:universal": "npm run build:webui && vite build --mode universal || exit 1", "build:framework": "npm run build:webui && vite build --mode framework || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index 7e6fde4b..a256536f 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.15'; +export const napCatVersion = '4.2.16'; From 32778acf57986cc066246f048151441abde88b6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 4 Dec 2024 10:43:48 +0800 Subject: [PATCH 184/418] refactor: NTQQGroupApi --- src/core/apis/group.ts | 163 ++++++++----------- src/core/apis/user.ts | 9 + src/core/services/NodeIKernelGroupService.ts | 2 +- src/onebot/api/msg.ts | 2 + 4 files changed, 84 insertions(+), 92 deletions(-) diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index ca03366f..41fa1057 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -18,33 +18,23 @@ export class NTQQGroupApi { core: NapCatCore; groupCache: Map = new Map(); groupMemberCache: Map> = new Map>(); - groups: Group[] = []; essenceLRU = new LimitedHashTable(1000); - session: any; constructor(context: InstanceContext, core: NapCatCore) { this.context = context; this.core = core; } + async initApi() { this.initCache().then().catch(e => this.context.logger.logError(e)); } - async initCache() { - this.groups = await this.getGroups(); - for (const group of this.groups) { - this.groupCache.set(group.groupCode, group); - this.refreshGroupMemberCache(group.groupCode).then().catch(e => this.context.logger.logError(e)); - } - this.context.logger.logDebug(`加载${this.groups.length}个群组缓存完成`); - // process.pid 调试点 - } - async getCoreAndBaseInfo(uids: string[]) { - return await this.core.eventWrapper.callNoListenerEvent( - 'NodeIKernelProfileService/getCoreAndBaseInfo', - 'nodeStore', - uids, - ); + async initCache() { + await this.core.apis.GroupApi.refreshGroups(); + for (const group of this.groupCache.keys()) { + await this.refreshGroupMemberCache(group); + } + this.context.logger.logDebug(`加载${this.groupCache.size}个群组缓存完成`); } async fetchGroupEssenceList(groupCode: string) { @@ -62,15 +52,15 @@ export class NTQQGroupApi { return (await data)[1]; } - async clearGroupNotifiesUnreadCount(uk: boolean) { - return this.context.session.getGroupService().clearGroupNotifiesUnreadCount(uk); + async clearGroupNotifiesUnreadCount(doubt: boolean) { + return this.context.session.getGroupService().clearGroupNotifiesUnreadCount(doubt); } - async setGroupAvatar(gc: string, filePath: string) { - return this.context.session.getGroupService().setHeader(gc, filePath); + async setGroupAvatar(groupCode: string, filePath: string) { + return this.context.session.getGroupService().setHeader(groupCode, filePath); } - async getGroups(forced = false) { + async getGroups(forced: boolean = false) { const [, , groupList] = await this.core.eventWrapper.callNormalEventV2( 'NodeIKernelGroupService/getGroupList', 'NodeIKernelGroupListener/onGroupListUpdate', @@ -79,9 +69,9 @@ export class NTQQGroupApi { return groupList; } - async getGroupExtFE0Info(groupCode: string[], forced = true) { + async getGroupExtFE0Info(groupCodes: Array, forced = true) { return this.context.session.getGroupService().getGroupExt0xEF0Info( - groupCode, + groupCodes, [], { bindGuildId: 1, @@ -143,6 +133,15 @@ export class NTQQGroupApi { return this.context.session.getGroupService().getAllMemberList(groupCode, forced); } + async refreshGroups() { + let groups = await this.getGroups(true); + let tempGroupCache = new Map(); + for (const group of groups) { + tempGroupCache.set(group.groupCode, group); + } + this.groupCache = tempGroupCache; + } + async refreshGroupMemberCache(groupCode: string) { try { const members = await this.getGroupMemberAll(groupCode, true); @@ -159,46 +158,29 @@ export class NTQQGroupApi { } return this.groupMemberCache; } - // 后台补全复杂信息 - // let event = (async () => { - // let data = (await Promise.allSettled(members.result.ids.map(e => this.core.apis.UserApi.getUserDetailInfo(e.uid)))).filter(e => e.status === 'fulfilled').map(e => e.value); - // data.forEach(e => { - // const existingMember = members.result.infos.get(e.uid); - // if (existingMember) { - // members.result.infos.set(e.uid, { ...existingMember, ...e }); - // } - // }); - // this.groupMemberCache.set(groupCode, members.result.infos); - // })().then().catch(e => this.context.logger.logError(e)); - // 处理首次空缺 - // if (!this.groupMemberCache.get(groupCode)) { - // await event; - // } + async getGroupMember(groupCode: string | number, memberUinOrUid: string | number) { const groupCodeStr = groupCode.toString(); const memberUinOrUidStr = memberUinOrUid.toString(); - // 检查群缓存 + // 获取群成员缓存 let members = this.groupMemberCache.get(groupCodeStr); if (!members) { members = (await this.refreshGroupMemberCache(groupCodeStr)).get(groupCodeStr); } - function getMember() { - let member: GroupMember | undefined; + const getMember = () => { if (isNumeric(memberUinOrUidStr)) { - member = Array.from(members!.values()).find(member => member.uin === memberUinOrUidStr); + return Array.from(members!.values()).find(member => member.uin === memberUinOrUidStr); } else { - member = members!.get(memberUinOrUidStr); + return members!.get(memberUinOrUidStr); } - return member; - } - + }; let member = getMember(); - // 不存在群友缓存 尝试刷新 + // 如果缓存中不存在该成员,尝试刷新缓存 if (!member) { - await this.refreshGroupMemberCache(groupCode.toString()); + members = (await this.refreshGroupMemberCache(groupCodeStr)).get(groupCodeStr); member = getMember(); } return member; @@ -212,7 +194,7 @@ export class NTQQGroupApi { return this.context.session.getRichMediaService().createGroupFolder(groupCode, folderName); } - async DelGroupFile(groupCode: string, files: string[]) { + async DelGroupFile(groupCode: string, files: Array) { return this.context.session.getRichMediaService().deleteGroupFile(groupCode, [102], files); } @@ -220,14 +202,14 @@ export class NTQQGroupApi { return this.context.session.getRichMediaService().deleteGroupFolder(groupCode, folderId); } - async addGroupEssence(GroupCode: string, msgId: string) { + async addGroupEssence(groupCode: string, msgId: string) { const MsgData = await this.context.session.getMsgService().getMsgsIncludeSelf({ chatType: 2, guildId: '', - peerUid: GroupCode, + peerUid: groupCode, }, msgId, 1, false); const param = { - groupCode: GroupCode, + groupCode: groupCode, msgRandom: parseInt(MsgData.msgList[0].msgRandom), msgSeq: parseInt(MsgData.msgList[0].msgSeq), }; @@ -238,9 +220,9 @@ export class NTQQGroupApi { return this.context.session.getGroupService().kickMemberV2(param); } - async deleteGroupBulletin(GroupCode: string, noticeId: string) { + async deleteGroupBulletin(groupCode: string, noticeId: string) { const psKey = (await this.core.apis.UserApi.getPSkey(['qun.qq.com'])).domainPskeyMap.get('qun.qq.com')!; - return this.context.session.getGroupService().deleteGroupBulletin(GroupCode, psKey, noticeId); + return this.context.session.getGroupService().deleteGroupBulletin(groupCode, psKey, noticeId); } async quitGroupV2(GroupCode: string, needDeleteLocalMsg: boolean) { @@ -251,37 +233,37 @@ export class NTQQGroupApi { return this.context.session.getGroupService().quitGroupV2(param); } - async removeGroupEssenceBySeq(GroupCode: string, msgRandom: string, msgSeq: string) { + async removeGroupEssenceBySeq(groupCode: string, msgRandom: string, msgSeq: string) { const param = { - groupCode: GroupCode, + groupCode: groupCode, msgRandom: parseInt(msgRandom), msgSeq: parseInt(msgSeq), }; return this.context.session.getGroupService().removeGroupEssence(param); } - async removeGroupEssence(GroupCode: string, msgId: string) { + async removeGroupEssence(groupCode: string, msgId: string) { const MsgData = await this.context.session.getMsgService().getMsgsIncludeSelf({ chatType: 2, guildId: '', - peerUid: GroupCode, + peerUid: groupCode, }, msgId, 1, false); const param = { - groupCode: GroupCode, + groupCode: groupCode, msgRandom: parseInt(MsgData.msgList[0].msgRandom), msgSeq: parseInt(MsgData.msgList[0].msgSeq), }; return this.context.session.getGroupService().removeGroupEssence(param); } - async getSingleScreenNotifies(doubt: boolean, num: number) { + async getSingleScreenNotifies(doubt: boolean, count: number) { const [, , , notifies] = await this.core.eventWrapper.callNormalEventV2( 'NodeIKernelGroupService/getSingleScreenNotifies', 'NodeIKernelGroupListener/onGroupSingleScreenNotifies', [ doubt, '', - num, + count, ], ); return notifies; @@ -305,44 +287,43 @@ export class NTQQGroupApi { return ret.groupInfos.find(g => g.groupCode === groupCode); } - async getGroupMemberEx(GroupCode: string, uid: string, forced = false, retry = 2) { + async getGroupMemberEx(groupCode: string, uid: string, forced: boolean = false, retry: number = 2) { const data = await solveAsyncProblem((eventWrapper: NTEventWrapper, GroupCode: string, uid: string, forced = false) => { return eventWrapper.callNormalEventV2( 'NodeIKernelGroupService/getMemberInfo', 'NodeIKernelGroupListener/onMemberInfoChange', - [GroupCode, [uid], forced], + [groupCode, [uid], forced], (ret) => ret.result === 0, (params, _, members) => params === GroupCode && members.size > 0 && members.has(uid), 1, forced ? 2500 : 250 ); - }, this.core.eventWrapper, GroupCode, uid, forced); + }, this.core.eventWrapper, groupCode, uid, forced); if (data && data[3] instanceof Map && data[3].has(uid)) { return data[3].get(uid); } if (retry > 0) { - const trydata = await this.getGroupMemberEx(GroupCode, uid, true, retry - 1) as GroupMember | undefined; + const trydata = await this.getGroupMemberEx(groupCode, uid, true, retry - 1) as GroupMember | undefined; if (trydata) return trydata; } return undefined; } - async getGroupFileCount(group_ids: Array) { - return this.context.session.getRichMediaService().batchGetGroupFileCount(group_ids); + async getGroupFileCount(groupCodes: Array) { + return this.context.session.getRichMediaService().batchGetGroupFileCount(groupCodes); } - async getArkJsonGroupShare(GroupCode: string) { + async getArkJsonGroupShare(groupCode: string) { const ret = await this.core.eventWrapper.callNoListenerEvent( 'NodeIKernelGroupService/getGroupRecommendContactArkJson', - GroupCode, + groupCode, ) as GeneralCallResult & { arkJson: string }; return ret.arkJson; } - //需要异常处理 - async uploadGroupBulletinPic(GroupCode: string, imageurl: string) { + async uploadGroupBulletinPic(groupCode: string, imageurl: string) { const _Pskey = (await this.core.apis.UserApi.getPSkey(['qun.qq.com'])).domainPskeyMap.get('qun.qq.com')!; - return this.context.session.getGroupService().uploadGroupBulletinPic(GroupCode, _Pskey, imageurl); + return this.context.session.getGroupService().uploadGroupBulletinPic(groupCode, _Pskey, imageurl); } async handleGroupRequest(flag: string, operateType: NTGroupRequestOperateTypes, reason?: string) { @@ -364,36 +345,36 @@ export class NTQQGroupApi { }); } - async quitGroup(groupQQ: string) { - return this.context.session.getGroupService().quitGroup(groupQQ); + async quitGroup(groupCode: string) { + return this.context.session.getGroupService().quitGroup(groupCode); } - async kickMember(groupQQ: string, kickUids: string[], refuseForever: boolean = false, kickReason: string = '') { - return this.context.session.getGroupService().kickMember(groupQQ, kickUids, refuseForever, kickReason); + async kickMember(groupCode: string, kickUids: string[], refuseForever: boolean = false, kickReason: string = '') { + return this.context.session.getGroupService().kickMember(groupCode, kickUids, refuseForever, kickReason); } - async banMember(groupQQ: string, memList: Array<{ uid: string, timeStamp: number }>) { + async banMember(groupCode: string, memList: Array<{ uid: string, timeStamp: number }>) { // timeStamp为秒数, 0为解除禁言 - return this.context.session.getGroupService().setMemberShutUp(groupQQ, memList); + return this.context.session.getGroupService().setMemberShutUp(groupCode, memList); } - async banGroup(groupQQ: string, shutUp: boolean) { - return this.context.session.getGroupService().setGroupShutUp(groupQQ, shutUp); + async banGroup(groupCode: string, shutUp: boolean) { + return this.context.session.getGroupService().setGroupShutUp(groupCode, shutUp); } - async setMemberCard(groupQQ: string, memberUid: string, cardName: string) { - return this.context.session.getGroupService().modifyMemberCardName(groupQQ, memberUid, cardName); + async setMemberCard(groupCode: string, memberUid: string, cardName: string) { + return this.context.session.getGroupService().modifyMemberCardName(groupCode, memberUid, cardName); } - async setMemberRole(groupQQ: string, memberUid: string, role: NTGroupMemberRole) { - return this.context.session.getGroupService().modifyMemberRole(groupQQ, memberUid, role); + async setMemberRole(groupCode: string, memberUid: string, role: NTGroupMemberRole) { + return this.context.session.getGroupService().modifyMemberRole(groupCode, memberUid, role); } - async setGroupName(groupQQ: string, groupName: string) { - return this.context.session.getGroupService().modifyGroupName(groupQQ, groupName, false); + async setGroupName(groupCode: string, groupName: string) { + return this.context.session.getGroupService().modifyGroupName(groupCode, groupName, false); } - async publishGroupBulletin(groupQQ: string, content: string, picInfo: { + async publishGroupBulletin(groupCode: string, content: string, picInfo: { id: string, width: number, height: number @@ -407,11 +388,11 @@ export class NTQQGroupApi { pinned: pinned, confirmRequired: confirmRequired, }; - return this.context.session.getGroupService().publishGroupBulletin(groupQQ, psKey!, data); + return this.context.session.getGroupService().publishGroupBulletin(groupCode, psKey!, data); } - async getGroupRemainAtTimes(GroupCode: string) { - return this.context.session.getGroupService().getGroupRemainAtTimes(GroupCode); + async getGroupRemainAtTimes(groupCode: string) { + return this.context.session.getGroupService().getGroupRemainAtTimes(groupCode); } async getMemberExtInfo(groupCode: string, uin: string) { diff --git a/src/core/apis/user.ts b/src/core/apis/user.ts index 90c99c36..99d437ea 100644 --- a/src/core/apis/user.ts +++ b/src/core/apis/user.ts @@ -18,6 +18,15 @@ export class NTQQUserApi { async getStatusByUid(uid: string) { return this.context.session.getProfileService().getStatus(uid); } + + async getCoreAndBaseInfo(uids: string[]) { + return await this.core.eventWrapper.callNoListenerEvent( + 'NodeIKernelProfileService/getCoreAndBaseInfo', + 'nodeStore', + uids, + ); + } + // 默认获取自己的 type = 2 获取别人 type = 1 async getProfileLike(uid: string, start: number, count: number, type: number = 2) { return this.context.session.getProfileLikeService().getBuddyProfileLike({ diff --git a/src/core/services/NodeIKernelGroupService.ts b/src/core/services/NodeIKernelGroupService.ts index 61f3179a..83a9cc92 100644 --- a/src/core/services/NodeIKernelGroupService.ts +++ b/src/core/services/NodeIKernelGroupService.ts @@ -193,7 +193,7 @@ export interface NodeIKernelGroupService { getGroupNotifiesUnreadCount(unknown: boolean): Promise; - clearGroupNotifiesUnreadCount(unknown: boolean): void; + clearGroupNotifiesUnreadCount(doubt: boolean): void; operateSysNotify( doubt: boolean, diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index a9decfea..7af4f11f 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -971,6 +971,7 @@ export class OneBotMsgApi { if (SysMessage.contentHead.type == 33 && SysMessage.body?.msgContent) { const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent); this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()).then().catch(); + this.core.apis.GroupApi.refreshGroups().then().catch(); return new OB11GroupIncreaseEvent( this.core, groupChange.groupUin, @@ -981,6 +982,7 @@ export class OneBotMsgApi { } else if (SysMessage.contentHead.type == 34 && SysMessage.body?.msgContent) { const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent); this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()).then().catch(); + this.core.apis.GroupApi.refreshGroups().then().catch(); return new OB11GroupDecreaseEvent( this.core, groupChange.groupUin, From 1ce8be3c7e1bc73df57ab611b8842fcc40f76ed6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 4 Dec 2024 10:47:21 +0800 Subject: [PATCH 185/418] =?UTF-8?q?fix:=20=E7=B2=BE=E7=AE=80GroupApi?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/apis/group.ts | 35 +++-------------------------------- src/onebot/api/msg.ts | 2 -- 2 files changed, 3 insertions(+), 34 deletions(-) diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index 41fa1057..fd347c3e 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -16,7 +16,6 @@ import { NTEventWrapper } from '@/common/event'; export class NTQQGroupApi { context: InstanceContext; core: NapCatCore; - groupCache: Map = new Map(); groupMemberCache: Map> = new Map>(); essenceLRU = new LimitedHashTable(1000); @@ -24,17 +23,15 @@ export class NTQQGroupApi { this.context = context; this.core = core; } - + async initApi() { this.initCache().then().catch(e => this.context.logger.logError(e)); } async initCache() { - await this.core.apis.GroupApi.refreshGroups(); - for (const group of this.groupCache.keys()) { - await this.refreshGroupMemberCache(group); + for (const group of await this.getGroups(true)) { + this.refreshGroupMemberCache(group.groupCode).then().catch(); } - this.context.logger.logDebug(`加载${this.groupCache.size}个群组缓存完成`); } async fetchGroupEssenceList(groupCode: string) { @@ -111,36 +108,10 @@ export class NTQQGroupApi { ); } - async getGroup(groupCode: string, forced = false) { - let group = this.groupCache.get(groupCode.toString()); - if (!group) { - try { - const groupList = await this.getGroups(forced); - if (groupList.length) { - groupList.forEach(g => { - this.groupCache.set(g.groupCode, g); - }); - } - } catch (e) { - return undefined; - } - } - group = this.groupCache.get(groupCode.toString()); - return group; - } - async getGroupMemberAll(groupCode: string, forced = false) { return this.context.session.getGroupService().getAllMemberList(groupCode, forced); } - async refreshGroups() { - let groups = await this.getGroups(true); - let tempGroupCache = new Map(); - for (const group of groups) { - tempGroupCache.set(group.groupCode, group); - } - this.groupCache = tempGroupCache; - } async refreshGroupMemberCache(groupCode: string) { try { diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 7af4f11f..a9decfea 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -971,7 +971,6 @@ export class OneBotMsgApi { if (SysMessage.contentHead.type == 33 && SysMessage.body?.msgContent) { const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent); this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()).then().catch(); - this.core.apis.GroupApi.refreshGroups().then().catch(); return new OB11GroupIncreaseEvent( this.core, groupChange.groupUin, @@ -982,7 +981,6 @@ export class OneBotMsgApi { } else if (SysMessage.contentHead.type == 34 && SysMessage.body?.msgContent) { const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent); this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()).then().catch(); - this.core.apis.GroupApi.refreshGroups().then().catch(); return new OB11GroupDecreaseEvent( this.core, groupChange.groupUin, From 41748c0b3f1956974dfacb860515c641be47ed3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 4 Dec 2024 10:55:56 +0800 Subject: [PATCH 186/418] =?UTF-8?q?refactor:=20=E6=95=B0=E6=8D=AE=E6=B8=85?= =?UTF-8?q?=E7=90=86=E4=B8=8E=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/apis/group.ts | 19 +++++-------------- .../action/go-cqhttp/CreateGroupFileFolder.ts | 2 +- .../action/go-cqhttp/DeleteGroupFile.ts | 2 +- .../action/go-cqhttp/DeleteGroupFileFolder.ts | 2 +- src/onebot/api/msg.ts | 9 ++++++++- 5 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index fd347c3e..35674530 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -1,6 +1,5 @@ import { GeneralCallResult, - Group, GroupMember, NTGroupMemberRole, NTGroupRequestOperateTypes, @@ -112,24 +111,16 @@ export class NTQQGroupApi { return this.context.session.getGroupService().getAllMemberList(groupCode, forced); } - async refreshGroupMemberCache(groupCode: string) { try { const members = await this.getGroupMemberAll(groupCode, true); - let existingMembers = this.groupMemberCache.get(groupCode); - if (!existingMembers) { - existingMembers = new Map(); - this.groupMemberCache.set(groupCode, existingMembers); - } - members.result.infos.forEach((value) => { - existingMembers.set(value.uid, { ...value, ...existingMembers.get(value.uid) }); - }); + this.groupMemberCache.set(groupCode, members.result.infos); } catch (e) { this.context.logger.logError(`刷新群成员缓存失败, 群号: ${groupCode}, 错误: ${e}`); } return this.groupMemberCache; } - + async getGroupMember(groupCode: string | number, memberUinOrUid: string | number) { const groupCodeStr = groupCode.toString(); const memberUinOrUidStr = memberUinOrUid.toString(); @@ -161,15 +152,15 @@ export class NTQQGroupApi { return this.context.session.getGroupService().getGroupRecommendContactArkJson(groupCode); } - async CreatGroupFileFolder(groupCode: string, folderName: string) { + async creatGroupFileFolder(groupCode: string, folderName: string) { return this.context.session.getRichMediaService().createGroupFolder(groupCode, folderName); } - async DelGroupFile(groupCode: string, files: Array) { + async delGroupFile(groupCode: string, files: Array) { return this.context.session.getRichMediaService().deleteGroupFile(groupCode, [102], files); } - async DelGroupFileFolder(groupCode: string, folderId: string) { + async delGroupFileFolder(groupCode: string, folderId: string) { return this.context.session.getRichMediaService().deleteGroupFolder(groupCode, folderId); } diff --git a/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts b/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts index 01af44c6..3764f148 100644 --- a/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts +++ b/src/onebot/action/go-cqhttp/CreateGroupFileFolder.ts @@ -13,6 +13,6 @@ export class CreateGroupFileFolder extends OneBotAction { actionName = ActionName.GoCQHTTP_CreateGroupFileFolder; payloadSchema = SchemaData; async _handle(payload: Payload) { - return (await this.core.apis.GroupApi.CreatGroupFileFolder(payload.group_id.toString(), payload.folder_name)).resultWithGroupItem; + return (await this.core.apis.GroupApi.creatGroupFileFolder(payload.group_id.toString(), payload.folder_name)).resultWithGroupItem; } } diff --git a/src/onebot/action/go-cqhttp/DeleteGroupFile.ts b/src/onebot/action/go-cqhttp/DeleteGroupFile.ts index 244a5368..85b43cce 100644 --- a/src/onebot/action/go-cqhttp/DeleteGroupFile.ts +++ b/src/onebot/action/go-cqhttp/DeleteGroupFile.ts @@ -17,6 +17,6 @@ export class DeleteGroupFile extends OneBotAction { async _handle(payload: Payload) { const data = FileNapCatOneBotUUID.decodeModelId(payload.file_id); if (!data) throw new Error('Invalid file_id'); - return await this.core.apis.GroupApi.DelGroupFile(payload.group_id.toString(), [data.fileId]); + return await this.core.apis.GroupApi.delGroupFile(payload.group_id.toString(), [data.fileId]); } } diff --git a/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts b/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts index c6e20df9..f8a813a4 100644 --- a/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts +++ b/src/onebot/action/go-cqhttp/DeleteGroupFileFolder.ts @@ -14,7 +14,7 @@ export class DeleteGroupFileFolder extends OneBotAction { actionName = ActionName.GoCQHTTP_DeleteGroupFileFolder; payloadSchema = SchemaData; async _handle(payload: Payload) { - return (await this.core.apis.GroupApi.DelGroupFileFolder( + return (await this.core.apis.GroupApi.delGroupFileFolder( payload.group_id.toString(), payload.folder ?? payload.folder_id ?? '')).groupFileCommonResult; } } diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index a9decfea..94c99fd1 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -980,7 +980,14 @@ export class OneBotMsgApi { ); } else if (SysMessage.contentHead.type == 34 && SysMessage.body?.msgContent) { const groupChange = new NapProtoMsg(GroupChange).decode(SysMessage.body.msgContent); - this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()).then().catch(); + if (groupChange.memberUid === this.core.selfInfo.uid) { + setTimeout(() => { + this.core.apis.GroupApi.groupMemberCache.delete(groupChange.groupUin.toString()); + }, 5000); + // 自己被踢了 5S后回收 + } else { + this.core.apis.GroupApi.refreshGroupMemberCache(groupChange.groupUin.toString()).then().catch(); + } return new OB11GroupDecreaseEvent( this.core, groupChange.groupUin, From 6cf047af3953ea08f321531c2c1d5b9f02e5fadd Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Wed, 4 Dec 2024 02:57:21 +0000 Subject: [PATCH 187/418] release: v4.2.17 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index a8b4b262..f5a4713e 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.16", + "version": "4.2.17", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index cc8c4c22..84772ddc 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.16", + "version": "4.2.17", "scripts": { "build:universal": "npm run build:webui && vite build --mode universal || exit 1", "build:framework": "npm run build:webui && vite build --mode framework || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index a256536f..95c83215 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.16'; +export const napCatVersion = '4.2.17'; From a482fa3a8db74767770cd3a1c04bddfd1ae534f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 4 Dec 2024 11:38:59 +0800 Subject: [PATCH 188/418] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E6=96=87=E4=BB=B6=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/file.ts | 113 ++++-------------- src/core/apis/file.ts | 26 ++-- src/core/helper/msg.ts | 4 +- src/onebot/action/extends/OCRImage.ts | 4 +- src/onebot/action/extends/SetQQAvatar.ts | 4 +- .../action/go-cqhttp/SendGroupNotice.ts | 4 +- .../action/go-cqhttp/SetGroupPortrait.ts | 4 +- .../action/go-cqhttp/UploadGroupFile.ts | 4 +- .../action/go-cqhttp/UploadPrivateFile.ts | 4 +- src/onebot/action/group/SendGroupAiRecord.ts | 4 +- src/onebot/api/msg.ts | 8 +- 11 files changed, 55 insertions(+), 124 deletions(-) diff --git a/src/common/file.ts b/src/common/file.ts index cab8abb0..aa1a019e 100644 --- a/src/common/file.ts +++ b/src/common/file.ts @@ -1,9 +1,7 @@ import fs from 'fs'; import { stat } from 'fs/promises'; import crypto, { randomUUID } from 'crypto'; -import util from 'util'; import path from 'node:path'; -import * as fileType from 'file-type'; import { solveProblem } from '@/common/helper'; export interface HttpDownloadOptions { @@ -15,7 +13,6 @@ type Uri2LocalRes = { success: boolean, errMsg: string, fileName: string, - ext: string, path: string } @@ -73,27 +70,6 @@ async function checkFile(path: string): Promise { // 如果文件存在,则无需做任何事情,Promise 解决(resolve)自身 } -export async function file2base64(path: string) { - const readFile = util.promisify(fs.readFile); - const result = { - err: '', - data: '', - }; - try { - try { - await checkFileExist(path, 5000); - } catch (e: any) { - result.err = e.toString(); - return result; - } - const data = await readFile(path); - result.data = data.toString('base64'); - } catch (err: any) { - result.err = err.toString(); - } - return result; -} - export function calculateFileMD5(filePath: string): Promise { return new Promise((resolve, reject) => { // 创建一个流式读取器 @@ -160,20 +136,6 @@ export async function httpDownload(options: string | HttpDownloadOptions): Promi return Buffer.from(buffer); } -export async function checkFileV2(filePath: string) { - try { - const ext: string | undefined = (await fileType.fileTypeFromFile(filePath))?.ext; - if (ext) { - fs.renameSync(filePath, filePath + `.${ext}`); - filePath += `.${ext}`; - return { success: true, ext: ext, path: filePath }; - } - } catch (e) { - // log("获取文件类型失败", filePath,e.stack) - } - return { success: false, ext: '', path: filePath }; -} - export enum FileUriType { Unknown = 0, Local = 1, @@ -213,63 +175,32 @@ export async function checkUriType(Uri: string) { return { Uri: Uri, Type: FileUriType.Unknown }; } -export async function uri2local(dir: string, uri: string, filename: string | undefined = undefined): Promise { +export async function uriToLocalFile(dir: string, uri: string): Promise { const { Uri: HandledUri, Type: UriType } = await checkUriType(uri); - //解析失败 - const tempName = randomUUID(); - if (!filename) filename = randomUUID(); + const filename = randomUUID(); + const filePath = path.join(dir, filename); - //解析Http和Https协议 - if (UriType == FileUriType.Unknown) { - return { success: false, errMsg: `未知文件类型, uri= ${uri}`, fileName: '', ext: '', path: '' }; - } + switch (UriType) { + case FileUriType.Local: + const fileExt = path.extname(HandledUri); + const localFileName = path.basename(HandledUri, fileExt) + fileExt; + const tempFilePath = path.join(dir, filename + fileExt); + fs.copyFileSync(HandledUri, tempFilePath); + return { success: true, errMsg: '', fileName: localFileName, path: tempFilePath }; - //解析File协议和本地文件 - if (UriType == FileUriType.Local) { - const fileExt = path.extname(HandledUri); - let filename = path.basename(HandledUri, fileExt); - filename += fileExt; - //复制文件到临时文件并保持后缀 - const filenameTemp = tempName + fileExt; - const filePath = path.join(dir, filenameTemp); - fs.copyFileSync(HandledUri, filePath); - return { success: true, errMsg: '', fileName: filename, ext: fileExt, path: filePath }; - } + case FileUriType.Remote: + const buffer = await httpDownload(HandledUri); + fs.writeFileSync(filePath, buffer, { flag: 'wx' }); + return { success: true, errMsg: '', fileName: filename, path: filePath }; - //接下来都要有文件名 - if (UriType == FileUriType.Remote) { - const pathInfo = path.parse(decodeURIComponent(new URL(HandledUri).pathname)); - if (pathInfo.name) { - const pathlen = 200 - dir.length - pathInfo.name.length; - filename = pathlen > 0 ? pathInfo.name.substring(0, pathlen) : pathInfo.name.substring(pathInfo.name.length, pathInfo.name.length - 10);//过长截断 - if (pathInfo.ext) { - filename += pathInfo.ext; - } - } - filename = filename.replace(/[/\\:*?"<>|]/g, '_'); - const fileExt = path.extname(HandledUri).replace(/[/\\:*?"<>|]/g, '_').substring(0, 10); - const filePath = path.join(dir, tempName + fileExt); - const buffer = await httpDownload(HandledUri); - //没有文件就创建 - fs.writeFileSync(filePath, buffer, { flag: 'wx' }); - return { success: true, errMsg: '', fileName: filename, ext: fileExt, path: filePath }; - } + case FileUriType.Base64: + const base64 = HandledUri.replace(/^base64:\/\//, ''); + const base64Buffer = Buffer.from(base64, 'base64'); + fs.writeFileSync(filePath, base64Buffer, { flag: 'wx' }); + return { success: true, errMsg: '', fileName: filename, path: filePath }; - //解析Base64 - if (UriType == FileUriType.Base64) { - const base64 = HandledUri.replace(/^base64:\/\//, ''); - const buffer = Buffer.from(base64, 'base64'); - let filePath = path.join(dir, filename); - let fileExt = ''; - fs.writeFileSync(filePath, buffer); - const { success, ext, path: fileTypePath } = await checkFileV2(filePath); - if (success) { - filePath = fileTypePath; - fileExt = ext; - filename = filename + '.' + ext; - } - return { success: true, errMsg: '', fileName: filename, ext: fileExt, path: filePath }; + default: + return { success: false, errMsg: `识别URL失败, uri= ${uri}`, fileName: '', path: '' }; } - return { success: false, errMsg: `未知文件类型, uri= ${uri}`, fileName: '', ext: '', path: '' }; -} +} \ No newline at end of file diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index 07860ca8..eb58c916 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -6,7 +6,6 @@ import { Peer, PicElement, PicSubType, - PicType, RawMessage, SendFileElement, SendPicElement, @@ -17,7 +16,7 @@ import path from 'path'; import fs from 'fs'; import fsPromises from 'fs/promises'; import { InstanceContext, NapCatCore, SearchResultItem } from '@/core'; -import * as fileType from 'file-type'; +import { fileTypeFromFile } from 'file-type'; import imageSize from 'image-size'; import { ISizeCalculationResult } from 'image-size/dist/types/interface'; import { RkeyManager } from '@/core/helper/rkey'; @@ -41,7 +40,7 @@ export class NTQQFileApi { this.rkeyManager = new RkeyManager([ 'https://rkey.napneko.icu/rkeys' ], - this.context.logger + this.context.logger ); } @@ -62,7 +61,7 @@ export class NTQQFileApi { async uploadFile(filePath: string, elementType: ElementType = ElementType.PIC, elementSubType: number = 0) { const fileMd5 = await calculateFileMD5(filePath); - const extOrEmpty = (await fileType.fileTypeFromFile(filePath))?.ext; + let extOrEmpty = await fileTypeFromFile(filePath).then(e => e?.ext ?? '').catch(e => ''); const ext = extOrEmpty ? `.${extOrEmpty}` : ''; let fileName = `${path.basename(filePath)}`; if (fileName.indexOf('.') === -1) { @@ -81,6 +80,7 @@ export class NTQQFileApi { }); await this.copyFile(filePath, mediaPath); + console.log('copyFile', filePath, mediaPath); const fileSize = await this.getFileSize(filePath); return { md5: fileMd5, @@ -158,7 +158,7 @@ export class NTQQFileApi { let fileExt = 'mp4'; try { - const tempExt = (await fileType.fileTypeFromFile(filePath))?.ext; + const tempExt = (await fileTypeFromFile(filePath))?.ext; if (tempExt) fileExt = tempExt; } catch (e) { this.context.logger.logError('获取文件类型失败', e); @@ -306,18 +306,18 @@ export class NTQQFileApi { element.elementType === ElementType.FILE ) { switch (element.elementType) { - case ElementType.PIC: + case ElementType.PIC: element.picElement!.sourcePath = elementResults[elementIndex]; - break; - case ElementType.VIDEO: + break; + case ElementType.VIDEO: element.videoElement!.filePath = elementResults[elementIndex]; - break; - case ElementType.PTT: + break; + case ElementType.PTT: element.pttElement!.filePath = elementResults[elementIndex]; - break; - case ElementType.FILE: + break; + case ElementType.FILE: element.fileElement!.filePath = elementResults[elementIndex]; - break; + break; } elementIndex++; } diff --git a/src/core/helper/msg.ts b/src/core/helper/msg.ts index e1d3992e..c28858d8 100644 --- a/src/core/helper/msg.ts +++ b/src/core/helper/msg.ts @@ -1,7 +1,7 @@ -import * as fileType from 'file-type'; +import { fileTypeFromFile } from 'file-type'; import { PicType } from '../types'; export async function getFileTypeForSendType(picPath: string): Promise { - const fileTypeResult = (await fileType.fileTypeFromFile(picPath))?.ext ?? 'jpg'; + const fileTypeResult = (await fileTypeFromFile(picPath))?.ext ?? 'jpg'; const picTypeMap: { [key: string]: PicType } = { //'webp': PicType.NEWPIC_WEBP, 'gif': PicType.NEWPIC_GIF, diff --git a/src/onebot/action/extends/OCRImage.ts b/src/onebot/action/extends/OCRImage.ts index 7f79eab4..dc39b9e0 100644 --- a/src/onebot/action/extends/OCRImage.ts +++ b/src/onebot/action/extends/OCRImage.ts @@ -1,6 +1,6 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { checkFileExist, uri2local } from '@/common/file'; +import { checkFileExist, uriToLocalFile } from '@/common/file'; import fs from 'fs'; import { Static, Type } from '@sinclair/typebox'; @@ -15,7 +15,7 @@ export class OCRImage extends OneBotAction { payloadSchema = SchemaData; async _handle(payload: Payload) { - const { path, success } = (await uri2local(this.core.NapCatTempPath, payload.image)); + const { path, success } = (await uriToLocalFile(this.core.NapCatTempPath, payload.image)); if (!success) { throw new Error(`OCR ${payload.image}失败,image字段可能格式不正确`); } diff --git a/src/onebot/action/extends/SetQQAvatar.ts b/src/onebot/action/extends/SetQQAvatar.ts index f8003fec..d5b656a1 100644 --- a/src/onebot/action/extends/SetQQAvatar.ts +++ b/src/onebot/action/extends/SetQQAvatar.ts @@ -1,7 +1,7 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import fs from 'node:fs/promises'; -import { checkFileExist, uri2local } from '@/common/file'; +import { checkFileExist, uriToLocalFile } from '@/common/file'; import { Static, Type } from '@sinclair/typebox'; const SchemaData = Type.Object({ @@ -14,7 +14,7 @@ export default class SetAvatar extends OneBotAction { actionName = ActionName.SetQQAvatar; payloadSchema = SchemaData; async _handle(payload: Payload): Promise { - const { path, success } = (await uri2local(this.core.NapCatTempPath, payload.file)); + const { path, success } = (await uriToLocalFile(this.core.NapCatTempPath, payload.file)); if (!success) { throw new Error(`头像${payload.file}设置失败,file字段可能格式不正确`); } diff --git a/src/onebot/action/go-cqhttp/SendGroupNotice.ts b/src/onebot/action/go-cqhttp/SendGroupNotice.ts index 998d711f..6dd8a343 100644 --- a/src/onebot/action/go-cqhttp/SendGroupNotice.ts +++ b/src/onebot/action/go-cqhttp/SendGroupNotice.ts @@ -1,4 +1,4 @@ -import { checkFileExist, uri2local } from '@/common/file'; +import { checkFileExist, uriToLocalFile } from '@/common/file'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { unlink } from 'node:fs/promises'; @@ -28,7 +28,7 @@ export class SendGroupNotice extends OneBotAction { const { path, success, - } = (await uri2local(this.core.NapCatTempPath, payload.image)); + } = (await uriToLocalFile(this.core.NapCatTempPath, payload.image)); if (!success) { throw new Error(`群公告${payload.image}设置失败,image字段可能格式不正确`); } diff --git a/src/onebot/action/go-cqhttp/SetGroupPortrait.ts b/src/onebot/action/go-cqhttp/SetGroupPortrait.ts index b9354dd5..41532109 100644 --- a/src/onebot/action/go-cqhttp/SetGroupPortrait.ts +++ b/src/onebot/action/go-cqhttp/SetGroupPortrait.ts @@ -1,6 +1,6 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -import { checkFileExistV2, uri2local } from '@/common/file'; +import { checkFileExistV2, uriToLocalFile } from '@/common/file'; import { Static, Type } from '@sinclair/typebox'; import fs from 'node:fs/promises'; const SchemaData = Type.Object({ @@ -15,7 +15,7 @@ export default class SetGroupPortrait extends OneBotAction { payloadSchema = SchemaData; async _handle(payload: Payload): Promise { - const { path, success } = (await uri2local(this.core.NapCatTempPath, payload.file)); + const { path, success } = (await uriToLocalFile(this.core.NapCatTempPath, payload.file)); if (!success) { throw new Error(`头像${payload.file}设置失败,file字段可能格式不正确`); } diff --git a/src/onebot/action/go-cqhttp/UploadGroupFile.ts b/src/onebot/action/go-cqhttp/UploadGroupFile.ts index 62e5cf70..3c44458a 100644 --- a/src/onebot/action/go-cqhttp/UploadGroupFile.ts +++ b/src/onebot/action/go-cqhttp/UploadGroupFile.ts @@ -2,7 +2,7 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { ChatType, Peer } from '@/core/types'; import fs from 'fs'; -import { uri2local } from '@/common/file'; +import { uriToLocalFile } from '@/common/file'; import { SendMessageContext } from '@/onebot/api'; import { Static, Type } from '@sinclair/typebox'; @@ -25,7 +25,7 @@ export default class GoCQHTTPUploadGroupFile extends OneBotAction if (fs.existsSync(file)) { file = `file://${file}`; } - const downloadResult = await uri2local(this.core.NapCatTempPath, file); + const downloadResult = await uriToLocalFile(this.core.NapCatTempPath, file); const peer: Peer = { chatType: ChatType.KCHATTYPEGROUP, peerUid: payload.group_id.toString(), diff --git a/src/onebot/action/go-cqhttp/UploadPrivateFile.ts b/src/onebot/action/go-cqhttp/UploadPrivateFile.ts index 4633162e..aa555852 100644 --- a/src/onebot/action/go-cqhttp/UploadPrivateFile.ts +++ b/src/onebot/action/go-cqhttp/UploadPrivateFile.ts @@ -2,7 +2,7 @@ import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; import { ChatType, Peer, SendFileElement } from '@/core/types'; import fs from 'fs'; -import { uri2local } from '@/common/file'; +import { uriToLocalFile } from '@/common/file'; import { SendMessageContext } from '@/onebot/api'; import { ContextMode, createContext } from '@/onebot/action/msg/SendMsg'; import { Static, Type } from '@sinclair/typebox'; @@ -36,7 +36,7 @@ export default class GoCQHTTPUploadPrivateFile extends OneBotAction Date: Wed, 4 Dec 2024 11:40:36 +0800 Subject: [PATCH 189/418] =?UTF-8?q?chore:=20=E7=A7=BB=E5=87=BA=E8=B0=83?= =?UTF-8?q?=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/apis/file.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index eb58c916..186c7ba6 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -80,7 +80,6 @@ export class NTQQFileApi { }); await this.copyFile(filePath, mediaPath); - console.log('copyFile', filePath, mediaPath); const fileSize = await this.getFileSize(filePath); return { md5: fileMd5, From 388eb57d0d4b2bef4210958317d38c88ff5c031b Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Wed, 4 Dec 2024 03:40:59 +0000 Subject: [PATCH 190/418] release: v4.2.18 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index f5a4713e..d1ddcacb 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.17", + "version": "4.2.18", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 84772ddc..ccc31de9 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.17", + "version": "4.2.18", "scripts": { "build:universal": "npm run build:webui && vite build --mode universal || exit 1", "build:framework": "npm run build:webui && vite build --mode framework || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index 95c83215..9a4ae69c 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.17'; +export const napCatVersion = '4.2.18'; From eb99379a79b77c619466ab30b9ee1e5539f32ede Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 4 Dec 2024 18:29:33 +0800 Subject: [PATCH 191/418] =?UTF-8?q?fix:=20=E6=80=A7=E8=83=BD=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/onebot/action/group/GetGroupMemberList.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/onebot/action/group/GetGroupMemberList.ts b/src/onebot/action/group/GetGroupMemberList.ts index 0bb3fda4..35500059 100644 --- a/src/onebot/action/group/GetGroupMemberList.ts +++ b/src/onebot/action/group/GetGroupMemberList.ts @@ -21,7 +21,8 @@ export class GetGroupMemberList extends OneBotAction const memberCache = this.core.apis.GroupApi.groupMemberCache; let groupMembers = memberCache.get(groupIdStr); if (noCache || !groupMembers) { - await this.core.apis.GroupApi.refreshGroupMemberCache(groupIdStr); + this.core.apis.GroupApi.refreshGroupMemberCache(groupIdStr).then().catch(); + //下次刷新 groupMembers = memberCache.get(groupIdStr); if (!groupMembers) { throw new Error(`Failed to get group member list for group ${groupIdStr}`); From d51d6a5cc1dcd68aecf8e125e0a65442426d412f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 4 Dec 2024 18:41:28 +0800 Subject: [PATCH 192/418] refactor: getUidByUinV2/getUinByUidV2 --- src/core/apis/user.ts | 51 ++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/src/core/apis/user.ts b/src/core/apis/user.ts index 99d437ea..43a81cf6 100644 --- a/src/core/apis/user.ts +++ b/src/core/apis/user.ts @@ -26,7 +26,7 @@ export class NTQQUserApi { uids, ); } - + // 默认获取自己的 type = 2 获取别人 type = 1 async getProfileLike(uid: string, start: number, count: number, type: number = 2) { return this.context.session.getProfileLikeService().getBuddyProfileLike({ @@ -99,7 +99,7 @@ export class NTQQUserApi { }; return RetUser; } - + async getUserDetailInfo(uid: string): Promise { let retUser = await solveAsyncProblem(async (uid) => this.fetchUserDetailInfo(uid, UserDetailSource.KDB), uid); if (retUser && retUser.uin !== '0') { @@ -173,31 +173,38 @@ export class NTQQUserApi { return skey; } - //后期改成流水线处理 async getUidByUinV2(Uin: string) { - let uid = (await this.context.session.getGroupService().getUidByUins([Uin])).uids.get(Uin); - if (uid) return uid; - uid = (await this.context.session.getProfileService().getUidByUin('FriendsServiceImpl', [Uin])).get(Uin); - if (uid) return uid; - uid = (await this.context.session.getUixConvertService().getUid([Uin])).uidInfo.get(Uin); - if (uid) return uid; - const unverifiedUid = (await this.getUserDetailInfoByUin(Uin)).detail.uid;//从QQ Native 特殊转换 - if (unverifiedUid.indexOf('*') == -1) uid = unverifiedUid; - //if (uid) return uid; + const services = [ + () => this.context.session.getGroupService().getUidByUins([Uin]).then((data) => data.uids.get(Uin)).catch(() => undefined), + () => this.context.session.getProfileService().getUidByUin('FriendsServiceImpl', [Uin]).then((data) => data.get(Uin)).catch(() => undefined), + () => this.context.session.getUixConvertService().getUid([Uin]).then((data) => data.uidInfo.get(Uin)).catch(() => undefined), + () => this.getUserDetailInfoByUin(Uin).then((data) => data.detail.uid).catch(() => undefined), + ]; + let uid: string | undefined = undefined; + for (const service of services) { + uid = await service(); + if (uid && uid.indexOf('*') == -1 && uid !== '') { + break; + } + } return uid; } - //后期改成流水线处理 async getUinByUidV2(Uid: string) { - let uin = (await this.context.session.getGroupService().getUinByUids([Uid])).uins.get(Uid); - if (uin && uin !== '0') return uin; - uin = (await this.context.session.getProfileService().getUinByUid('FriendsServiceImpl', [Uid])).get(Uid); - if (uin && uin !== '0') return uin; - uin = (await this.context.session.getUixConvertService().getUin([Uid])).uinInfo.get(Uid); - if (uin && uin !== '0') return uin; - uin = (await this.core.apis.FriendApi.getBuddyIdMap(true)).getKey(Uid); - if (uin && uin !== '0') return uin; - uin = (await this.getUserDetailInfo(Uid)).uin; //从QQ Native 转换 + const services = [ + () => this.context.session.getGroupService().getUinByUids([Uid]).then((data) => data.uins.get(Uid)).catch(() => undefined), + () => this.context.session.getProfileService().getUinByUid('FriendsServiceImpl', [Uid]).then((data) => data.get(Uid)).catch(() => undefined), + () => this.context.session.getUixConvertService().getUin([Uid]).then((data) => data.uinInfo.get(Uid)).catch(() => undefined), + () => this.core.apis.FriendApi.getBuddyIdMap(true).then((data) => data.getKey(Uid)).catch(() => undefined), + () => this.getUserDetailInfo(Uid).then((data) => data.uin).catch(() => undefined), + ]; + let uin: string | undefined = undefined; + for (const service of services) { + uin = await service(); + if (uin && uin !== '0' && uin !== '') { + break; + } + } return uin; } From bb0f65a52d1e3c61f9c1454e98293e3de2140001 Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Wed, 4 Dec 2024 10:42:32 +0000 Subject: [PATCH 193/418] release: v4.2.19 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index d1ddcacb..5a4fe128 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.18", + "version": "4.2.19", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index ccc31de9..12ba1551 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.18", + "version": "4.2.19", "scripts": { "build:universal": "npm run build:webui && vite build --mode universal || exit 1", "build:framework": "npm run build:webui && vite build --mode framework || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index 9a4ae69c..eb3bf162 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.18'; +export const napCatVersion = '4.2.19'; From 02cff040e3732cce1bf1db3330161b8631f134d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 4 Dec 2024 18:50:51 +0800 Subject: [PATCH 194/418] =?UTF-8?q?refactor:=20=E7=A7=BB=E9=99=A4=E6=9C=AA?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=9A=84createUidFromTinyId=E5=92=8CgetStatu?= =?UTF-8?q?sByUid=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/apis/user.ts | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/core/apis/user.ts b/src/core/apis/user.ts index 43a81cf6..f51fd2df 100644 --- a/src/core/apis/user.ts +++ b/src/core/apis/user.ts @@ -11,13 +11,6 @@ export class NTQQUserApi { this.context = context; this.core = core; } - //self_tind格式 - async createUidFromTinyId(tinyId: string) { - return this.context.session.getMsgService().createUidFromTinyId(this.core.selfInfo.uin, tinyId); - } - async getStatusByUid(uid: string) { - return this.context.session.getProfileService().getStatus(uid); - } async getCoreAndBaseInfo(uids: string[]) { return await this.core.eventWrapper.callNoListenerEvent( From e295235a89d156612a92729073aee962c6116967 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 4 Dec 2024 19:45:46 +0800 Subject: [PATCH 195/418] fix: #596 --- src/core/apis/user.ts | 25 ++++++++++++++++--- .../services/NodeIKernelProfileService.ts | 6 ++--- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/core/apis/user.ts b/src/core/apis/user.ts index f51fd2df..34dd046b 100644 --- a/src/core/apis/user.ts +++ b/src/core/apis/user.ts @@ -2,14 +2,20 @@ import { ModifyProfileParams, User, UserDetailSource } from '@/core/types'; import { RequestUtil } from '@/common/request'; import { InstanceContext, NapCatCore, ProfileBizType } from '..'; import { solveAsyncProblem } from '@/common/helper'; +import { promisify } from 'node:util'; +import { LRUCache } from '@/common/lru-cache'; export class NTQQUserApi { context: InstanceContext; core: NapCatCore; + private uidCache: LRUCache; + private uinCache: LRUCache; constructor(context: InstanceContext, core: NapCatCore) { this.context = context; this.core = core; + this.uidCache = new LRUCache(1000); + this.uinCache = new LRUCache(1000); } async getCoreAndBaseInfo(uids: string[]) { @@ -163,20 +169,26 @@ export class NTQQUserApi { if (!skey) { throw new Error('SKey is Empty'); } + return skey; } async getUidByUinV2(Uin: string) { + if (this.uidCache.get(Uin)) { + return this.uidCache.get(Uin); + } const services = [ - () => this.context.session.getGroupService().getUidByUins([Uin]).then((data) => data.uids.get(Uin)).catch(() => undefined), - () => this.context.session.getProfileService().getUidByUin('FriendsServiceImpl', [Uin]).then((data) => data.get(Uin)).catch(() => undefined), () => this.context.session.getUixConvertService().getUid([Uin]).then((data) => data.uidInfo.get(Uin)).catch(() => undefined), + () => promisify> + (this.context.session.getProfileService().getUidByUin)('FriendsServiceImpl', [Uin]).then((data) => data.get(Uin)).catch(() => undefined), + () => this.context.session.getGroupService().getUidByUins([Uin]).then((data) => data.uids.get(Uin)).catch(() => undefined), () => this.getUserDetailInfoByUin(Uin).then((data) => data.detail.uid).catch(() => undefined), ]; let uid: string | undefined = undefined; for (const service of services) { uid = await service(); if (uid && uid.indexOf('*') == -1 && uid !== '') { + this.uidCache.put(Uin, uid); break; } } @@ -184,10 +196,14 @@ export class NTQQUserApi { } async getUinByUidV2(Uid: string) { + if (this.uinCache.get(Uid)) { + return this.uinCache.get(Uid); + } const services = [ - () => this.context.session.getGroupService().getUinByUids([Uid]).then((data) => data.uins.get(Uid)).catch(() => undefined), - () => this.context.session.getProfileService().getUinByUid('FriendsServiceImpl', [Uid]).then((data) => data.get(Uid)).catch(() => undefined), () => this.context.session.getUixConvertService().getUin([Uid]).then((data) => data.uinInfo.get(Uid)).catch(() => undefined), + () => this.context.session.getGroupService().getUinByUids([Uid]).then((data) => data.uins.get(Uid)).catch(() => undefined), + () => promisify> + (this.context.session.getProfileService().getUinByUid)('FriendsServiceImpl', [Uid]).then((data) => data.get(Uid)).catch(() => undefined), () => this.core.apis.FriendApi.getBuddyIdMap(true).then((data) => data.getKey(Uid)).catch(() => undefined), () => this.getUserDetailInfo(Uid).then((data) => data.uin).catch(() => undefined), ]; @@ -195,6 +211,7 @@ export class NTQQUserApi { for (const service of services) { uin = await service(); if (uin && uin !== '0' && uin !== '') { + this.uinCache.put(Uid, uin); break; } } diff --git a/src/core/services/NodeIKernelProfileService.ts b/src/core/services/NodeIKernelProfileService.ts index cfcb18bf..e4f6e6a6 100644 --- a/src/core/services/NodeIKernelProfileService.ts +++ b/src/core/services/NodeIKernelProfileService.ts @@ -4,14 +4,14 @@ import { GeneralCallResult } from '@/core/services/common'; export interface NodeIKernelProfileService { getOtherFlag(callfrom: string, uids: string[]): Promise>; - + getVasInfo(callfrom: string, uids: string[]): Promise>; getRelationFlag(callfrom: string, uids: string[]): Promise>; - getUidByUin(callfrom: string, uin: Array): Promise>; + getUidByUin(callfrom: string, uin: Array): Map; - getUinByUid(callfrom: string, uid: Array): Promise>; + getUinByUid(callfrom: string, uid: Array): Map; getCoreAndBaseInfo(callfrom: string, uids: string[]): Promise>; From 4a2884509ebde3734f96fac42b540e6874afb864 Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Wed, 4 Dec 2024 11:46:12 +0000 Subject: [PATCH 196/418] release: v4.2.20 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 5a4fe128..5075b688 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.19", + "version": "4.2.20", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 12ba1551..7aeff5df 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.19", + "version": "4.2.20", "scripts": { "build:universal": "npm run build:webui && vite build --mode universal || exit 1", "build:framework": "npm run build:webui && vite build --mode framework || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index eb3bf162..19ede97e 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.19'; +export const napCatVersion = '4.2.20'; From 8fb8c888f554187fee01dc00e5f713f210b49cd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 4 Dec 2024 19:48:59 +0800 Subject: [PATCH 197/418] =?UTF-8?q?refactor:=20=E7=A7=BB=E9=99=A4=E6=9C=AA?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=9A=84uidCache=E5=92=8CuinCache=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/apis/user.ts | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/core/apis/user.ts b/src/core/apis/user.ts index 34dd046b..5d8c7881 100644 --- a/src/core/apis/user.ts +++ b/src/core/apis/user.ts @@ -8,14 +8,10 @@ import { LRUCache } from '@/common/lru-cache'; export class NTQQUserApi { context: InstanceContext; core: NapCatCore; - private uidCache: LRUCache; - private uinCache: LRUCache; constructor(context: InstanceContext, core: NapCatCore) { this.context = context; this.core = core; - this.uidCache = new LRUCache(1000); - this.uinCache = new LRUCache(1000); } async getCoreAndBaseInfo(uids: string[]) { @@ -174,9 +170,6 @@ export class NTQQUserApi { } async getUidByUinV2(Uin: string) { - if (this.uidCache.get(Uin)) { - return this.uidCache.get(Uin); - } const services = [ () => this.context.session.getUixConvertService().getUid([Uin]).then((data) => data.uidInfo.get(Uin)).catch(() => undefined), () => promisify> @@ -188,7 +181,6 @@ export class NTQQUserApi { for (const service of services) { uid = await service(); if (uid && uid.indexOf('*') == -1 && uid !== '') { - this.uidCache.put(Uin, uid); break; } } @@ -196,9 +188,6 @@ export class NTQQUserApi { } async getUinByUidV2(Uid: string) { - if (this.uinCache.get(Uid)) { - return this.uinCache.get(Uid); - } const services = [ () => this.context.session.getUixConvertService().getUin([Uid]).then((data) => data.uinInfo.get(Uid)).catch(() => undefined), () => this.context.session.getGroupService().getUinByUids([Uid]).then((data) => data.uins.get(Uid)).catch(() => undefined), @@ -211,7 +200,6 @@ export class NTQQUserApi { for (const service of services) { uin = await service(); if (uin && uin !== '0' && uin !== '') { - this.uinCache.put(Uid, uin); break; } } From 5b17a14a2a1702a486220171b57e77d4f9813ded Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Wed, 4 Dec 2024 11:49:26 +0000 Subject: [PATCH 198/418] release: v4.2.21 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 5075b688..47324e8a 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.20", + "version": "4.2.21", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 7aeff5df..40b2f1fe 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.20", + "version": "4.2.21", "scripts": { "build:universal": "npm run build:webui && vite build --mode universal || exit 1", "build:framework": "npm run build:webui && vite build --mode framework || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index 19ede97e..a5c3dd1b 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.20'; +export const napCatVersion = '4.2.21'; From e939ec0e52473b2d4968ee0a75430fe0eb7c5810 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 4 Dec 2024 20:37:08 +0800 Subject: [PATCH 199/418] fix: #597 --- src/core/apis/user.ts | 4 ++-- src/core/services/NodeIKernelGroupService.ts | 4 ++-- src/onebot/index.ts | 12 +++++++----- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/core/apis/user.ts b/src/core/apis/user.ts index 5d8c7881..a715d83d 100644 --- a/src/core/apis/user.ts +++ b/src/core/apis/user.ts @@ -184,7 +184,7 @@ export class NTQQUserApi { break; } } - return uid; + return uid ?? ''; } async getUinByUidV2(Uid: string) { @@ -203,7 +203,7 @@ export class NTQQUserApi { break; } } - return uin; + return uin ?? '0'; } async getRecentContactListSnapShot(count: number) { diff --git a/src/core/services/NodeIKernelGroupService.ts b/src/core/services/NodeIKernelGroupService.ts index 83a9cc92..1b748883 100644 --- a/src/core/services/NodeIKernelGroupService.ts +++ b/src/core/services/NodeIKernelGroupService.ts @@ -187,11 +187,11 @@ export interface NodeIKernelGroupService { destroyGroup(groupCode: string): void; - getSingleScreenNotifies(doubted: boolean, start_seq: string, num: number): Promise; + getSingleScreenNotifies(doubt: boolean, startSeq: string, count: number): Promise; clearGroupNotifies(groupCode: string): void; - getGroupNotifiesUnreadCount(unknown: boolean): Promise; + getGroupNotifiesUnreadCount(doubt: boolean): Promise; clearGroupNotifiesUnreadCount(doubt: boolean): void; diff --git a/src/onebot/index.ts b/src/onebot/index.ts index 85303d87..5c9c4419 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -405,8 +405,8 @@ export class NapCatOneBot11Adapter { this.context.logger.logDebug(`收到邀请我加群通知:${notify}`); const groupInviteEvent = new OB11GroupRequestEvent( this.core, - parseInt(notify.group.groupCode), - parseInt(await this.core.apis.UserApi.getUinByUidV2(notify.user2.uid)), + +notify.group.groupCode, + +await this.core.apis.UserApi.getUinByUidV2(notify.user2.uid), 'invite', notify.postscript, flag @@ -423,8 +423,8 @@ export class NapCatOneBot11Adapter { this.context.logger.logDebug(`收到群员邀请加群通知:${notify}`); const groupInviteEvent = new OB11GroupRequestEvent( this.core, - parseInt(notify.group.groupCode), - parseInt(await this.core.apis.UserApi.getUinByUidV2(notify.user1.uid)), + +notify.group.groupCode, + +await this.core.apis.UserApi.getUinByUidV2(notify.user1.uid), 'add', notify.postscript, flag @@ -571,6 +571,8 @@ export class NapCatOneBot11Adapter { } private async emitFriendRecallMsg(message: RawMessage, oriMessageId: number, element: MessageElement) { + const operatorUid = element.grayTipElement?.revokeElement.operatorUid; + if (!operatorUid) return undefined; return new OB11FriendRecallNoticeEvent( this.core, +message.senderUin, @@ -581,7 +583,7 @@ export class NapCatOneBot11Adapter { private async emitGroupRecallMsg(message: RawMessage, oriMessageId: number, element: MessageElement) { const operatorUid = element.grayTipElement?.revokeElement.operatorUid; if (!operatorUid) return undefined; - const operatorId = message.senderUin ?? await this.core.apis.UserApi.getUinByUidV2(operatorUid); + const operatorId = await this.core.apis.UserApi.getUinByUidV2(operatorUid); return new OB11GroupRecallNoticeEvent( this.core, +message.peerUin, From eac58a2a502d02805c01ee71930648b0a8456f6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 4 Dec 2024 21:04:24 +0800 Subject: [PATCH 200/418] fix: 9.9.17-30366 --- src/core/external/appid.json | 6 +++++- src/core/external/offset.json | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/core/external/appid.json b/src/core/external/appid.json index c1284c54..0f209ee8 100644 --- a/src/core/external/appid.json +++ b/src/core/external/appid.json @@ -98,5 +98,9 @@ "6.9.61-29927": { "appid": 537255836, "qua": "V1_MAC_NQ_6.9.61_29927_GW_B" + }, + "9.9.17-30366": { + "appid": 537258389, + "qua": "V1_WIN_NQ_9.9.17_30366_GW_B" } -} +} \ No newline at end of file diff --git a/src/core/external/offset.json b/src/core/external/offset.json index f6dabbb7..239e4f77 100644 --- a/src/core/external/offset.json +++ b/src/core/external/offset.json @@ -102,5 +102,9 @@ "6.9.61-29927-arm64": { "send": "4038740", "recv": "403AF58" + }, + "9.9.17-30366-x64": { + "send": "39AB0B0", + "recv": "39AF4E4" } -} +} \ No newline at end of file From 2e5dd6535af5836665b82305252ed578054cb0ad Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Wed, 4 Dec 2024 13:18:58 +0000 Subject: [PATCH 201/418] release: v4.2.22 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 47324e8a..3d286364 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.21", + "version": "4.2.22", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index 40b2f1fe..df768956 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.21", + "version": "4.2.22", "scripts": { "build:universal": "npm run build:webui && vite build --mode universal || exit 1", "build:framework": "npm run build:webui && vite build --mode framework || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index a5c3dd1b..7802e3e9 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.21'; +export const napCatVersion = '4.2.22'; From 22d3ac33a27618b6aec102b6e2d02eccf0d22b21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 4 Dec 2024 21:59:53 +0800 Subject: [PATCH 202/418] =?UTF-8?q?Refactor:=20=E6=9B=B4=E6=96=B0=E7=BE=A4?= =?UTF-8?q?=E7=BB=84=E9=80=9A=E7=9F=A5=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E6=95=B0=E6=8D=AE=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E5=92=8C=E5=BC=82=E6=AD=A5=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/extends/GetGroupAddRequest.ts | 56 ++++++++++------ .../action/group/GetGroupIgnoredNotifies.ts | 67 +++++++++++++------ src/onebot/action/system/GetSystemMsg.ts | 63 +++++++++++------ 3 files changed, 126 insertions(+), 60 deletions(-) diff --git a/src/onebot/action/extends/GetGroupAddRequest.ts b/src/onebot/action/extends/GetGroupAddRequest.ts index 8bdd65d8..9f0598db 100644 --- a/src/onebot/action/extends/GetGroupAddRequest.ts +++ b/src/onebot/action/extends/GetGroupAddRequest.ts @@ -2,32 +2,44 @@ import { GroupNotifyMsgStatus } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -interface OB11GroupRequestNotify { - group_id: number, - user_id: number, - flag: string +interface Notify { + request_id: string; + invitor_uin: number; + invitor_nick?: string; + group_id?: number; + group_name?: string; + checked: boolean; + requester_nick?: string; + actor: number; } -export default class GetGroupAddRequest extends OneBotAction { +export default class GetGroupAddRequest extends OneBotAction { actionName = ActionName.GetGroupIgnoreAddRequest; - async _handle(payload: null): Promise { - const ignoredNotifies = await this.core.apis.GroupApi.getSingleScreenNotifies(true, 10); - const retData: any = { - join_requests: await Promise.all( - ignoredNotifies - .filter(notify => notify.type === 7) - .map(async SSNotify => ({ - request_id: SSNotify.group.groupCode + '|' + SSNotify.seq + '|' + SSNotify.type, - requester_uin: await this.core.apis.UserApi.getUinByUidV2(SSNotify.user1?.uid), - requester_nick: SSNotify.user1?.nickName, - group_id: SSNotify.group?.groupCode, - group_name: SSNotify.group?.groupName, - checked: SSNotify.status !== GroupNotifyMsgStatus.KUNHANDLE, - actor: await this.core.apis.UserApi.getUinByUidV2(SSNotify.user2?.uid) || 0, - }))), - }; + async _handle(payload: null): Promise { + const NTQQUserApi = this.core.apis.UserApi; + const NTQQGroupApi = this.core.apis.GroupApi; + const ignoredNotifies = await NTQQGroupApi.getSingleScreenNotifies(true, 10); + const retData: Notify[] = []; + + const notifyPromises = ignoredNotifies + .filter(notify => notify.type === 7) + .map(async SSNotify => { + const invitorUin = SSNotify.user1?.uid ? +await NTQQUserApi.getUinByUidV2(SSNotify.user1.uid) : 0; + const actorUin = SSNotify.user2?.uid ? +await NTQQUserApi.getUinByUidV2(SSNotify.user2.uid) : 0; + retData.push({ + request_id: `${SSNotify.group.groupCode}|${SSNotify.seq}|${SSNotify.type}`, + invitor_uin: invitorUin, + requester_nick: SSNotify.user1?.nickName, + group_id: +SSNotify.group?.groupCode, + group_name: SSNotify.group?.groupName, + checked: SSNotify.status !== GroupNotifyMsgStatus.KUNHANDLE, + actor: actorUin, + }); + }); + + await Promise.all(notifyPromises); return retData; } -} +} \ No newline at end of file diff --git a/src/onebot/action/group/GetGroupIgnoredNotifies.ts b/src/onebot/action/group/GetGroupIgnoredNotifies.ts index a639ed1e..4137e735 100644 --- a/src/onebot/action/group/GetGroupIgnoredNotifies.ts +++ b/src/onebot/action/group/GetGroupIgnoredNotifies.ts @@ -1,26 +1,55 @@ import { GroupNotifyMsgStatus } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -export class GetGroupIgnoredNotifies extends OneBotAction { - actionName = ActionName.GetGroupIgnoredNotifies; - async _handle(payload: void) { - const ignoredNotifies = await this.core.apis.GroupApi.getSingleScreenNotifies(true, 10); - const retData: any = { - join_requests: await Promise.all( - ignoredNotifies - .filter(notify => notify.type === 7) - .map(async SSNotify => ({ - request_id: SSNotify.group.groupCode + '|' + SSNotify.seq + '|' + SSNotify.type, - requester_uin: await this.core.apis.UserApi.getUinByUidV2(SSNotify.user1?.uid), - requester_nick: SSNotify.user1?.nickName, - group_id: SSNotify.group?.groupCode, - group_name: SSNotify.group?.groupName, - checked: SSNotify.status !== GroupNotifyMsgStatus.KUNHANDLE, - actor: await this.core.apis.UserApi.getUinByUidV2(SSNotify.user2?.uid) || 0, - }))), - }; +interface Notify { + request_id: string; + invitor_uin: number; + invitor_nick?: string; + group_id?: number; + group_name?: string; + checked: boolean; + requester_nick?: string; + actor: number; +} +interface RetData { + InvitedRequest: Notify[]; + join_requests: Notify[]; +} + +export class GetGroupIgnoredNotifies extends OneBotAction { + actionName = ActionName.GetGroupSystemMsg; + + async _handle(): Promise { + const NTQQUserApi = this.core.apis.UserApi; + const NTQQGroupApi = this.core.apis.GroupApi; + const SingleScreenNotifies = await NTQQGroupApi.getSingleScreenNotifies(false, 50); + const retData: RetData = { InvitedRequest: [], join_requests: [] }; + + const notifyPromises = SingleScreenNotifies.map(async (SSNotify) => { + const invitorUin = SSNotify.user1?.uid ? +await NTQQUserApi.getUinByUidV2(SSNotify.user1.uid) : 0; + const actorUin = SSNotify.user2?.uid ? +await NTQQUserApi.getUinByUidV2(SSNotify.user2.uid) : 0; + + const commonData = { + request_id: `${SSNotify.group.groupCode}|${SSNotify.seq}|${SSNotify.type}`, + invitor_uin: invitorUin, + invitor_nick: SSNotify.user1?.nickName, + group_id: +SSNotify.group?.groupCode, + group_name: SSNotify.group?.groupName, + checked: SSNotify.status !== GroupNotifyMsgStatus.KUNHANDLE, + actor: actorUin, + requester_nick: SSNotify.user1?.nickName, + }; + + if (SSNotify.type === 1) { + retData.InvitedRequest.push(commonData); + } else if (SSNotify.type === 7) { + retData.join_requests.push(commonData); + } + }); + + await Promise.all(notifyPromises); return retData; } -} +} \ No newline at end of file diff --git a/src/onebot/action/system/GetSystemMsg.ts b/src/onebot/action/system/GetSystemMsg.ts index f1a904c5..a8a22228 100644 --- a/src/onebot/action/system/GetSystemMsg.ts +++ b/src/onebot/action/system/GetSystemMsg.ts @@ -1,38 +1,63 @@ import { GroupNotifyMsgStatus } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; -export class GetGroupSystemMsg extends OneBotAction { + +interface Notify { + request_id: string; + invitor_uin: number; + invitor_nick?: string; + group_id?: number; + group_name?: string; + checked: boolean; + actor: number; +} + +interface JoinRequest extends Notify { + requester_nick?: string; +} + +interface RetData { + InvitedRequest: Notify[]; + join_requests: JoinRequest[]; +} + +export class GetGroupSystemMsg extends OneBotAction { actionName = ActionName.GetGroupSystemMsg; - async _handle() { + async _handle(): Promise { const NTQQUserApi = this.core.apis.UserApi; const NTQQGroupApi = this.core.apis.GroupApi; - // 默认10条 该api未完整实现 包括响应数据规范化 类型规范化 - const SingleScreenNotifies = await NTQQGroupApi.getSingleScreenNotifies(false, 10); - const retData: any = { InvitedRequest: [], join_requests: [] }; - for (const SSNotify of SingleScreenNotifies) { - if (SSNotify.type == 1) { + const SingleScreenNotifies = await NTQQGroupApi.getSingleScreenNotifies(false, 50); + const retData: RetData = { InvitedRequest: [], join_requests: [] }; + + const notifyPromises = SingleScreenNotifies.map(async (SSNotify) => { + const invitorUin = SSNotify.user1?.uid ? +await NTQQUserApi.getUinByUidV2(SSNotify.user1.uid) : 0; + const actorUin = SSNotify.user2?.uid ? +await NTQQUserApi.getUinByUidV2(SSNotify.user2.uid) : 0; + + if (SSNotify.type === 1) { retData.InvitedRequest.push({ - request_id: SSNotify.group.groupCode + '|' + SSNotify.seq + '|' + SSNotify.type, - invitor_uin: await NTQQUserApi.getUinByUidV2(SSNotify.user1?.uid), + request_id: `${SSNotify.group.groupCode}|${SSNotify.seq}|${SSNotify.type}`, + invitor_uin: invitorUin, invitor_nick: SSNotify.user1?.nickName, - group_id: SSNotify.group?.groupCode, + group_id: +SSNotify.group?.groupCode, group_name: SSNotify.group?.groupName, - checked: SSNotify.status === GroupNotifyMsgStatus.KUNHANDLE ? false : true, - actor: await NTQQUserApi.getUinByUidV2(SSNotify.user2?.uid) || 0, + checked: SSNotify.status !== GroupNotifyMsgStatus.KUNHANDLE, + actor: actorUin, }); - } else if (SSNotify.type == 7) { + } else if (SSNotify.type === 7) { retData.join_requests.push({ - request_id: SSNotify.group.groupCode + '|' + SSNotify.seq + '|' + SSNotify.type, - requester_uin: await NTQQUserApi.getUinByUidV2(SSNotify.user1?.uid), + request_id: `${SSNotify.group.groupCode}|${SSNotify.seq}|${SSNotify.type}`, + invitor_uin: invitorUin, requester_nick: SSNotify.user1?.nickName, - group_id: SSNotify.group?.groupCode, + group_id: +SSNotify.group?.groupCode, group_name: SSNotify.group?.groupName, - checked: SSNotify.status === GroupNotifyMsgStatus.KUNHANDLE ? false : true, - actor: await NTQQUserApi.getUinByUidV2(SSNotify.user2?.uid) || 0, + checked: SSNotify.status !== GroupNotifyMsgStatus.KUNHANDLE, + actor: actorUin, }); } - } + }); + + await Promise.all(notifyPromises); return retData; } From c4b5f3427177833825cbdb02222b15eadcc24523 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 4 Dec 2024 22:02:11 +0800 Subject: [PATCH 203/418] =?UTF-8?q?fix:=20=E5=85=9C=E5=BA=95=20=E9=98=B2?= =?UTF-8?q?=E6=AD=A2=E8=BF=9B=E5=85=A5=E5=BD=B1=E5=93=8D=E9=80=9F=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/apis/user.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/core/apis/user.ts b/src/core/apis/user.ts index a715d83d..f2b9bb0a 100644 --- a/src/core/apis/user.ts +++ b/src/core/apis/user.ts @@ -170,6 +170,9 @@ export class NTQQUserApi { } async getUidByUinV2(Uin: string) { + if (!Uin) { + return ''; + } const services = [ () => this.context.session.getUixConvertService().getUid([Uin]).then((data) => data.uidInfo.get(Uin)).catch(() => undefined), () => promisify> @@ -188,6 +191,9 @@ export class NTQQUserApi { } async getUinByUidV2(Uid: string) { + if (!Uid) { + return '0'; + } const services = [ () => this.context.session.getUixConvertService().getUin([Uid]).then((data) => data.uinInfo.get(Uid)).catch(() => undefined), () => this.context.session.getGroupService().getUinByUids([Uid]).then((data) => data.uins.get(Uid)).catch(() => undefined), From 3de54381397789521f4c90a3403a5ffcf6a9ce95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 4 Dec 2024 22:16:59 +0800 Subject: [PATCH 204/418] fix: poke report --- src/core/types/element.ts | 1 + src/onebot/api/msg.ts | 11 +++++++++++ src/onebot/types/message.ts | 10 +++++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/core/types/element.ts b/src/core/types/element.ts index 579603ba..8a848876 100644 --- a/src/core/types/element.ts +++ b/src/core/types/element.ts @@ -29,6 +29,7 @@ export interface TextElement { } export interface FaceElement { + pokeType?: number; faceIndex: number; faceType: FaceType; faceText?: string; diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index 86da6c77..e512386d 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -153,6 +153,17 @@ export class OneBotMsgApi { faceElement: async element => { const faceIndex = element.faceIndex; + if (element.faceType == FaceType.Poke) { + return { + type: OB11MessageDataType.poke, + data: { + type: element?.pokeType?.toString() ?? '0', + id: faceIndex.toString(), + } + } + + } + if (faceIndex === FaceIndex.DICE) { return { type: OB11MessageDataType.dice, diff --git a/src/onebot/types/message.ts b/src/onebot/types/message.ts index 12a7aa9e..645f0b5f 100644 --- a/src/onebot/types/message.ts +++ b/src/onebot/types/message.ts @@ -71,6 +71,14 @@ export enum OB11MessageDataType { location = 'location' } +export interface OB11MessagePoke { + type: OB11MessageDataType.poke; + data: { + type: string; + id: string; + }; +} + // 商城表情消息接口定义 export interface OB11MessageMFace { type: OB11MessageDataType.mface; @@ -247,7 +255,7 @@ export type OB11MessageData = OB11MessageAt | OB11MessageReply | OB11MessageImage | OB11MessageRecord | OB11MessageFile | OB11MessageVideo | OB11MessageNode | OB11MessageIdMusic | OB11MessageCustomMusic | OB11MessageJson | - OB11MessageDice | OB11MessageRPS | OB11MessageMarkdown | OB11MessageForward | OB11MessageContext; + OB11MessageDice | OB11MessageRPS | OB11MessageMarkdown | OB11MessageForward | OB11MessageContext | OB11MessagePoke; // 发送消息接口定义 export interface OB11PostSendMsg { From 932ffc267392d86aa7fb7cf09f50f3a42ddc2114 Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Wed, 4 Dec 2024 14:18:02 +0000 Subject: [PATCH 205/418] release: v4.2.23 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 3d286364..3d223b91 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.22", + "version": "4.2.23", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index df768956..ded51e7b 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.22", + "version": "4.2.23", "scripts": { "build:universal": "npm run build:webui && vite build --mode universal || exit 1", "build:framework": "npm run build:webui && vite build --mode framework || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index 7802e3e9..d43e0bff 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.22'; +export const napCatVersion = '4.2.23'; From 7c694e7fae6d612db001859525228de9983f429d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 4 Dec 2024 23:03:46 +0800 Subject: [PATCH 206/418] =?UTF-8?q?chore:=20=E8=B7=91=E8=B7=AF=E7=9A=84?= =?UTF-8?q?=E8=A7=84=E8=8C=83/=E5=9B=B0=E9=9A=BE=E7=9A=84=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 309364fd..dbaacc21 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,13 @@ NapCatQQ 是现代化的基于 NTQQ 的 Bot 协议端实现 ## 回家旅途 [QQ Group](https://qm.qq.com/q/I6LU87a0Yq) +## 性能/OneBot协议标准问题/开发方向 +NapCat 已实现90%+的OneBot/GoCQ标准接口,并提供兼容性保留接口,其设计理念遵守 无数据库/异步优先/后台刷新 的性能思想。 + +由此设计带来一系列好处,在开发中,获取群员列表通常小于50Ms,单条文本消息发送在320Ms以内,在1k+的群聊流程运行,同时带来一些副作用,上报数据中大量使用Magic生成字段, 消息Id无法持久,无法上报撤回消息原始内容。 + +NapCat在设计理念下遵守OneBot规范大多数要求并且积极改进,任何合理的标准化issue与pr将被接收。 + ## 感谢他们 感谢 [Lagrange](https://github.com/LagrangeDev/Lagrange.Core) 对本项目的大力支持 参考部分代码 已获授权 From f374cc77ae500211bc68e7f80569c41e4431a770 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Wed, 4 Dec 2024 23:04:37 +0800 Subject: [PATCH 207/418] chore: readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dbaacc21..9be9f2c8 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ NapCatQQ 是现代化的基于 NTQQ 的 Bot 协议端实现 ## 回家旅途 [QQ Group](https://qm.qq.com/q/I6LU87a0Yq) -## 性能/OneBot协议标准问题/开发方向 +## 性能设计/协议标准 NapCat 已实现90%+的OneBot/GoCQ标准接口,并提供兼容性保留接口,其设计理念遵守 无数据库/异步优先/后台刷新 的性能思想。 由此设计带来一系列好处,在开发中,获取群员列表通常小于50Ms,单条文本消息发送在320Ms以内,在1k+的群聊流程运行,同时带来一些副作用,上报数据中大量使用Magic生成字段, 消息Id无法持久,无法上报撤回消息原始内容。 From f52b8d1f04054f71fadf44b61495d2040f918e19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 5 Dec 2024 11:15:10 +0800 Subject: [PATCH 208/418] =?UTF-8?q?feat:=2030366=20=E5=85=A8=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E9=80=9A=E7=94=A8=E6=80=A7=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/external/appid.json | 8 ++++++++ src/core/external/offset.json | 16 ++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/core/external/appid.json b/src/core/external/appid.json index 0f209ee8..d728732a 100644 --- a/src/core/external/appid.json +++ b/src/core/external/appid.json @@ -102,5 +102,13 @@ "9.9.17-30366": { "appid": 537258389, "qua": "V1_WIN_NQ_9.9.17_30366_GW_B" + }, + "3.2.15-30366": { + "appid": 537258413, + "qua": "V1_LNX_NQ_3.2.15_30366_GW_B" + }, + "6.9.62-30366": { + "appid": 537258401, + "qua": "V1_MAC_NQ_6.9.62_30366_GW_B" } } \ No newline at end of file diff --git a/src/core/external/offset.json b/src/core/external/offset.json index 239e4f77..47e466ad 100644 --- a/src/core/external/offset.json +++ b/src/core/external/offset.json @@ -106,5 +106,21 @@ "9.9.17-30366-x64": { "send": "39AB0B0", "recv": "39AF4E4" + }, + "3.2.15-30366-x64": { + "send": "A402380", + "recv": "A405C80" + }, + "3.2.15-30366-arm64": { + "send": "70C3FA8", + "recv": "70C77E0" + }, + "6.9.62-30366-x64": { + "send": "4669760", + "recv": "466BFCC" + }, + "6.9.62-30366-arm64": { + "send": "4189770", + "recv": "418BF88" } } \ No newline at end of file From 0e8ceeb6c9c9fb46c210aa46c2aabad21ced75ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 5 Dec 2024 11:36:06 +0800 Subject: [PATCH 209/418] refactor: CardChangedEvent --- src/onebot/api/group.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/onebot/api/group.ts b/src/onebot/api/group.ts index 0a57086d..f4d3666b 100644 --- a/src/onebot/api/group.ts +++ b/src/onebot/api/group.ts @@ -51,9 +51,9 @@ export class OneBotGroupApi { if (memberUin && adminUin) { return new OB11GroupBanEvent( this.core, - parseInt(GroupCode), - parseInt(memberUin), - parseInt(adminUin), + +GroupCode, + +memberUin, + +adminUin, duration, subType, ); @@ -98,8 +98,8 @@ export class OneBotGroupApi { } return new OB11GroupMsgEmojiLikeEvent( this.core, - parseInt(groupCode), - parseInt(senderUin), + +groupCode, + +senderUin, MessageUnique.getShortIdByMsgId(replyMsg.msgId)!, [{ emoji_id: emojiId, @@ -111,9 +111,10 @@ export class OneBotGroupApi { async parseCardChangedEvent(msg: RawMessage) { if (msg.senderUin && msg.senderUin !== '0') { const member = await this.core.apis.GroupApi.getGroupMember(msg.peerUid, msg.senderUin); - if (member && member.cardName !== msg.sendMemberName) { + const oldName = member?.cardName || member?.nick || ''; + if (member && oldName !== msg.sendMemberName) { const newCardName = msg.sendMemberName ?? ''; - const event = new OB11GroupCardEvent(this.core, parseInt(msg.peerUid), parseInt(msg.senderUin), newCardName, member.cardName); + const event = new OB11GroupCardEvent(this.core, parseInt(msg.peerUid), parseInt(msg.senderUin), newCardName, oldName); member.cardName = newCardName; return event; } From 57112c21a29fb561fa73397f4141153c00b65fa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 5 Dec 2024 14:17:09 +0800 Subject: [PATCH 210/418] =?UTF-8?q?refactor:=20flag=20handle&onebot?= =?UTF-8?q?=E6=A0=87=E5=87=86=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/apis/friend.ts | 14 ++--- src/core/apis/group.ts | 16 ++---- .../action/extends/GetGroupAddRequest.ts | 18 ++---- .../action/group/GetGroupIgnoredNotifies.ts | 25 +++------ src/onebot/action/group/SetGroupAddRequest.ts | 26 +++++++-- src/onebot/action/system/GetSystemMsg.ts | 56 ++++++------------- src/onebot/action/user/SetFriendAddRequest.ts | 15 +++-- src/onebot/index.ts | 5 +- src/onebot/types/data.ts | 11 ++++ 9 files changed, 81 insertions(+), 105 deletions(-) diff --git a/src/core/apis/friend.ts b/src/core/apis/friend.ts index eff2fcd1..7714d683 100644 --- a/src/core/apis/friend.ts +++ b/src/core/apis/friend.ts @@ -1,4 +1,4 @@ -import { FriendV2 } from '@/core/types'; +import { FriendRequest, FriendV2 } from '@/core/types'; import { BuddyListReqType, InstanceContext, NapCatCore } from '@/core'; import { LimitedHashTable } from '@/common/message-unique'; @@ -79,16 +79,10 @@ export class NTQQFriendApi { return ret; } - async handleFriendRequest(flag: string, accept: boolean) { - const data = flag.split('|'); - if (data.length < 2) { - return; - } - const friendUid = data[0]; - const reqTime = data[1]; + async handleFriendRequest(notify: FriendRequest, accept: boolean) { this.context.session.getBuddyService()?.approvalFriendRequest({ - friendUid: friendUid, - reqTime: reqTime, + friendUid: notify.friendUid, + reqTime: notify.reqTime, accept, }); } diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index 35674530..60bf065a 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -7,6 +7,7 @@ import { KickMemberV2Req, MemberExtSourceType, NapCatCore, + GroupNotify, } from '@/core'; import { isNumeric, solveAsyncProblem } from '@/common/helper'; import { LimitedHashTable } from '@/common/message-unique'; @@ -120,7 +121,7 @@ export class NTQQGroupApi { } return this.groupMemberCache; } - + async getGroupMember(groupCode: string | number, memberUinOrUid: string | number) { const groupCodeStr = groupCode.toString(); const memberUinOrUidStr = memberUinOrUid.toString(); @@ -288,20 +289,15 @@ export class NTQQGroupApi { return this.context.session.getGroupService().uploadGroupBulletinPic(groupCode, _Pskey, imageurl); } - async handleGroupRequest(flag: string, operateType: NTGroupRequestOperateTypes, reason?: string) { - const flagitem = flag.split('|'); - const groupCode = flagitem[0]; - const seq = flagitem[1]; - const type = parseInt(flagitem[2]); - + async handleGroupRequest(notify: GroupNotify, operateType: NTGroupRequestOperateTypes, reason?: string) { return this.context.session.getGroupService().operateSysNotify( false, { operateType: operateType, targetMsg: { - seq: seq, // 通知序列号 - type: type, - groupCode: groupCode, + seq: notify.seq, // 通知序列号 + type: notify.type, + groupCode: notify.group.groupCode, postscript: reason ?? ' ', // 仅传空值可能导致处理失败,故默认给个空格 }, }); diff --git a/src/onebot/action/extends/GetGroupAddRequest.ts b/src/onebot/action/extends/GetGroupAddRequest.ts index 9f0598db..1469292a 100644 --- a/src/onebot/action/extends/GetGroupAddRequest.ts +++ b/src/onebot/action/extends/GetGroupAddRequest.ts @@ -1,17 +1,7 @@ import { GroupNotifyMsgStatus } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; - -interface Notify { - request_id: string; - invitor_uin: number; - invitor_nick?: string; - group_id?: number; - group_name?: string; - checked: boolean; - requester_nick?: string; - actor: number; -} +import { Notify } from '@/onebot/types'; export default class GetGroupAddRequest extends OneBotAction { actionName = ActionName.GetGroupIgnoreAddRequest; @@ -28,13 +18,15 @@ export default class GetGroupAddRequest extends OneBotAction { - actionName = ActionName.GetGroupSystemMsg; + actionName = ActionName.GetGroupIgnoredNotifies; async _handle(): Promise { - const NTQQUserApi = this.core.apis.UserApi; - const NTQQGroupApi = this.core.apis.GroupApi; - const SingleScreenNotifies = await NTQQGroupApi.getSingleScreenNotifies(false, 50); + const SingleScreenNotifies = await this.core.apis.GroupApi.getSingleScreenNotifies(false, 50); const retData: RetData = { InvitedRequest: [], join_requests: [] }; const notifyPromises = SingleScreenNotifies.map(async (SSNotify) => { - const invitorUin = SSNotify.user1?.uid ? +await NTQQUserApi.getUinByUidV2(SSNotify.user1.uid) : 0; - const actorUin = SSNotify.user2?.uid ? +await NTQQUserApi.getUinByUidV2(SSNotify.user2.uid) : 0; - + const invitorUin = SSNotify.user1?.uid ? +await this.core.apis.UserApi.getUinByUidV2(SSNotify.user1.uid) : 0; + const actorUin = SSNotify.user2?.uid ? +await this.core.apis.UserApi.getUinByUidV2(SSNotify.user2.uid) : 0; const commonData = { - request_id: `${SSNotify.group.groupCode}|${SSNotify.seq}|${SSNotify.type}`, + request_id: +SSNotify.seq, invitor_uin: invitorUin, invitor_nick: SSNotify.user1?.nickName, group_id: +SSNotify.group?.groupCode, + message: SSNotify?.postscript, group_name: SSNotify.group?.groupName, checked: SSNotify.status !== GroupNotifyMsgStatus.KUNHANDLE, actor: actorUin, diff --git a/src/onebot/action/group/SetGroupAddRequest.ts b/src/onebot/action/group/SetGroupAddRequest.ts index 389e71ff..f9f54cf7 100644 --- a/src/onebot/action/group/SetGroupAddRequest.ts +++ b/src/onebot/action/group/SetGroupAddRequest.ts @@ -4,9 +4,9 @@ import { ActionName } from '@/onebot/action/router'; import { Static, Type } from '@sinclair/typebox'; const SchemaData = Type.Object({ - flag: Type.String(), + flag: Type.Union([Type.String(), Type.Number()]), approve: Type.Optional(Type.Union([Type.Boolean(), Type.String()])), - reason: Type.Union([Type.String({ default: ' ' }), Type.Null()]), + reason: Type.Optional(Type.Union([Type.String({ default: ' ' }), Type.Null()])), }); type Payload = Static; @@ -18,10 +18,26 @@ export default class SetGroupAddRequest extends OneBotAction { async _handle(payload: Payload): Promise { const flag = payload.flag.toString(); const approve = payload.approve?.toString() !== 'false'; - await this.core.apis.GroupApi.handleGroupRequest(flag, + const reason = payload.reason ?? ' '; + + let notify = await this.findNotify(flag); + if (!notify) { + throw new Error('No such request'); + } + + await this.core.apis.GroupApi.handleGroupRequest( + notify, approve ? NTGroupRequestOperateTypes.KAGREE : NTGroupRequestOperateTypes.KREFUSE, - payload.reason ?? ' ', + reason, ); return null; } -} + + private async findNotify(flag: string) { + let notify = (await this.core.apis.GroupApi.getSingleScreenNotifies(false, 100)).find(e => e.seq == flag); + if (!notify) { + notify = (await this.core.apis.GroupApi.getSingleScreenNotifies(true, 100)).find(e => e.seq == flag); + } + return notify; + } +} \ No newline at end of file diff --git a/src/onebot/action/system/GetSystemMsg.ts b/src/onebot/action/system/GetSystemMsg.ts index a8a22228..01605869 100644 --- a/src/onebot/action/system/GetSystemMsg.ts +++ b/src/onebot/action/system/GetSystemMsg.ts @@ -1,59 +1,39 @@ import { GroupNotifyMsgStatus } from '@/core'; import { OneBotAction } from '@/onebot/action/OneBotAction'; import { ActionName } from '@/onebot/action/router'; - -interface Notify { - request_id: string; - invitor_uin: number; - invitor_nick?: string; - group_id?: number; - group_name?: string; - checked: boolean; - actor: number; -} - -interface JoinRequest extends Notify { - requester_nick?: string; -} +import { Notify } from '@/onebot/types'; interface RetData { InvitedRequest: Notify[]; - join_requests: JoinRequest[]; + join_requests: Notify[]; } export class GetGroupSystemMsg extends OneBotAction { actionName = ActionName.GetGroupSystemMsg; async _handle(): Promise { - const NTQQUserApi = this.core.apis.UserApi; - const NTQQGroupApi = this.core.apis.GroupApi; - const SingleScreenNotifies = await NTQQGroupApi.getSingleScreenNotifies(false, 50); + const SingleScreenNotifies = await this.core.apis.GroupApi.getSingleScreenNotifies(false, 50); const retData: RetData = { InvitedRequest: [], join_requests: [] }; const notifyPromises = SingleScreenNotifies.map(async (SSNotify) => { - const invitorUin = SSNotify.user1?.uid ? +await NTQQUserApi.getUinByUidV2(SSNotify.user1.uid) : 0; - const actorUin = SSNotify.user2?.uid ? +await NTQQUserApi.getUinByUidV2(SSNotify.user2.uid) : 0; + const invitorUin = SSNotify.user1?.uid ? +await this.core.apis.UserApi.getUinByUidV2(SSNotify.user1.uid) : 0; + const actorUin = SSNotify.user2?.uid ? +await this.core.apis.UserApi.getUinByUidV2(SSNotify.user2.uid) : 0; + const commonData = { + request_id: +SSNotify.seq, + invitor_uin: invitorUin, + invitor_nick: SSNotify.user1?.nickName, + group_id: +SSNotify.group?.groupCode, + message: SSNotify?.postscript, + group_name: SSNotify.group?.groupName, + checked: SSNotify.status !== GroupNotifyMsgStatus.KUNHANDLE, + actor: actorUin, + requester_nick: SSNotify.user1?.nickName, + }; if (SSNotify.type === 1) { - retData.InvitedRequest.push({ - request_id: `${SSNotify.group.groupCode}|${SSNotify.seq}|${SSNotify.type}`, - invitor_uin: invitorUin, - invitor_nick: SSNotify.user1?.nickName, - group_id: +SSNotify.group?.groupCode, - group_name: SSNotify.group?.groupName, - checked: SSNotify.status !== GroupNotifyMsgStatus.KUNHANDLE, - actor: actorUin, - }); + retData.InvitedRequest.push(commonData); } else if (SSNotify.type === 7) { - retData.join_requests.push({ - request_id: `${SSNotify.group.groupCode}|${SSNotify.seq}|${SSNotify.type}`, - invitor_uin: invitorUin, - requester_nick: SSNotify.user1?.nickName, - group_id: +SSNotify.group?.groupCode, - group_name: SSNotify.group?.groupName, - checked: SSNotify.status !== GroupNotifyMsgStatus.KUNHANDLE, - actor: actorUin, - }); + retData.join_requests.push(commonData); } }); diff --git a/src/onebot/action/user/SetFriendAddRequest.ts b/src/onebot/action/user/SetFriendAddRequest.ts index 1170b552..aaa739c7 100644 --- a/src/onebot/action/user/SetFriendAddRequest.ts +++ b/src/onebot/action/user/SetFriendAddRequest.ts @@ -3,7 +3,7 @@ import { ActionName } from '@/onebot/action/router'; import { Static, Type } from '@sinclair/typebox'; const SchemaData = Type.Object({ - flag: Type.String(), + flag: Type.Union([Type.String(), Type.Number()]), approve: Type.Optional(Type.Union([Type.String(), Type.Boolean()])), remark: Type.Optional(Type.String()) }); @@ -16,14 +16,13 @@ export default class SetFriendAddRequest extends OneBotAction { async _handle(payload: Payload): Promise { const approve = payload.approve?.toString() !== 'false'; - await this.core.apis.FriendApi.handleFriendRequest(payload.flag, approve); + let notify = (await this.core.apis.FriendApi.getBuddyReq()).buddyReqs.find(e => e.reqTime == payload.flag.toString()); + if (!notify) { + throw new Error('No such request'); + } + await this.core.apis.FriendApi.handleFriendRequest(notify, approve); if (payload.remark) { - const data = payload.flag.split('|'); - if (data.length < 2) { - throw new Error('Invalid flag'); - } - const friendUid = data[0]; - await this.core.apis.FriendApi.setBuddyRemark(friendUid, payload.remark); + await this.core.apis.FriendApi.setBuddyRemark(notify.friendUid, payload.remark); } return null; } diff --git a/src/onebot/index.ts b/src/onebot/index.ts index 5c9c4419..29fc73f7 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -333,7 +333,7 @@ export class NapCatOneBot11Adapter { this.core, +requesterUin, req.extWords, - req.friendUid + '|' + req.reqTime + req.reqTime ) ); } catch (e) { @@ -365,8 +365,7 @@ export class NapCatOneBot11Adapter { if (notifyTime < this.bootTime) { continue; } - - const flag = notify.group.groupCode + '|' + notify.seq + '|' + notify.type; + const flag = notify.seq; this.context.logger.logDebug('收到群通知', notify); if ( [GroupNotifyMsgType.REQUEST_JOIN_NEED_ADMINI_STRATOR_PASS].includes(notify.type) && diff --git a/src/onebot/types/data.ts b/src/onebot/types/data.ts index 3039ba0b..8b3acab2 100644 --- a/src/onebot/types/data.ts +++ b/src/onebot/types/data.ts @@ -11,6 +11,17 @@ export interface OB11User { categoryName?: string; // 分组名称 categoryId?: number; // 分组ID 999为特别关心 } +export interface Notify { + request_id: number; + invitor_uin: number; + invitor_nick?: string; + group_id?: number; + group_name?: string; + message?: string; + checked: boolean; + actor: number; + requester_nick?: string; +} export enum OB11UserSex { male = 'male', // 男性 From 4aa24b5d6771643ffe442bea82668f4bc89f2dfb Mon Sep 17 00:00:00 2001 From: Mlikiowa Date: Thu, 5 Dec 2024 06:17:46 +0000 Subject: [PATCH 211/418] release: v4.2.24 --- manifest.json | 2 +- package.json | 2 +- src/common/version.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/manifest.json b/manifest.json index 3d223b91..6453a0aa 100644 --- a/manifest.json +++ b/manifest.json @@ -4,7 +4,7 @@ "name": "NapCatQQ", "slug": "NapCat.Framework", "description": "高性能的 OneBot 11 协议实现", - "version": "4.2.23", + "version": "4.2.24", "icon": "./logo.png", "authors": [ { diff --git a/package.json b/package.json index ded51e7b..bc82c9c5 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "napcat", "private": true, "type": "module", - "version": "4.2.23", + "version": "4.2.24", "scripts": { "build:universal": "npm run build:webui && vite build --mode universal || exit 1", "build:framework": "npm run build:webui && vite build --mode framework || exit 1", diff --git a/src/common/version.ts b/src/common/version.ts index d43e0bff..4fada46c 100644 --- a/src/common/version.ts +++ b/src/common/version.ts @@ -1 +1 @@ -export const napCatVersion = '4.2.23'; +export const napCatVersion = '4.2.24'; From 82afb88e53cf238150a0e7ee9148e6a817e6fb01 Mon Sep 17 00:00:00 2001 From: Nanako Date: Thu, 5 Dec 2024 14:33:20 +0800 Subject: [PATCH 212/418] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9be9f2c8..9a54e4ed 100644 --- a/README.md +++ b/README.md @@ -37,11 +37,11 @@ NapCatQQ 是现代化的基于 NTQQ 的 Bot 协议端实现 [QQ Group](https://qm.qq.com/q/I6LU87a0Yq) ## 性能设计/协议标准 -NapCat 已实现90%+的OneBot/GoCQ标准接口,并提供兼容性保留接口,其设计理念遵守 无数据库/异步优先/后台刷新 的性能思想。 +NapCat 已实现90%+的 OneBot / GoCQ 标准接口,并提供兼容性保留接口,其设计理念遵守 无数据库/异步优先/后台刷新 的性能思想。 -由此设计带来一系列好处,在开发中,获取群员列表通常小于50Ms,单条文本消息发送在320Ms以内,在1k+的群聊流程运行,同时带来一些副作用,上报数据中大量使用Magic生成字段, 消息Id无法持久,无法上报撤回消息原始内容。 +由此设计带来一系列好处,在开发中,获取群员列表通常小于50Ms,单条文本消息发送在320Ms以内,在1k+的群聊流畅运行,同时带来一些副作用,上报数据中大量使用Magic生成字段,消息Id无法持久,无法上报撤回消息原始内容。 -NapCat在设计理念下遵守OneBot规范大多数要求并且积极改进,任何合理的标准化issue与pr将被接收。 +NapCat 在设计理念下遵守 OneBot 规范大多数要求并且积极改进,任何合理的标准化 Issue 与 Pr 将被接收。 ## 感谢他们 感谢 [Lagrange](https://github.com/LagrangeDev/Lagrange.Core) 对本项目的大力支持 参考部分代码 已获授权 From 7cf3be8333713ffe84b115380f6ef30159dc0e1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 5 Dec 2024 14:42:45 +0800 Subject: [PATCH 213/418] refactor: predict time --- src/onebot/api/msg.ts | 64 +++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index e512386d..ef0dde6e 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -891,51 +891,55 @@ export class OneBotMsgApi { if (!sendElements.length) { throw new Error('消息体无法解析, 请检查是否发送了不支持的消息类型'); } - let totalSize = 0; - let timeout = 10000; - try { - for (const fileElement of sendElements) { - if (fileElement.elementType === ElementType.PTT) { - totalSize += (await fsPromise.stat(fileElement.pttElement.filePath)).size; + + const calculateTotalSize = async (elements: SendMessageElement[]): Promise => { + const sizePromises = elements.map(async element => { + switch (element.elementType) { + case ElementType.PTT: + return (await fsPromise.stat(element.pttElement.filePath)).size; + case ElementType.FILE: + return (await fsPromise.stat(element.fileElement.filePath)).size; + case ElementType.VIDEO: + return (await fsPromise.stat(element.videoElement.filePath)).size; + case ElementType.PIC: + return (await fsPromise.stat(element.picElement.sourcePath)).size; + default: + return 0; } - if (fileElement.elementType === ElementType.FILE) { - totalSize += (await fsPromise.stat(fileElement.fileElement.filePath)).size; - } - if (fileElement.elementType === ElementType.VIDEO) { - totalSize += (await fsPromise.stat(fileElement.videoElement.filePath)).size; - } - if (fileElement.elementType === ElementType.PIC) { - totalSize += (await fsPromise.stat(fileElement.picElement.sourcePath)).size; - } - } - //且 PredictTime ((totalSize / 1024 / 512) * 1000)不等于Nan - const PredictTime = totalSize / 1024 / 256 * 1000; - if (!Number.isNaN(PredictTime)) { - timeout += PredictTime;// 10S Basic Timeout + PredictTime( For File 512kb/s ) - } - } catch (e) { + }); + const sizes = await Promise.all(sizePromises); + return sizes.reduce((total, size) => total + size, 0); + }; + + const totalSize = await calculateTotalSize(sendElements).catch(e => { this.core.context.logger.logError('发送消息计算预计时间异常', e); - } + return 0; + }); + + const timeout = 10000 + (totalSize / 1024 / 256 * 1000); + const returnMsg = await this.core.apis.MsgApi.sendMsg(peer, sendElements, waitComplete, timeout); if (!returnMsg) throw new Error('发送消息失败'); + returnMsg.id = MessageUnique.createUniqueMsgId({ chatType: peer.chatType, guildId: '', peerUid: peer.peerUid, }, returnMsg.msgId); - - setTimeout(() => { - deleteAfterSentFiles.forEach(async file => { + + setTimeout(async () => { + const deletePromises = deleteAfterSentFiles.map(async file => { try { if (await fsPromise.access(file, constants.W_OK).then(() => true).catch(() => false)) { - fsPromise.unlink(file).then().catch(e => this.core.context.logger.logError('发送消息删除文件失败', e)); + await fsPromise.unlink(file); } - } catch (error) { - this.core.context.logger.logError('发送消息删除文件失败', (error as Error).message); + } catch (e) { + this.core.context.logger.logError('发送消息删除文件失败', e); } }); + await Promise.all(deletePromises); }, 60000); - + return returnMsg; } From 9a33039d73eb6c74fa84eca17af6ae0353a60bdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 5 Dec 2024 14:45:12 +0800 Subject: [PATCH 214/418] =?UTF-8?q?fix:=20=E6=9A=82=E6=97=B6=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=20QunAlbum?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/apis/webapi.ts | 46 ----------------------------------------- 1 file changed, 46 deletions(-) diff --git a/src/core/apis/webapi.ts b/src/core/apis/webapi.ts index 8cb147b1..933a0941 100644 --- a/src/core/apis/webapi.ts +++ b/src/core/apis/webapi.ts @@ -366,50 +366,4 @@ export class NTQQWebApi { return post; } - - async uploadQunAlbumSlice(path: string, session: string, skey: string, pskey: string, uin: string, slice_size: number) { - const img_size = statSync(path).size; - const img_name = basename(path); - let seq = 0; - let offset = 0; - const GTK = this.getBknFromSKey(pskey); - const cookie = `p_uin=${uin}; p_skey=${pskey}; skey=${skey}; uin=${uin}`; - - const stream = createReadStream(path, { highWaterMark: slice_size }); - - for await (const chunk of stream) { - const end = Math.min(offset + chunk.length, img_size); - const boundary = `----WebKitFormBoundary${Math.random().toString(36).substring(2)}`; - const formData = await RequestUtil.createFormData(boundary, path); - - const api = `https://h5.qzone.qq.com/webapp/json/sliceUpload/FileUpload?seq=${seq}&retry=0&offset=${offset}&end=${end}&total=${img_size}&type=form&g_tk=${GTK}`; - const body = { - uin: uin, - appid: "qun", - session: session, - offset: offset, - data: formData, - checksum: "", - check_type: 0, - retry: 0, - seq: seq, - end: end, - cmd: "FileUpload", - slice_size: slice_size, - "biz_req.iUploadType": 0 - }; - - const post = await RequestUtil.HttpGetJson(api, 'POST', body, { - "Cookie": cookie, - "Content-Type": `multipart/form-data; boundary=${boundary}` - }); - - offset += chunk.length; - seq++; - } - } - async uploadQunAlbum(path: string, albumId: string, group: string, skey: string, pskey: string, uin: string) { - const session = (await this.createQunAlbumSession(group, albumId, group, path, skey, pskey, uin) as { data: { session: string } }).data.session; - return await this.uploadQunAlbumSlice(path, session, skey, pskey, uin, 1024 * 1024); - } } From 9f31cdbf5bcb05dbc0ec60066ec0b0a6879c27dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 5 Dec 2024 14:46:05 +0800 Subject: [PATCH 215/418] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=E4=B8=8D?= =?UTF-8?q?=E4=BD=BF=E7=94=A8api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/apis/sign.ts | 25 ------------------------- 1 file changed, 25 deletions(-) delete mode 100644 src/core/apis/sign.ts diff --git a/src/core/apis/sign.ts b/src/core/apis/sign.ts deleted file mode 100644 index c8e2ad6f..00000000 --- a/src/core/apis/sign.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { InstanceContext, NapCatCore } from '..'; - -export class NTQQMusicSignApi { - context: InstanceContext; - core: NapCatCore; - - constructor(context: InstanceContext, core: NapCatCore) { - this.context = context; - this.core = core; - } - //转换外域名为 https://qq.ugcimg.cn/v1/cpqcbu4b8870i61bde6k7cbmjgejq8mr3in82qir4qi7ielffv5slv8ck8g42novtmev26i233ujtuab6tvu2l2sjgtupfr389191v00s1j5oh5325j5eqi40774jv1i/khovifoh7jrqd6eahoiv7koh8o - //https://cgi.connect.qq.com/qqconnectopen/openapi/change_image_url?url=https://th.bing.com/th?id=OSK.b8ed36f1fb1889de6dc84fd81c187773&w=46&h=46&c=11&rs=1&qlt=80&o=6&dpr=2&pid=SANGAM - - //外域名不行得走qgroup中转 - //https://proxy.gtimg.cn/tx_tls_gate=y.qq.com/music/photo_new/T002R800x800M000000y5gq7449K9I.jpg - - //可外域名 - //https://pic.ugcimg.cn/500955bdd6657ecc8e82e02d2df06800/jpg1 - - //QQ音乐gtimg接口 - //https://y.gtimg.cn/music/photo_new/T002R800x800M000000y5gq7449K9I.jpg?max_age=2592000 - - //还有一处公告上传可以上传高质量图片 持久为qq域名 -} - From bb53f245cfc1842e270d5b727e53e85c618b3d78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Thu, 5 Dec 2024 14:50:27 +0800 Subject: [PATCH 216/418] style: lint check --- src/common/file.ts | 37 +++++++++-------- src/common/log.ts | 2 +- src/core/apis/file.ts | 20 +++++----- src/core/apis/user.ts | 4 +- .../transformer/proto/message/groupAdmin.ts | 6 +-- src/onebot/action/group/SetGroupAddRequest.ts | 2 +- src/onebot/action/group/SetGroupBan.ts | 2 +- src/onebot/action/user/SetFriendAddRequest.ts | 2 +- src/onebot/api/msg.ts | 40 +++++++++---------- src/onebot/index.ts | 17 ++++++-- 10 files changed, 72 insertions(+), 60 deletions(-) diff --git a/src/common/file.ts b/src/common/file.ts index aa1a019e..6dac529b 100644 --- a/src/common/file.ts +++ b/src/common/file.ts @@ -182,25 +182,28 @@ export async function uriToLocalFile(dir: string, uri: string): Promise e?.ext ?? '').catch(e => ''); + const extOrEmpty = await fileTypeFromFile(filePath).then(e => e?.ext ?? '').catch(e => ''); const ext = extOrEmpty ? `.${extOrEmpty}` : ''; let fileName = `${path.basename(filePath)}`; if (fileName.indexOf('.') === -1) { @@ -305,18 +305,18 @@ export class NTQQFileApi { element.elementType === ElementType.FILE ) { switch (element.elementType) { - case ElementType.PIC: + case ElementType.PIC: element.picElement!.sourcePath = elementResults[elementIndex]; - break; - case ElementType.VIDEO: + break; + case ElementType.VIDEO: element.videoElement!.filePath = elementResults[elementIndex]; - break; - case ElementType.PTT: + break; + case ElementType.PTT: element.pttElement!.filePath = elementResults[elementIndex]; - break; - case ElementType.FILE: + break; + case ElementType.FILE: element.fileElement!.filePath = elementResults[elementIndex]; - break; + break; } elementIndex++; } diff --git a/src/core/apis/user.ts b/src/core/apis/user.ts index f2b9bb0a..010318d1 100644 --- a/src/core/apis/user.ts +++ b/src/core/apis/user.ts @@ -176,7 +176,7 @@ export class NTQQUserApi { const services = [ () => this.context.session.getUixConvertService().getUid([Uin]).then((data) => data.uidInfo.get(Uin)).catch(() => undefined), () => promisify> - (this.context.session.getProfileService().getUidByUin)('FriendsServiceImpl', [Uin]).then((data) => data.get(Uin)).catch(() => undefined), + (this.context.session.getProfileService().getUidByUin)('FriendsServiceImpl', [Uin]).then((data) => data.get(Uin)).catch(() => undefined), () => this.context.session.getGroupService().getUidByUins([Uin]).then((data) => data.uids.get(Uin)).catch(() => undefined), () => this.getUserDetailInfoByUin(Uin).then((data) => data.detail.uid).catch(() => undefined), ]; @@ -198,7 +198,7 @@ export class NTQQUserApi { () => this.context.session.getUixConvertService().getUin([Uid]).then((data) => data.uinInfo.get(Uid)).catch(() => undefined), () => this.context.session.getGroupService().getUinByUids([Uid]).then((data) => data.uins.get(Uid)).catch(() => undefined), () => promisify> - (this.context.session.getProfileService().getUinByUid)('FriendsServiceImpl', [Uid]).then((data) => data.get(Uid)).catch(() => undefined), + (this.context.session.getProfileService().getUinByUid)('FriendsServiceImpl', [Uid]).then((data) => data.get(Uid)).catch(() => undefined), () => this.core.apis.FriendApi.getBuddyIdMap(true).then((data) => data.getKey(Uid)).catch(() => undefined), () => this.getUserDetailInfo(Uid).then((data) => data.uin).catch(() => undefined), ]; diff --git a/src/core/packet/transformer/proto/message/groupAdmin.ts b/src/core/packet/transformer/proto/message/groupAdmin.ts index 0aa130b9..42030063 100644 --- a/src/core/packet/transformer/proto/message/groupAdmin.ts +++ b/src/core/packet/transformer/proto/message/groupAdmin.ts @@ -3,16 +3,16 @@ import { ProtoField, ScalarType } from "@napneko/nap-proto-core"; export const GroupAdminExtra = { adminUid: ProtoField(1, ScalarType.STRING), isPromote: ProtoField(2, ScalarType.BOOL), -} +}; export const GroupAdminBody = { extraDisable: ProtoField(1, () => GroupAdminExtra), extraEnable: ProtoField(2, () => GroupAdminExtra), -} +}; export const GroupAdmin = { groupUin: ProtoField(1, ScalarType.UINT32), flag: ProtoField(2, ScalarType.UINT32), isPromote: ProtoField(3, ScalarType.BOOL), body: ProtoField(4, () => GroupAdminBody), -} \ No newline at end of file +}; \ No newline at end of file diff --git a/src/onebot/action/group/SetGroupAddRequest.ts b/src/onebot/action/group/SetGroupAddRequest.ts index f9f54cf7..97a2540b 100644 --- a/src/onebot/action/group/SetGroupAddRequest.ts +++ b/src/onebot/action/group/SetGroupAddRequest.ts @@ -20,7 +20,7 @@ export default class SetGroupAddRequest extends OneBotAction { const approve = payload.approve?.toString() !== 'false'; const reason = payload.reason ?? ' '; - let notify = await this.findNotify(flag); + const notify = await this.findNotify(flag); if (!notify) { throw new Error('No such request'); } diff --git a/src/onebot/action/group/SetGroupBan.ts b/src/onebot/action/group/SetGroupBan.ts index 1a02dcc7..7b73a007 100644 --- a/src/onebot/action/group/SetGroupBan.ts +++ b/src/onebot/action/group/SetGroupBan.ts @@ -18,7 +18,7 @@ export default class SetGroupBan extends OneBotAction { const uid = await this.core.apis.UserApi.getUidByUinV2(payload.user_id.toString()); if (!uid) throw new Error('uid error'); await this.core.apis.GroupApi.banMember(payload.group_id.toString(), - [{ uid: uid, timeStamp: +payload.duration}]); + [{ uid: uid, timeStamp: +payload.duration }]); return null; } } diff --git a/src/onebot/action/user/SetFriendAddRequest.ts b/src/onebot/action/user/SetFriendAddRequest.ts index aaa739c7..dfe29e6c 100644 --- a/src/onebot/action/user/SetFriendAddRequest.ts +++ b/src/onebot/action/user/SetFriendAddRequest.ts @@ -16,7 +16,7 @@ export default class SetFriendAddRequest extends OneBotAction { async _handle(payload: Payload): Promise { const approve = payload.approve?.toString() !== 'false'; - let notify = (await this.core.apis.FriendApi.getBuddyReq()).buddyReqs.find(e => e.reqTime == payload.flag.toString()); + const notify = (await this.core.apis.FriendApi.getBuddyReq()).buddyReqs.find(e => e.reqTime == payload.flag.toString()); if (!notify) { throw new Error('No such request'); } diff --git a/src/onebot/api/msg.ts b/src/onebot/api/msg.ts index ef0dde6e..09564992 100644 --- a/src/onebot/api/msg.ts +++ b/src/onebot/api/msg.ts @@ -160,7 +160,7 @@ export class OneBotMsgApi { type: element?.pokeType?.toString() ?? '0', id: faceIndex.toString(), } - } + }; } @@ -461,7 +461,7 @@ export class OneBotMsgApi { }, [OB11MessageDataType.face]: async ({ data: { id } }) => { - let parsedFaceId = +id; + const parsedFaceId = +id; // 从face_config.json中获取表情名称 const sysFaces = faceConfig.sysface; const face: any = sysFaces.find((systemFace) => systemFace.QSid === parsedFaceId.toString()); @@ -895,16 +895,16 @@ export class OneBotMsgApi { const calculateTotalSize = async (elements: SendMessageElement[]): Promise => { const sizePromises = elements.map(async element => { switch (element.elementType) { - case ElementType.PTT: - return (await fsPromise.stat(element.pttElement.filePath)).size; - case ElementType.FILE: - return (await fsPromise.stat(element.fileElement.filePath)).size; - case ElementType.VIDEO: - return (await fsPromise.stat(element.videoElement.filePath)).size; - case ElementType.PIC: - return (await fsPromise.stat(element.picElement.sourcePath)).size; - default: - return 0; + case ElementType.PTT: + return (await fsPromise.stat(element.pttElement.filePath)).size; + case ElementType.FILE: + return (await fsPromise.stat(element.fileElement.filePath)).size; + case ElementType.VIDEO: + return (await fsPromise.stat(element.videoElement.filePath)).size; + case ElementType.PIC: + return (await fsPromise.stat(element.picElement.sourcePath)).size; + default: + return 0; } }); const sizes = await Promise.all(sizePromises); @@ -970,14 +970,14 @@ export class OneBotMsgApi { } groupChangDecreseType2String(type: number): GroupDecreaseSubType { switch (type) { - case 130: - return 'leave'; - case 131: - return 'kick'; - case 3: - return 'kick_me'; - default: - return 'kick'; + case 130: + return 'leave'; + case 131: + return 'kick'; + case 3: + return 'kick_me'; + default: + return 'kick'; } } diff --git a/src/onebot/index.ts b/src/onebot/index.ts index 29fc73f7..95035243 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -521,21 +521,27 @@ export class NapCatOneBot11Adapter { // 群名片修改事件解析 任何都该判断 if (message.senderUin && message.senderUin !== '0') { const cardChangedEvent = await this.apis.GroupApi.parseCardChangedEvent(message); - cardChangedEvent && await this.networkManager.emitEvent(cardChangedEvent); + if (cardChangedEvent) { + await this.networkManager.emitEvent(cardChangedEvent); + } } if (message.msgType === NTMsgType.KMSGTYPEFILE) { // 文件为单元素消息 const elementWrapper = message.elements.find(e => !!e.fileElement); if (elementWrapper?.fileElement) { const uploadGroupFileEvent = await this.apis.GroupApi.parseGroupUploadFileEvene(message, elementWrapper.fileElement, elementWrapper); - uploadGroupFileEvent && await this.networkManager.emitEvent(uploadGroupFileEvent); + if (uploadGroupFileEvent) { + await this.networkManager.emitEvent(uploadGroupFileEvent); + } } } else if (message.msgType === NTMsgType.KMSGTYPEGRAYTIPS) { // 灰条为单元素消息 const grayTipElement = message.elements[0].grayTipElement; if (grayTipElement) { const event = await this.apis.GroupApi.parseGrayTipElement(message, grayTipElement); - event && await this.networkManager.emitEvent(event); + if (event) { + await this.networkManager.emitEvent(event); + } } } } catch (e) { @@ -550,7 +556,10 @@ export class NapCatOneBot11Adapter { const grayTipElement = message.elements[0].grayTipElement; if (grayTipElement) { const event = await this.apis.MsgApi.parsePrivateMsgEvent(message, grayTipElement); - event && await this.networkManager.emitEvent(event); + if (event) { + await this.networkManager.emitEvent(event); + } + } } } catch (e) { From 4d8112aae5187e378dbf7ab1d6abf8506f8e9ba1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BA=B8=E5=87=A4=E5=AD=A4=E5=87=B0?= <3100542635@qq.com> Date: Thu, 5 Dec 2024 15:31:42 +0800 Subject: [PATCH 217/418] =?UTF-8?q?feat:=E5=AE=9E=E6=97=B6=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E3=80=81=E5=85=B3=E4=BA=8Eand=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=A0=B7=E5=BC=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- napcat.webui/package.json | 4 +- napcat.webui/src/App.vue | 2 +- .../src/assets/0xProtoNerdFont-Italic.ttf | Bin 0 -> 2433436 bytes napcat.webui/src/backend/githubApi.ts | 66 ++ napcat.webui/src/backend/log.ts | 72 +++ napcat.webui/src/components/Dashboard.vue | 51 +- napcat.webui/src/components/QQLogin.vue | 2 +- napcat.webui/src/components/WebUiLogin.vue | 2 +- napcat.webui/src/components/webui/Nav.vue | 11 +- .../src/components/webui/NavBottom.vue | 37 ++ napcat.webui/src/css/font.css | 9 +- napcat.webui/src/main.ts | 10 + napcat.webui/src/pages/AboutUs.vue | 202 +++++- napcat.webui/src/pages/Log.vue | 586 +++++++++++++++++- napcat.webui/src/pages/NetWork.vue | 318 +++++++--- napcat.webui/src/pages/OtherConfig.vue | 12 +- .../src/pages/network/HttpClientComponent.vue | 6 +- .../src/pages/network/HttpServerComponent.vue | 8 +- .../network/WebsocketClientComponent.vue | 6 +- .../network/WebsocketServerComponent.vue | 8 +- package.json | 8 +- src/webui/src/api/Log.ts | 7 +- 22 files changed, 1261 insertions(+), 166 deletions(-) create mode 100644 napcat.webui/src/assets/0xProtoNerdFont-Italic.ttf create mode 100644 napcat.webui/src/backend/githubApi.ts create mode 100644 napcat.webui/src/backend/log.ts create mode 100644 napcat.webui/src/components/webui/NavBottom.vue diff --git a/napcat.webui/package.json b/napcat.webui/package.json index f6b8c6e7..11ccaca9 100644 --- a/napcat.webui/package.json +++ b/napcat.webui/package.json @@ -5,12 +5,13 @@ "type": "module", "scripts": { "webui:lint": "eslint --fix src/**/*.{js,ts,vue}", - "webui:dev": "vite", + "webui:dev": "vite --host", "webui:build": "vite build", "webui:preview": "vite preview" }, "dependencies": { "eslint-plugin-prettier": "^5.2.1", + "event-source-polyfill": "^1.0.31", "qrcode": "^1.5.4", "tdesign-icons-vue-next": "^0.3.3", "tdesign-vue-next": "^1.10.3", @@ -20,6 +21,7 @@ "devDependencies": { "@eslint/eslintrc": "^3.1.0", "@eslint/js": "^9.14.0", + "@types/event-source-polyfill": "^1.0.5", "@types/qrcode": "^1.5.5", "@vitejs/plugin-legacy": "^5.4.3", "@vitejs/plugin-vue": "^5.1.4", diff --git a/napcat.webui/src/App.vue b/napcat.webui/src/App.vue index d26b9165..431f07c5 100644 --- a/napcat.webui/src/App.vue +++ b/napcat.webui/src/App.vue @@ -109,4 +109,4 @@ onUnmounted(() => { window.removeEventListener('resize', haddingFbars); }); - + diff --git a/napcat.webui/src/assets/0xProtoNerdFont-Italic.ttf b/napcat.webui/src/assets/0xProtoNerdFont-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6c0529fbfe5b62fb00e4adef4170bf0b19ac98bc GIT binary patch literal 2433436 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

2G8iEP+!8@KO81x6ZODz>Az&SzF5OL+ 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

DtiB@{xgY?bDls8 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 z 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�)!&e6<_@e49}l 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 z z2P{^t8!X%hp!6ZwiP%XHX(Vjhg2RP8&MAk&3hsF<`W0+}f>5iS+9b&;3m;)z5t$Sq z36Z8t&?Gz6bzNsy3lg{5<(96_>kdLCp@@_5@ekgFDEnSU8%zvJ5qcRUXD?q5Dfm4; zY<7YglRg9xK|rC-X`TKt;AZ`P?AEoo2MFn8WA5|b3{#YZ$GlX zR>=m}xwX^YpYJ+?nRqwC%)4P=om0i&M_tVLpzYEG2~J=d!*$U875$Fb+?sKJ^(7h> z9FU=K+!F*TCR(>~%gJw&+gJ-KQh|?oq8s&aRy`(?2ZsHR(?&P^L`T^hI3MV}2+_b~ zBb~v?FSCvq7e1z9t;RR<<9^!UdugT{)z;GSkm!V~F6v3^xeaS3@w@{|Ki8jzkS6GV z5He!=Q|N+4o;BN{1d>zrV^egBHdbB^RNf?FD{d7PWAr^AH z;4V!(tI`7B!c=RH!oIo+W(^=;n#tZxtf&k(cw zrr`qUF6661cMz@*5PS?qu1FA#z1K~eIxO&tj-3D6ewlKg&X%P1Zi=Ku88)%TC>v(^?Z#H21a93d3jU0 z#Zg+mro2q4tinxMQ!Z6mv9r9{Xst4?feuqNPZ*#HVaf7ifx;v(8{H?R3i(`TP2_Hg_g~5;DCz`+s4MRoXLdWNk!uhbgecCftLVHo1waO=)dFtdn8RV?} z$n$HylK^LF%;&H9ypjt(eJwE8p5rAh6bA!z?@y@PujcrR+wI(8{G*yGi-{UOz z#+_AWTeV!HJB?#5F4X_8XhQ%ksAa<^-Mvq0!?DLEAtjWdPyVa)4tp0GHjQq|id<5O z^64D>86)4Sc>WXKiKCllPx!DQM|K9d2ahGlA-qSsZDNZ3WOC1*$rqPT!VzW#Ht}J_ z^a@DUTwfD7NF~jYeg|luYgIo0?ncl)H^^mG&RNkQ(mPJ=2WIyI?FUXLy9gWXBByp6 z*H)2lx#jY2yB7Vhy!?ljC2U82tBR|=`~}?s?fVnMYUzF8JS9Nx5i1X9*@U=n)ueWJ zKh*UQ9{T&kMccFw)z#}uxsS*OGOzsu9(V+f=3(yHCT3zYLFnZtl|%kzA6riD1l_4m zEQg2VeO!Go-+xkF$eK2*E)(-#(kGQuHm4l6^&<+RF)ZeP3uZ&Go$A7Yuno)HG>-cf zN4SznL0lQ!oAua7n;GfWjKOTcn1)%rI3)5VW30T=7{~_sH=^Arm-^dS$rj)YNCR(J zz~F{~d=YKCv>SG@Hf`+@spLUv?`ztf>^gR__M%qJ-l8_AK9v7$iT)!xxb%qhcK#@g zA?U6Yhn443gPonQ9AUs{Y@#FtWrzj=%E%)^ATN`pi$`}zH$&TaPdLgV@qx6L>{N9! z*q^5JaUi)9{2Cy)9fXXbBHIT_CmD?g2a+1km3h*&2mtXi)4F5!9n;5wH@8tye?KrQN8o6b;VN3+%<0+ zJr<97mc0quPXG#+XJMy2inhl|h3_wyUlmHpM?x$b$~i@m7E|PBGnJVFOE7(g4TC<4 zGRma`(!-EI5Sd#+9vJW;kztAA20rMHa4R8}Sz1T4*;l@iIPlHZd+%-i=0rKc3RB!} zIVC+jJvsTi1Bq{luP2c!h4PvRJxs_?l+Vsq(8Yi?z_Tw=dp0jBa=9TATX=JXO;GvcjC}~&@u=h5RB}RK0vht~(D5^6Z?a3v$umx!g zv*3qM8umyZK>j-a1$9;BYrpvpmjCEhLtM0vR-7LX{x7?5494CwTYB#0EAV*FVH^$2cnY_ zZa|o9JuDf3yU<&4C<2Y}eVK5Jmz&B~M@%>ld=SW@LMUQGERMp+OODYm*pt3c82*e8 zIQt_$Pb_RJk66r7J>o5DRp+Qv6>r_P1r6rK{N?G{2VN9hV0I!PC>s8p(`>%9y(O7! zX&;j?sP>v=h>-^ zMnaD0s;DCr$!~<5MvLo-u)lh+(`*c|4ym&EGyD$!_lM6QckrKd?E#P|In&}F@d^|x zM`;c~XCH?m0r-|+98*2JxbudUsa2u#Vi%<^cEmRZ!aiSE83|8Kz0<#>C8;cF^@dzY z>B?v*b@XU5;gT0*jea$9)6Ef||H-M-x%U3wj&^h%Y4O^#OE6|hUs?yfu-HC^&IMwB zVIQ*sP}m6@*~{7y=~vp3kFk%DzaVFe&&S@Xa0PwO|WFy>2 zXq7{|BM6yj7-EeCZxFDrLN3Cgl*p!l3lRT8A`#j3ZA@c#|1uRDjMeN26FlYa>FS`1| z)vLD!2D5`~N#KUg#21zZ+(Dz$_^WJB=LNcy5paihs0M`43BmNhl1 z3MM1?O+~S3Xuy}4wD66o$zO%z=fMGF*}Bsz8^5Ebofhr&eoJM#bHR|&IJAJ>Yc>y- zmL4}6Z!sFr2e~&LcdF0gOlwc5X~)8OFavg{)X>=2AdPh{S%tqP4=r1kO4h7hma18n zT(&2f!mIYDhNh;5vDGW9ySl1ZB9H*>|KXpxj*#Qt1km=a6so4ufF-~c;}a7pmV7mi zaf~ofkao$Eyd6x{t&eYSA6^9V@d}%~L{V{bTN68;XvHYlc|5VR{h0K@c5Jskb$w!Z zxHI9gEwY)x4Cizw65AhZ#_zYcwCqeAqdFMi3;n3!JaABxhCo~jq874#PMo{a#2SPp zh%i=~<9V$R$P(9U<7xLc6JPf6PG zqwZ19?Nu@I=S;`Or>CQSe@}FLnmzwmvhXQZSLdIOt=YW?j3vAAKD}o*+d&_++hc3+ zM)#+1ZWs9>_+fkk$P{yM9}_yGcs4X4wENr&z@0P>Uu`Va)8lm3p4q2QfBOq?u2I=Y zY|WnC_+Jy7Rf9FN&hO+B*1TsS*^@N33iv)3UtT(Q0`}|i>2J?2c8zo`91(7X?0Z9r zA2|)aNgfP{zeOo19;N(c_a4+{5Bt`1?rU&(zIIkUxEuy|7F;?GhXh7O%=|B|>OJT-)-aK1#6>ha6bku+3tN+bOACt*#r3nM8I`+5)D+hKU(aaTSy4{} z{L$K;zkX3J_W~+nx|vn7;iF229u%Ihd~)39b=TXN+JkgPxc8&t=e7u)Kr)@vDyTld zS2B9fZWs7ip!lNp7WYtJl=*#}y(Cl1@aD$5Xc_5mXG-nCrrtK6w!J^HMW|d3df-Jb zlh>AFIo<>x0Qo{Wxz&)%8h(fvkf*UYJB(rEIuTn8I%zS`ShyJ!z{+ii1==U+U0r5K zrH+wcp!of{hj~g6MLP~~5Uwp`Q}Dsp5Ecf?po>rOM0nS&yC7&BoIKdZh-pepck3w6A=eE&k?V?>!_RR8+zHY{e=q?@RdZ+{Zyj+ zXM}yXSgrq=&7`fBl~wKrw>z@bsak#I<#LwoeAU6e@hOj_LT1VrZ7!~X_+#LyIKyQFQ!dR1WLbvOeq+H# z1ExYTsRJ4;BDAr$z|7}cJe$?#0YThb#AmbE2Wwgj#L{9?8>EKEokElHKJeGp2P*<5 zd`$ib%9o;g!C*2NWC8Im9R+O*yaXl)R@67f z={R-;9hMAg?~8ZQ2TNWtq}W;V%n@ErBzBS1L;vu&!>3r3WJUU?{0#JO!tlX=gGnki zTV-!B)}2`GUInfxwP&T*QZ`oDol5xPKD%3PQN4Dnkx8#u7wVi=E}QDJI8}GhY0J}G zc^pBv+0JCU&$$#p492r=XC#?X$HP2uI3{$1!Y5&3_BrKfJm#zLfrurBz@KUD~p&Ct>O42^Jpo=Fa>BTT6h zdnPh^Yh+&$?At3Ya+7%LjEr>qIs1ygdxY(c+&+q=;(2m2GKOV}bAeC#yN9FD2B8B+ zhr3}3AiPw^HfQYf`P`W${xS$>@L@)VNJO~E70B>q3c-QKpvEAF#V|Bwlk`jN*wno@ z=Dx%F@wS;=_8aL^?YqCxPM=XOETDPVRKfYhzVx!O8b>oG2YJa=+ z)m{IA=RMoD?WDFN`S6s%Fa440BGlSA2aj7+sm;N_()acs{_u!){NUT9i9=04@yPFg z&$r(`2=!bqL)RCUknd+~#`zs#6hNymPGXG}P-mTG4ro;{Syw0nX{oY36ZYPCe*51i zI!D5t45ZmZoxeHJ{h5ne**<@V_T)fAI28FDV?FWUqba}FkO;#Gmd*zZxx^veDNT|m zC>VjF3t05|>F2c*+KJ~S85oOURQ6YwdJ!ftQBlF`>wW5_RC$GdFsLVQq(kFgqBC*Peng=^A;3v=dZ2YM&WA zS-+-An5Cd*%q`f2ZZI)_?b!$wHj9t~Ejjm^5Y7@?z>ubhb!#VH(eKnb*TYSyMa{`n z)FtXH4vv!2s0QHcIX7&+YvGg&aQrPyV#0V3$F=ZMK)O~Gb%jm<>MDLQbMM=n{ss?Q zVnSfg==a4Tu8P`o&iyGXA}1gz5pLW-bD{*w&$$`10>F6f&b>GAlp|4r%_)?;az%fe zdlRHE+G?JwES3vMrI0Ou~DM zBx81#Vp%P;?$e~3vj^do?{N8pAUna=T@WegIxE3-b{S$vsv(W_U}cF!Sip#{Vw#V>V6X7Iv_HA*r@WR5^S&Vb zg4G~APv9;*+Kp*H;14JPPJ-XX31y`+EF$(3Wy9qj#}8a}lH(t0Ev#GW<}Sif|266K zH3-%xN8v1f9UE5co@@k44<6v(54rdDV<8d!OvH0l6Gj1Dc>b$`d6obMup^#ZS8{cS zyV1NAVh<2_BF=Moc0A z`~~t0$90hH`~>{QN;t$-A$t0tqNxaw~) znQhLcK6T`(%>J?QjaTlvrhV1ESjb`ygpYK(d`taRZt+dLvwL(XJ#=#{V6`j{4`yPe zvTvzUMIrOJjz^@o3`V~8n9%L45>Re|M^wN@10x!mx<)celfAvF%hflwL0#$|yz2Au z_~)-0@GMm~jPAQWy>;`G@Vnj9F&9;2-l(m#ysohtKKpIG5AN~>e$tfO7 zDmXk-C~^ky0R#di2?GdO51}X-WCDd%pt)t3b3w8yo{cdCAc-Hreau&3@LDS!i*hen zo!_I4?>Vj6(PZ05XPdNTBmc|&d6(7cwC-Y?rBhC8?rQ#_Y7rZ@I`M_}$WdlLc1(Nc z*x1;&Hf%UNHg=dD9;;fUeaGq?V`qdd&@cTM7_-nX;AcZfxgSt3(X04{x2TidkzxIb zHEp>MdfL`V$A%6cJ3Lgsd-qstPiqeze}lD~FW+3I`8C?%x3F(>4|*9Xxey`;d<$m$ zc$9~vLI0E?xPgI*qSY{EHG{lM9Z~@ zXc1>CRiu9hIrM0W;*n725$w^)nc*YWL^B3L;U|r`@ zE5}iAc|uI0`5RAI@(=DvasITSgTvDq=@955v(nK_Cbi=rIF2*Z$c+bQk+lfbg3}0e z$q(NL{ztKp2JUy?AKtd_GI_z{UcJ`U=KGhpq^0cqIYm)K}(8T!`IRhisn`BXMb?)bIb*s9u z%HnfboR)CxitQ7%6}HmSD!;r8EU;vhtdj!>Ho_cXm{b4%`?~+Nb^hzBi>ksFmv3vq z89aMzeYzGleBrNXR%!32Y|Q^Z+Y#=`0BoNB)HR)_uEYWNf7M_A+ItR-X^JVIwyLGG z?)SyWjWl;Y{dD&nzS1z3lgxsZn3g=gGGoa$V8s7b9fG;$IG=K|;!oR4=6a&8t_e2_ z_F^$t&2TQjTazhVW+D`%D1;ufroc6cBq|RDe>C4hLgdc;D5?cS0+N$CjV+ohCk-y} z+g2c2U>VMjRugBg#|jHfGgcO(BQ4P|TY4>_J|j{CNZ>LHujvKLY#+I2Byvb;u-%oJ3%`O8;o(1xSXq?2Ok0!E(f-?LwLMGaO_``OD@!pn!#>+p5>z`FG zKg^jhY7$~2z{Gj#^@?6CutHF50Q?YvYlRAHsX&o%qfiQ>4n#3n0thbe0M&hlXRxCS zoM!tIgHI-;d#4f80Mg9e`&$Q|Xr=a|c-^l;Ck;cwSOlqr0t;espLlyU18Pln3c5^I z3QtaxzuC0#Dc09L@|zWC;W=m)v4?=3%g6M09>bakCMlT(JrVN6-iYWX>f~6ex36nRGCR0j_$GMd&yeRKN$K1KKs|M4yTTw3 z>;g-s&!er?Hvl338N`{p2CVO0s@>Us33glAaH0M(>Q8*aJU%gg&qTOB_`y1n=M#(3Wq@&a*Z z`EW<`!;Atfp+!-?E!-81ZjS!Ml$apKAX<6k0E5eHA6^w2XLEo@^yszl+Y&<>*b*>$ z8Ge~%7}1b?;uY$wM0Vh&p8yjAOh1`%IArG5O-V8@JneI5wIt;z5I=hfO(yBu;Z1F_mXvx+XguU0eOy)3@T7DYe1z~5-X9{IAML1PwIqiFS4ReSywD5?tdUzict8rZ z73o7_uEI=69DBs2K$Z^uJ0bIO-@Kws!*lZo%}qxu>L7k=f#zG{hq;%OEABmDz=b<% zB(Q3e(c=Lw?{inSA>EDbJ0Q)5Bb;rhz&bCzqdUgwZ@lm4;{kZ=&D@v((mY5LniCtq zWJtGj0|Y!E@CSNg0*~V#q+dv<;U7nl%M|-}K?ytnG2Muv%bLi!wTe=k!THt7>WPq~ zjP}*TFBZO1Rz_a72;jmle8qiX@s9nbsxrjW;vF2@R{~go;H>>D^!>51?+^L9x_m>0 zEvZbY3%WuZF9>S6{MP+WS5R3K?AmmHARNx9YKFhEJMz2PEkY1y?$GSQc(FJ8gI!mJ zT){f+2l*}bw0zYC!8J;ag?{|QFiLI zc6Q=dY$SJ#N@1;Rtwa0C)HLIEC>jHKUcGra_2%W$o0mn8*C$^V`B;hw6+pe1f<(*; zML?Xx+BfeR7F=xJMswXZ^Tma&{8?{S?%%fkKEdL5|F*&H)mMhYS5|Ky)VG#w!+j_( zjBP7cHR1(r0n5h4gv2pOWN?k=^bSN6C0rgH#!8G+F59a44I;~(*Uv=veu_mJ>viOu zHWleH?S6-M`iQfpM*C-n*BkJ9-*$Q=yb~EMf6v{^uEaME?S35e93A8F9B|fnf*#LX zjvD&pkj{9jj!b(U>`G_NLHZ)-0fH9v;$0IT?-0NDR8d(EdvKb7XD|KM>G0yvfY(#y z#KZ$RN|#@ZkY9YTuEUIn%+014=wAsopn**!!0?~J2XaKAZ{>v^TmfRr82cTnP(&q$q~}J;Lx^kVtTGh827BqZ z+;!ydfU!t&4Iy5HC6$o9-UN4ilm;D!d~pz13p!OP0ss7h8xdGo;?h5@>pUjcZR;BC zY60;=5c~_?L~pRvc3F!^4)=S{b`M-`jw#jUIOH;0DXaxJB8vlCx;BVZq2IzWIBCiH zlCJ?&TScD0V9A2vJBkHCGSZZfoN}NE$J9P+Qt(G(y|ifSkG5=i`r1v8Hg|@;@lW?%cG-PH*{=^< zuDk#67R$Cr-mq0w+upD_owlyEUE5{fwmRLewEogq4=6gZGWG4t96Ge|p>^6rlGFC2 zO_uTElmd~?&Pa=|IuMX+c{_{st{gH_4f&5&HpZ)D>Rv!;`1%o}2v>*Pv`lWorlB}x z-#hkjVA+ag(}A!ZZ|P%)N|ggF^bMu-(6QNTB8xd~X18YL%L;oLK+D4b<1*h zUtoaw=B$!pe$20vu-D98B@G4MP(CM_=B$?O(ddoQ@o~I}_qhuv+f?)=9aPi~rQBBp zKD?OrOmLVg%02_9XPqf^RwJC&2DE{x8F7Gl0s}##1C*$zW;ep`aNziiaKIi9f>sr* zsty*M+W_SAa0LA0HSm6*S&*!N%i&qP8W}!B)>K5IK?}l|P)Xav8U!xJs8cPYg$iL= z^)y_FP>Q>`;2rGqjUDOSFVmUvNJe@O3lbbJG8yCyr!8;*#Ev}{8ohc1$x^|OloN=Gjcg(IMX8=XE!F)vk zIOLnsuQ#5!0Do}tPJ;L|xZrvZ!at)Ji9 zdD~B((_Z4%(#@W?-zm&EiGO2 zoO@>N<*w^|#ASjPVYA4ei~2U=G4-g`zp{6K!re-JTtENFoA*)uz34{H8J`MSeLqd# zkL!)+sQToN|A^kXKCaUjRf%NsJP)@W?TIOjr)Bh)F(TteItD!{<4%H`dvEE7v&Ai2 z^Jy6;Cv)qa<41>H*o#Yp+(15SKZY#ezy~lT`{1VLgded|fi)hyzEReqJqJ(!mOx-? zYzzrA;kCg=#x_m_0uvj@wBr$D(7J@R}-V~DGPt1%gjq^;vfyv;h{n=pPjrX43TKUN?Y)pFst>nr+n?4+u zDu%~@MNSmBE*dMJf&Q}@NC*7PU~3~p5Rnv!+k$TifEELIvDv-bwmZF zx0%hJnsUi_i)2)_SFA>lr(7zN_Tdu{qMHLZ?7BqK@S|7T5n%R%_G~8T)ovPS>j-+O zlx?NuF^{>t&ayyWwuYIb9>G8yIuPU4%SZW#L??-K@m0jSGXnAm!KE?26_Qy2wlZl2GuAc;Z(3qVWWwX=*dn! z#Vbjk5NCiji6}oxOkW64-sb%e*C{XSa%rdihe>My1_aSJCw-e1ZQ6(r`!E6inPyc=a}}#d9iNT*fil_inv`Pksq5w)URw}f!$^ltlR_f^< zKs^~Y-f1Zf`i(k^z*YsRcAV95*J1yKr6=RA2VC0!wpi{o8aLf2*C8_QM(=QmwB!;~=0OlimYF7^e-MX`P@{Oox6{BP2IBAxT^3@;iyKuxN!f(40@9GOPAK0+bk z81k|YvjEg(<|NOSC~U{3{Fa2k%f|ZV<_OTbUEgEo{^ne4SSkT!=m$?AV{7)tm&UR5 zXG57yiSe|-lMKpB$G7EvoJ}XCzht#YujEEvw3oBUt~&nGjgyqUJ+UbhoEVR#Q8$_g z^LU?^WD!67HfdaQo0i~N1jRtK5$i*oTv7amNm7h)$_N(d;=vwJL=>x>aafWI9i!TP zMXr(SIQJwes4j=4(p}|?dY9Om>~4S8=y=tVc>Zze8EaU4j7Luw4zzXEoL~+;&Rwcn~fjOW2`_v{A zmPjEqqczB;N*rX}|?eg5K?|47(9;xqsXvy|ZUe?q`HEO&ns^b6lQkkj#a%YvnlGS$Kh z9oY3Wj0t$K2VAz?qc)ezCZ%nz3E1!0dn`s43Orxm&zEQmeZBv?QjNBZJva-Cqo}xf zaJMqF0F&oM-?R%S5}R0MB9FMu&XzHmxSH8vZ6H}EulEBZT_A}h24v`qfmP%Y?UBSA znK!gQYHJbPF{C}hdJ?ZoeYxXrYP&eu)12S?7eHCYZxKEZ`G6gs^8*L#K>;Wb&S4LH z@D#?woZl~yL@EVvu2(4RJFExie?50x>U*8-Lm=Md>u_9R_>HeZH7x)sPX$4_Z08#ZQ3koa`A&hY7<-pbQU=;b~5X{(6 zrP4ACM2bBmFSTeqvwL9U*t8OHR+0bM7GKqC1d4VKr5)alNH#tG{sKo+&3^Y1;byG8 zoJ=w$;`^|~7#o<_@9=o5_B*^uFc=4uwQJ=XPc?wDe18yiO`(ZDqNcjLRGEU{W?sK2 zML8pw$ioBpoKw*37Q7Jc9$}>&8|d#IK_$oMM%{KNvPBZF zW|Z!61>_GId;_K^x7_KkT<*mzNvjN=we+GE(kx)=qzWU)7XPEz&S{dUu;e8+ZUlw* zYu{xPuW#I#`<;MKrA7MttXj^l>4w)bW1_P8DieYVIq+V{fy7T(2V6hIaqU)knD$~u zB`JMYt#NB zJSSAe!bKtaO^cDBNY8O4GPWPBFB}awCMi05Y(M2xZ{(TP8xgz%yODk`mO$sAY^JMW zvG~aA!PWeAm5=!D`RLjXqP8zn)6)~RML_ASuA;X-?5TPkDbm`*nOFr!=sB(aDf`Oo z7M|U@=XR9hTF!Lmb2|z7kBD`a;;MZD?;>#bZ{S*hT+0c`u17rRP_JE$p-j^Mp zLe)q{Mjs}gP4X*Qiardx%zRmC3WE#Q8d(v3Odz;LE`lgHSGX7GEO!&QnH(1#(bc)$ zcD^N*Nmi&Zop4!&5nHI6*nW7 z{bt$`UNIk0qj}pXe^)>H-ih^{$6{jED2o|QFuZ^?2DXNHlU%O?n4o`7XA+NK(?nl` z_Ns}T?2RgY8L3yDfRe__EsLB>Hht9#N1vk6WbE2`fiD} z1XS-=H~B#cH5TZ6I;A@0YFHhUR@(xzF>}gntMn+L_|UF_;jsJQzR|wXl-GJHV>Fu= zTa!*tSaztXr)eyZUL*WR$U+BQ5u!{jMb8K$ZSnfUXY#_3D9qB**1#B>z%n>{wmx_I z@ZOS4BC$}>Jg2XO`Nf6CrKk%r_z}(kp72T}(Iz2g7P3J79nrdECUK|*uVYl1>f2aP zNsMMqZC2Ko{AIs(ljzdytlqT;CyMGLW;8aofsIXz8l77&Cn6y8?F5+a+=b5HfR)UT zAn7tC8?#p67N!&Wj?SmZ>2M55oCw7|_RA z_e&W+`K>D`ozUAw?gTg8AHy#?1U}m{nPn+*&sB-S2AG&ADxL2#6ln;c7MDwp%Kq*=)z`zC<`$ zAN-uI;dm_Z^OKAr7DhhUIA@=bl@RGO(~r`Mu4$;9 zu3O#M)6#-5MS@9B*gv#W%2CY* zGv`H{sGhl#Esd%Ep)F5sMeWV}T5y$;2SJa+cUt#aQh``n+G3k-`J#V|5)Py+d#!h( zA))8$I6DwdK)oRUVJb^bPq5Jh)Ba;Z`{`$}{k1mj_;!92g;lIUhRFffZ$jEfp-U2LS-s)ozlLsZDjbgG%8Ll&dN>!$al!P5B8|*?zAskl zv_=%Gvs7uUb2Yh^ZcSf35=$L8ujq@WT354Nv$f}{;aE!YM0?UPyR3L($g&+&WbLhv zbWevrVeAfDD~$=s=Z`ro6&Y{TzR;3*I-+{b0ax(Jn=--lx?ODb$9-w?1Ogtj>I{xu znofijmkpwpQ~hlHiWT)qM>v_WFGP?~X#oSIwu(|FpvwREhIsINUmWcargrc()yhq{ z-1ODM7;m6p?}<8QU2adhLuseWb(Xe#{N;YCE28oK^$(w5zvgx;1^2xIQyl*%UnATw z8FW5s@qGi+$gh3DKs*@t_?!-!@g2^I^m%j>B2+8oJa$~O0N_%>iS*!xpmX^G(YCt_ zP3dS8_?pNK=Y&LkX-P>uKf-wYAmZJ)!;b-u4W!;Hwd5O&cq*FzXq#*Oh$I5xD))|p zfu92VaU^|1+kB=pD$^Kji7PwQ14CPnR%NyTWp*H352l1>IvolW`Xz)ZlisBb|JPQp$sj8c$^7%OZg!rZMs>^aV3`+GSmaq}+FcZQ~=Z zj~MKbAFiQ;veVKder|oWb?m7pS?fOb-Vgnff%pby!)%waF5Kj+86)x);HEwPP^r%!?qwrhbqgl>b^mZx z*w-Jqx=(3w`@HVBa&cNos9`yXqp|djr=3_!!4yvapLLsf+5!aO~f^vArDaQt^=L~_>xB5K-)Gw3ufSF-x+=S=}|V4B})7(tj?zyjKT)8 zB1jkT9OEYLDNe{Mo`k@*k$pFSz?6}sRFivE+M5AQaR%!^{#>xO(z*Bz5rHg)bAII^ zaG`*Yc|NC~088BEbk%S7`v%@Zw|c)Z6xyd}ORK8fd+VS7)U9UQ6n8!hK)8M)ap z%r0Gu_sZdS-A&RN%6dkLDD<~%W@>zbKM@hYab;mAl8HBgtXBkxk%#<_KRPEGbCVE{=`OaKs=& z0@$&T{h~gBc=D(Tj5YMoXl#NczC0lh^$1QJCc)}L@*nRaa8;&&7CnFov88b2gpmur zV30&HeT|P07)axU@U6W5OSZQtgIolv@;R)l)86BEBw>mYcH8)g2`#S-d6u-`24>E-ns>0(r2+_ylDJ<-W ztP>lvT@cx5vGO6d*~n~v#*DDCV`bszo%@|i6Lx|=Myu%yIStFDr;Ism1>KgrD` zE|c*XRtL&9C;qW6VA-ZaYjKzy$T1CLZ8o9}wx%xZKCd;_-296qLa7Im<(3r#wT`7rY)k9flC2}Hc=X@e z+k5MS{j2J*+u~T-+U>B8cGazxe%_j#JUN+cZMyZ~?Y~%&q?Cztk4csm*d#O|WESV( z8G@&ACjngZaVLxtRAG#J>E9RHEvx$i+7ZOPOifrSEKtG5{{N+)0xLB)Jj1N4)c%dTS~do4s!hexx>*fu3aHokEdg7wJmf}p z8eed!j!6?uqdUI2&Q&p8#F=1ZIGVek=?Vdsbv7R_sB} zPwh9Xmg|#Lu9(9rIsQ#iG9{J53y5x4jN>uw%m9NJSlr4GFLEvnGl5x@sN8THC#Fu{ zt;O!YP5bo*3|H6!*aqQ!A|2JvBA-p(elW>)26HEpQn^F>DOtyg%m#eU_&4cU#M%+3 zAI+**MUibH4mp;RP8313AXiq(Fl(7$Mv|RCk7%ilsWAvyAgpjIaMX=xt(^8*`|8d_+`7hoSiZ|DJevt+*2(@TP#%;+4|sM zW`!Me0ggr~RTHVU_{uCnB^pv=y-s&ya%4m2>UI|N1|2I^v(dAvBMLsjDxca;`N8dO zOYY|t?kbl6&nJLc3o(#Xqq~D3Q=UXwKjuK=oo>xfkaw ztSgn6G@T+2jr@@c5GLdSF;g1y8`A&>)b8PR2(p6^;}Q$X&!MA@!LrppFmMC9gN9=w z!`&*5BZip?KS-#fesZcpFV|kC=+0dO;@XcGLhwf?hSwE*bwhG72e^@8pTjJqQ_4ft zS7NZl^SLpua^E5L2z+{+uTKE!Xx|)2#O}~ukbV~%OA}Hl58P)wWT?Rb+F8H%wMe$_ zmcDSXJ=V4{=V{!Kp4Of~%1nP($H09)FAZeyQ|Yn5#5IeX0zV8)y@J~rp4~h$CJ5dg zZUqK?NF`)gl3;r|EILl0mpy<;;Yn?T{M|wAh`g^{{vh|klF|>g4}WF2R(cJ5F+C-p zD;dU>!oCmZO|eKiWgX+;E2xYl1$4WyhDFIQ6W6VvtJCPflIA5|3#eE|f4(;qfNwRw z$M9LON^Y<5H#A(-P}<>K677jDadwpAldHPEX1jJaZ8usB3fp8gS}GSBt&^GUzQwsi zwyG*`m6P3SbKz5fb^7h zJ8>lLZ(7|@zj9@L!|JBnYim|7U%tAg_G|U6D^|1u{G)m3q@fGL&qguHSo3BAG3!lO zPoSUSxqwN}6YKAeRL4&Kmb{1U-;E?*3Tu}3wI}tx{O$LYi-i)7(LJZN;UU9=QYE5J z7bDi9ujKRSS23)k@?r_mZ}i4LIgx5Of&faI+>8)QJ|EIOrx}tCAe9*J z=m=c6fhQ^L!2$86E_3Mv$T0ebWHz3XN=wI#r9)CF+tOn!Ej2Gx17XSM3e_$gu$IZC zLrOBI`Sb-8<4`y%T_$-z|6S}OUMF86enTl(75H(D*VvTE#F z1cAnubVbZIyPMhv{Xq9$ld(p15-S`DZkU5$8w3g-M{)zf_l9s8Vo5ep3q-_>j|rdX z_|G%p>Dk-cxub94;Gl8QrU%sxExmhtHiaW= z$5xk0#`03*LaWQ0t&y$fGD-V|JiKWzHX%v&3YXb9wxHBXx=k4{uQ!2t5r2(f_p8JG zM}nq;1W@SLg+1`G@Tu`vF|TAcS}W`z(rbe5qPVK7#VmV0beCRu^*M+f31l`jb?@i z^xy2%PA1ygytG4qvOj6&8h%J3;brgruN~Uno$PPg+7bt_bHDz?wYOnSTaEQaoSi%~ z=CyB9#4Efrgj)M`)=QF`_Apm7d#4eHjK4Yj2)T8zY2P-v9d?tR|6`JqTRBCq5ALh2pD{^&zZ! z01C^kf#~IH8v@qymdmB{+ess7e+*xZ-nni|ixTVVT-(3?@V-966n#r$>ES&$eLfv? z*W#mCdmoivFqCo&A|^y;GLZg85`7HWkW8`yR0CPP&`C@caX9G{YX@8-`|f(IRKNhG zEvfP&I}^u`+;e9~XY==x%)i}}*q-ogH0u)z96v#`lv(yO2X$$`TFCgDoz9)MkO=Eo&*X6f-WciwX>bL?1f zGDs&&Sm|6=>DhP=%)9J8z)KV88(hxeHgJ*M6QP$J^FRh}ah-F#Qj|$R6a|RmHbVO7 z!4ZwKpyr^H5ZnPc4u4_|5x7tp#e@U@Bz`J@G6<3L!7K4UU(fv+A=ZDM)_m{3sEIw= zuU{t~f;oD9BWxnw)IW-}`$F_-nUTT;Rxx84C5fVKRwXidSCxr(@CD|@vvU-G(SNl2 ztZJrr>GI4)(pA=rGRv3tX4Kq&D+3X0*8sS~{-0oe=(?R*i_z9Wrr+lIqA6tlCxQs^=q-e%MNF02T>19r>D*-&ly%JTA z1~2NDAK3+I3~ns|^pVQTxaltViK7;U+JAj_-H+V?3)Qt!vD?ku7mr`a8F4{yvwhg@ z4FtUIhgnF!Tz( zhQUV@(QBfa3s&YzgtftMhtlj;u)bZ1!GZQ&yAoHlv|N#RT>GyuCI1Q|i*dB!f@ri< z?7w9&!R}2AcH$82D(o_(roCZ0@`z|vJ(rL76Vg$Gq(|V>d?-T)=Q$8i zO%;kbM{@L;@c(1(ec;}Sy5zJmKEEvY#gJy!c{$0 z7~{FF7mSHX0!<+VNJL0e2q7>?N*PNjH*apP=MQC!H%)sPP|8YIU@14GjBR~0ZbvDs zFWp$z@$z=M@!@`d&m+lyfVTHtKc72We~ylh&Uw!B_xI=f`~F}O=R&D1 zxe-LfE^R@#h_I^$$LL-E+MuL|gA=j28@__Ye`$;2sJD;7k-IpDzC=C0ho7VD&gio^jvey5ZOhYv*llFgpWCtZPO^2r99t+hcK;y?jVGx7KKRzeFD zo*766>TZ*gNt>-cS&zjD(?+>(Qvf~5=Cmfj6$g9*x08`+oThc;Zy3m8$%Z6x8U_g3 z!0=-xFl7Lcm(|Y{H*ikU0R&#%iaP}!z)L43X@H{P+=xOEC*(~zv+m}U$e{H$RmiII zhD~zW23!mMWpy@y75B_tJ;LVcLtQ`eF}Eydv&UdT-UoVZcH(31_sjDyG_?8}afiIE zzX8tHHIR3xtzk?euMNEr=e1nrBUFVKSPPnzyh&yln05sJFm(tj^JvQ&&AIDL!}Q@@ zY-HDAeR_1iOK*4WXZtekKiTltcGH8-`z86F>-N3UkxqBK!dj=&X}W*jzqtHi#N7k$ z00Ub!7Vu>$U$C^0%EPC*0L#n|zBp*_NP%@4{-0c`Be#t=-ZpmnXEQTbeZsvr1Ir3# zyUbqqCxRztCMd9FV&(*{#qCJEuaQ1`1Fp7QmM}PBFslMb4*)J~qr?SI&P5Ap6NWY( zsOaQEr^ak7c%N-La5e8w#hB(%yr8=9;}p{+st1dd>}+##7vMrExntgh3V z*lts1S9g9mWV0CMpd;=vdE5w6G*t&Pb#{Yf_OwJDHrWp4%xq)QKs@Y#IU#6uNyd|X zJ<(y4IT(&z;%Ts&B)QTkHP}>tG}@P0?Yvlg&Eqj!*V(GqMS^yAmtT_{p_CT%I5oc` z;K0di{Fk`ZDs!vPt%0M%C^y)H7GtGxjaBvaLU*<{cx>+Gu`Hq|VN?FJ+oKpw@)}7t znoJHwk&HGKwaV*x!SDd$ha8w6eI)gfw6Z!>01$KP!j1$_{b<+@`H9?6lu)%V4;*ml z;#Z_yi}#&$!V}Qubi!3tSBDp;vo6qD|5N>LSeSDR8YBA9<`15OE_D&32hq$7?j_i1 zF&DvBOIk5+4Vs?$bS#?6P=YeEJ57?y-=g2u0$irW)R0hvM}K%Us3sarmQhT{5FRAe z)neS1Om1_uSsLxp>CUOaTqqt7}#xnghT-vlCz!i+iMT#u9nE_D-NEyB^zR|VGUT`mPY7vf8Bi4$F8qD}& z(cxGk{+h?XiUHhOFlB%|jS0&I@kF{A42SdOlkgIvh&Tmb!$iFB60Q@v;mQRAwo%X;L$}7SXYdQTvCiD&T*=}vTcU!7_bZ*Yfi7fuGOt0#QX?Y$=^K-_bJ^4cJ4w0J{# zmSo%@FaqSsBE2bwC7K!>{UHz+O#(F*>K!!>T7&q2sjoOl{-S>jL5E+c835k}NUiEf zNW0FR1Jn7OEgY)d#tF}J+w5&&+Z?tR?_)244t9^8klxMfUlU%Jr)`}+LuvA$p&4(CY7qLyn*CYSRP0&=FIMb zxr4~ma7WzYCHpj)dJn=1ejZAaipKo@OH{`ef8V4z(zA8QTpJr$vBMJ^4N#0pU?2G( z$C7Q0jrC2L9$T(6wbi(>sj;ysv)PvI!Uv2mUe_W=IF&J8v9)6RZ&OYp7+GCRM*1n_ zLhd3?L=)U8o4_9Edf-c;;99uT#Y$YF(CQ5Q+MDxy=-zb1E=PU#T3hs!YJak!)f16b zt+eYCu7N&R0K4i2smHnMe(RcGH?HRqE{JNZOJEzNXiUNJjg?p$@6HWJgrP2o=}SNdSgEPC`U$+jwNDJI-2=W z6prD@pe)z%OgzLT!4cP7np_P<2cr-v3jC@1%33FcUom0OY`+vDmS4P&Gu{=pWuHR! z@0GDsz!vML30h3gh31Zh0Ukj0Oe^*5;)AajOJ(DD^p7c574Yc4u{`maH45!R?IZS>+{f_>{{yt8;V z`y=er-#U+=B>g&UO10SkNLK$j-Y~zE)@sU9hUOw<4OYd{5`yK*U*3~g@@#RC&pbsL zul8>7HIc7b%hzh^2V~C@KAokQYGRkFNMNR=yCdK@2an@3*~gF}%^M`XlOS@E_{1|$ zNv$|l+iAwRP=4?V`>R*zuk97-dw4^I;aVaeE_6UYWYV}sKo8mHz#I+=rg#gGvR%kN zSS7O)>2RcQ{nUe*l(w_4Z>N^ZJUDfIArgLSWcJz}xl<3^Hr}(o8Gq}0CiXpWDtGOU zS$-eDV*CskI0aHhGiJPjB12%wBt>>xi^Qj670NwLbTDPLEP17&K?oTP-W=|V<_-w} zx8jI^f~N-mNZ2bNau~LfyXZKzI83t51v2_){eD|5Azo{rO~t}))nYbE?7dRzx_>fR zJfWefu*(Q|f~0weB7Uc}a`9S0PRkC#y$UDmg4I!9Bg1cPbDd0lF)kClz-Dzh+(4yf zvo?p_?QmIb3zl`N#qP7av)Ra)M{aPms*OmS3osZ0tj z08JRAFjxg3{ZRT!{G$rEe+Cp-#6^csXcTD}`38^~bI6Yf$XHCD;1^ z$3AmevNxH?=*CPUDLqEXH}Bp$8XJz`5f-;su%p++^Z7W874}i9wapR^TSC=VKJWes z?8rVyXEw}2Fc{QgnS^Z#MpMf8$TyG%Y6S$d3Ng=GFA}>C^p5`R-)cOqXXL;Ews$ES z4gv{qZPM{x$`Ri?+THz^lrj`a;-6fOaVt=Tk*piHF(ax9D#j(Er(NsWBRA6j>o%wxS;T zPt9FgxJjWzGbY7;sisIjaH)cb6$50-im1Hem>a(>oEsz@~sSuzNczSr?F( z2o>-LbIF5)(%QZENxdQc-=7)`OkTpQtm^PLExx*7_wf{VGsmCj!og|pUVm_?|3E^& zPyg@uI@I{D7S?$%&4QB=n>+bm+F8|~Pw#RiShfD|duoGG?V6Siv8FoymHywK+IF*P zQ^SiE7Tka7Bg}yVrf$H*O|sjw2Bh3VOA|M41xWKSs8@C`VhiJBbb)H5KqOYW0DB35 z7`}X-0AheSR&^_%kB9+)OPr-+q~kW%M|4j#1MlzR`qbYEFALAfhpq<9#D@w+6cWgQ zyRtj`d~Yl-S13^&&@!whB)xY<%|Ij$1wc~d+jtV5!{|Cm=@3JiC`P%=#KBj+{W%+VH)r-*g z#av4=rJt=rxMo7@=g?;TAfUh0j-dJ(2W zldo!DoTUS$<8~GKiL!+Q-4GCxy_wg36zq-Nh2swH|BtlQ?{xm1k%m#05B~Lo#|^({ zuz(4}4$C&h(#Xh#;e(2;!s^QvZHT0m5L+cgZ%CAZid($_@r{yMSZgQVHuA%%39{wF z>WgQ9eV~NYpi#AGH7!T#lt@F=7F46`PaBTE_WC3J33^THe_9)<@#8sZu~}6qCRcl% zllHLPkLQ3dY;~t%irna6U-dBaBWFDrNv|ELiyDox z<7JCvimRVmJ7P+kM=WMbbi`*#_#0I81zLB7Jwou4kpFPG>x3r&1I!hA4k0}>tbc%W zL?XV$8G2p7!xup+r-us*(oko!-qqaM*$k{|XRf8a9R^pui~SY)1|N%GHav)2eWYVI zk#z?4A&4o0ycHdcwjuwQ#b7`)-RP89U7^!0aUjGD4ZQ;cy*%T54>HaBAU^JaK>|K# zcPN=7ds42yP5%ZYyEd%20GQ!e$~3>3^2>WkB=rj4F5A=J_RIp@zt8YvzZW9#ix{WG zt!0P*a)2=1tTTqzBfl6(Xh|X=1*xhf4rNJv;usG|iT$jd!v1;pAl5DM69CQZu=p1b zBJ&KF<=F{o5AY$a36=*%v)-R&5AkVL%%k-59pj zIDJS6?(x_hCd-D#P^bQ{l&_51LSRAGK_(;Ybp>0YaL~|K%eY$7fTdxfX%OT+xA+u0 zznhb;Tsu6hpC{#b$qYoXHBxH#<1mnrjf55q!WM}*FBw_@!m3$}XUhaAuGs$=6fuHy zv%3Lb$|4;zdrzRNB=_P|N84U$W2S`#q$(*EVi$av2vsw{-|&y{H@pU2iZYxF-yo>Z zD1!=eXQ2M>M?@n(6(uY=m*d5prQ{rR6TqkOaVl)a2Al!B?c@^>K0kO?F-inGh?D|M zhgc4RV5S;D1^d_`WHTU6Jb-RQrAVn_yNmN#P`3b)LJtMV1_5;N{T2&Gmms^b{(8_b z5X6nXPDo7sb%M*SI3r4kQwral0gwUs1A&r2Xe0$fKw}ldhd3Ci%V6A8Rv~DTMg%$f zsW)NJU|fK=@SEd4U){T@dfVWTQ=NKn#O|?n`daM1Ha!`i4K;eE9-v(ve(VY!PCo)r z%Fw{)-nF*#9b1Oea?oYYh+k*p*Z4!9;=3#(V%K=;k$7?a<32=c4bq`V-%v}9jH*O_ z2WU<)%}{~>m4QR-WGQQ}ubU;i_3tv@+i$-mT*+^UH;@W0&)&-h5;*GETlxzis)1d( zAl^`4)W3fS?)-Pqx|AIX^KqgI@p%A;fkYHZCNz*gf$Gf1RQUVP5B4I`DZe{?F0H?M z^x+$r<=B(^*z`l2x)3IQ8z||vrC&+we{Ui}1_w~o#f8WX;WU_uO`x*bla_^&TunQH(o);g;x*`w(nEz=$hIInH1^tEe zp*U!45h+HDxOgw*D7{Or5JX_jfph2dGr{xubFj9}BM#FHH19m`%VN$kqVLhDMvz<$ z5)r_bkRYraI-m+LH-`!kizOHfXE8n&-?XWK3_{QQPHyo{SWM5(BWV!AIM`TLwJkom zfL(iV2vUXNRoaDc-lD(wFF9TiBN~8cVH-76)zFfIsSVSZBUU5bDPRGa!o+Sk;fK0& zGXnm}esw@UWQ+_Du4(<6VM<(sDBBNCNuM+{pv~&ZgIL=_Jn3Bt1KDac*-748iIxl5 z?{w7itJH$D3rE0$a?B^&JUd?4(b7FPJ>&^lx`wXk`%JUqOIs(m}x$(7zdBzKfB>lBs046!a6sFqO2kN{xpApvR$ zsIDcD$2Fn(f)RJCepjnIQU<5r*_GL}DbuB2G?{I6P57&`n~2K{c9!zBVCAeqigR?` z%0zitm#cVS1Yg*ZwCY42ldjJ#ZS_P4qma>T?Ty&*fSr)tBw+A``ia2iuJ*w?yS;9( zy=!xTU?AK!Q}XQy7HDG89RM@K5=N!Ayp~`*VWNq45V@}b!w8ag`B~cpsG~2zxjy*3xaCy*N`pw;zKZfA}|Jfl=lWfcwO@3o(@^$k?Mv-bPs( z#aGgE?WvBAR6DH1r<*%Enpvhfu*qf_uGLmm9qd*|3;W&+F3StCu@2U!A7GH z0fNN$mG~8+trlQ+v}0y);cSQ@;L-*>T@8#xrvNh~C`ed}DF@FSRKlCnvGbq|-mJfS zKuLTlp-2Pc`}U11LmRt>$=5mDwQ)#qV@A2PRi-u)b|x_|QdYAHSll4-8Z<9SIl$sZ zSZ9@1Wl$HNU>AK+b7=8vSWM%FwLdzUnLB!iG>V0<4{M=xRVaS(f9yKRX7)Wz=cPWj zfLKb(Nm$QqdC&=fOd)))T8s6hJo6xd&7 zfqj;fqSttxm7NJd`Xz>7ogu~RQP%Wl!i&#_GySGD99CToS8a3Gt z>@lqysvj=tDhIwJ^#^uMLW&z6-1}hpBlUgNyd*)=ywbUZyKC9J~iCXFzjc0 zio4m~;%>hmUwjL)0-FLgbMXW(D}#y9@TBrsC^4vvDU*7AFnLFRaP-VCmVc2mjUO95 zGfH0_0I@)EoTwPnM);!OUB?=2uVKi}Ra!yGx5W0mMG9VK=gzO~ypDPFZ!nf&KSr`j ze8vNHgh2Nnh!{#OM)c@_ld2zWMzJte}`_5j35A{7nzYhX?ng#N7YsDO9VQPTV2q}*nY8|?~ zkD5Vs0?`#gB%}tZbR+1JsEx?iP|3NAsuK7aVyM(E-lA0`z0yfx9jL;rq{+NN6M;}p zNp(j|CXdIY4II8iqYYD}JEi0(uI<--$r2{_kQP;bWv}UtY>o8R+?Q9P+7O^!AGwD~rEz&OH{Ll&`njua~#V(J}X2(e?A-vNxMR!0<28-EM8Xe^Nm}t{KA#i@f;h0t>H{ge9Qp8^RQWK zTfg@H`|(Ed#&QlI!30~@bW7}twJ0`E$$+ezA9dYcWHR>$@23!&3>?-UBIdhWD7t9fVV(sfPPT%B>Y3hvWFY< z3MYdkk{>vxoDMoC0*v|7Fdzg00V`d!@xoF0OoSC8ot$7z_`_-W+*QgOK|XZSt_6!l zg#Z)?U;$qomnlXRM@G^=#W>SDqCyrpRf;~njGi5Eu)^X~c&XtxW*8)=AAv>)p$(ea zV&*+62hHU|$LCUDE#1_z>#^DnAI27-d2~UQtFWYc;$-Zf@@yN@2I&7=KAWCeQtYW5 zi*K@#r=QM3e4%TQz4P0s#}6?7lo1s?<11hENiru>9V{ETH0Y_3>i{Ykyy_+GuN<)( zM;6%J;`hAKpy$aGCpZer^q0DxbMCl-y#vsA(xw7`Rc8}#(tn9BHYF(fxVp$)w!&?~r)18j8i|-ESBk1*VqrxYEPH^Tt@h-3_+lB%>IV{wBwp7-cy z0K~Q%HZEQOr@t@ismm;GVL#LBq`&UG_z#`?ayiI$?=?FY{|1@h+go*W-3Al5_fR*~ z#{}1}h^Zq>FcgE@l6SrwIRgC{d=Dr?@ip!R1u5uaYNX*ej*M*+s;}OIsJbrLeXGyU zU3PW)t@La<$Hq`WA@&kGJ-_%r{Ydrz4qyH%eYT)qD97KQy`^xGX}JGd$Wd29j*?-0 zh31OLdC2PyfP0_|IJ|!j6_fdpvr$SdJ|(5zE3kn6-wNo4h|we2uGE*@#6M3hh$eON z04zwQ9OI5ci_WY1h!-C8@UbeycvF|+ObJo_sbGJ;KiMBFq(^!|R5rP?Z|Uh|@)-i) zPfivlCyRb+5@3VLE}VdAVbwA0EaK4+SB3;n z*~}f9yQOceuf=^I(qi}C7sPUogbUEgkexxgG4rL-P1Bq382wU4zs=IoOo-R!PV-&& z_w3u(bH8-@*1z62`{*nl`~Lb?u?ClHuPRCy!MgYf%-#ZI%e9VLDi~!8fP6+-m`dAZ z-y`HF9mKJHV$-+$_yvFoF<;F`{8@hl961qx&L1uq1_}36(5J8tK_6KNV{fD&>9qdM z7Yh0`sPCS50(5vt_fXmbSiAUj>3!K@G*^^j{|G$+tPk`Iv@jKkVCIQ9tvK8u0i%S} zE-Z7wJU};k0wyY`t-xUk-W;F@L7#VV#hMm&8P5@1P#SU)Wi3x%1*MJ_i;#QI^&xE7#$?*U?3V+;-wc#vQ zlb{~Y0XK|lFR&5J=ZxO1vL<_f}=!D;3IzEw6j6L-Hu#gG3At+Z9#Xn(YjzYR{MP0Y*jgv{U# z6x*{R0_@qnkaj5Rq0r9A!zG#wXeuClI2;(PSX>1_cT9pqvpABm;!qPO2!MqRh^`Ly zUf<=H-+KAwZ+qRwdY84w2V9x7m%wGd-fEZ2;9mTf^xg;drWb$m*4*!D%rJIr{V4LR z=WZnyk8QRMxz^@ZfhcQjZW-HP)5q4Q+uG9W)5#4(ri}yX^uR__3g8pImho{`3)#$% zxrnp0tz6H%2v~q63!H68Z$c{>)Z0VpLi!MOK8Z-g^zJ9pk1ftT#yo{%$MBF2Qt;N2 zFvhvb&(9q@HiswG*^+(40uM+tuDcP#n!K5K`jeDu6CpR$TqG{z+BH&x(QUowsn~UQ z#IzyyjJ5h#!Sf&h4Cb;Ip99=dnzU9M{f}9`;|rSi?3UdScF~wRpq2!DEy^F;!M8~B zl7(Aja8j}x;ab!+kV3_QQN>;wdv#2|06N^fw2NM?6g0&Hr{05_m_0`?!lo|lN9FTj z%yJ1F_)jW0;Gop$KH}GGIQK(Dh%7810nPpM^S9k5>I3o-@thZZH-JP^xj-nwP)4c% zpe?yT3&)7`aF!j)bExM$IYmVQ%k|2A4yE%rVpJaZlu4|iGO|4%`X##{PR)Fj%ahJS zvh0$Kvr(`SeMk?3D2r8*FNM^zfs4auxa}bF;NCUJCe(s)9xWo|cHNw}tNpp8%FOIo zgRRD4^(R}~``^mFBAiiW@u=Xko=+yvTV0@#YO^;fdIl z7^4*v=s)PPWa6~IvIdhlu@F0HnxY^rY}#e5Lknm^G^$J(HWD|9TC3T?$x#JzB|xxf zYU`vAk{`*V;W|RNwiM9VW9~Kynb;6fRO4v%guoRcTV&PI9dy@WAFH=o++o$uE_~-z zMKfC*^8R_hsqRMG+P^Y0m(To?S^ZpZYKbw`Za zsr@F+dlDzL*`fmja6BxHs|~P8zEqqW0EhyZp7$ z*onl!dk!WnF3WIDY*V(oqh=V}t3J{p)R#$?5PBK0o1;dmXsRKR3mpRjRs`l3MsI<# zA5MDLx=z1g`ysQ%tD1ADaPzu5zryY@n}h2<4KF^zHKY&B`i)<{Yn@qbU7NG0t?SH( zwzGT9zO_NKo}dFRhv5PjtN3&9=YB)jtg-S?dId`CET9gU=t&9viA{}xMX*gVW2UtY z!o75&?<$28!9A^9)u&IBhe_PWcd^bCgiOScD=2{{CQN47^u*%L`iUo=V1K8tf1>y2 zQms_L9ya}Ff5xuTwZ}JMkC^LW&wQ<@=T|WA%6Xpr+#KezTup%%ETuS==}P@%aTX!9 zW~8SAruE+tkNpeWqX8(Eib~9asK_c>Zu#6m(<;#)U_g%^8;Dp{Z_Wyq*#o$VD$?&G8hbPML((i;M>p% zO}Gzus_8y7F9ln{s7j`93GcmDC3Tyu9Y0!~LyC$|!R7Tcp|NZHZHZ|=q z3;VI)&K69v(55jr8n8-W`avInBmf#O_KCd#IcnS4o?F>t>x&Hq@H zxH!b$`Pve%rL#h3=g}po|Ex7jgnIM`6^fnU_KoG|g2jNhGctnvmdn=cuNQ6UBRRcx>+J=NZpLG0jPOty?GEG~Ea{9kau)DQucFrCcIo_N+Abp*3 zq!i6OTqhT15`Bc3^w;m$F_3=#7kkj}$bY_69u2Vtzqv$Ey-^^qA4Td|OF2@}>akx} zvIEKH<0D)Xn%#K~TYqGNTH#|$Xx{US=hO3V@3;dg?j$$H@80GH>w9TzvLJ1(1dTIsssZ*8kFd zdSHJc9_o+3+XM_Rke{?t35gh){y*a8?FU|7d~&{6z=9}^e)_{TQP{tqxEpf3prmw( zJ|g6$Es#hqtN1kf2)7&1P=nvUG!b%M&OoN^>N4KWcG!Y2vI3<_0`L z2mm~s%LW#;APK#}+&Ov)vW&IX)o7}=x-7Le*=Y7TJ>e#Yt3jV8PdH54<3XDX2Lh@f z7?AMB_WXshvD$5kSsYfUY;vx#*~85)O)*+}tk3J;4Q&oy66y)n^@O1R@wHRnUWHrgl!n&PK+xs0ycfNcsbh&+Xmd@AT!KNlj0u*n9LUy_2Ju zn9khhp}=~ZO_uc2)2Z9&8@y0IW)<28Z-dYJHSTqbd%0~07vL31Se`EAphI9KNqL0b z0RO3j+$o6~X-I#B;>hav?b~)N7Lzutw=`Ov0cU$_pxz=4PNgLFwd6D0hL}(4diq)^ z)_Ga<%4YLAH2`K7uiG2BRJt_EBtCBnjFy4y4@B3De`w@2K0a4samf~tZZ`;JT7r>? z`s7Q73hCdt=ZUhTZ^4bAMI{0zks+=t08(_!R%q%<9u`XE0kLR+Zb1e30EAKee&8mG z!J zJzdsu){Y(Phuf95Hm7w{%f^uneBOK3umkIQC2XV`p?BB7GuJ^>X#UD7EFYNi(Musi zVrE8qTf~JpDT1piinP|~wK4WBJ&i1uNEWA09b`F{JNRRNxKT4J>r9TO0cj{QSZ`s2 z-j>_9j2=-WUH|T)E=l?*yZ=|e`oH55E$oYi%qHe>gp;5oY>A}(4RKacp8y?~3H=0Y zA<|*=kxj_T@p~1Yt+=*gPsPEC`zpSQns1L2E(RSGPEMd@R6NOs$DtS0V`#MkuM0<0 zR>nHeak0Fh8$&KDZzE+u2ZrH?ztG_B#Zj<^;1|WC#0T+nv5m8r4^rt&#Y-4AxkA=j zW20rAxyoiV*JBu(7B8R+HgqR%jm1*Qm=^OZy*}$2Y0;dP<+QwmzwTti3S-JAmFtET zWmtY8EgA9Ms=YG*Zu@02tHg6&vKjqui=vp-`dCmg7_Fv}fpn{8GW$H??$7xw&NV*e z5->krqI~4rl+ie#C@UY+GJTexE&c%Qu;lYnpv%*WAlQ(puh%Yfvd|(_CNDzbU@yB{ z7^;vusYD$I6yS@3T>7VE3VZ`=1DFoj!r}}qMBLW!h#=N|P!~KM9UuHxsmHJuQUmD6;|M^&jE8eGT@S5HanNfPwMY zK{8B2rhG0%ySlv!SX7m?qq30|xv3%3Vk(Dx%g!DzBoc+=ZmZGMP{&0YSk{ff@JPRH zE%w7?1LWsl@|Zd4wa1Sfd0cYT`h1{$!(lkwR%>nZHXV8V837P|E1%o9FPC3dKC)vG z|6I9zym(|kf&vSz?zbr!EGN5Ph{axb=Y?2x$oH}3TCYm`=H~Y8n{%7$KB7!yw|oJ0 z_CJbtE{a|vKTgRAy}~q28bA{>CNPa*X2aZ_C_dR)Q6=$GUE%$qLN@?L#=X<`YuyF? zk4nxyX_KfF{dCXN7swIug{dCN^w>SOoeZ=G?w`KrvBmXR&j`ZHZK_LUBYB(h5G>i? z;CY7y&WKe56=%R4>l7tJtS8LqXwF3OSuP$glYUW@>2IUo+_7^eIqfdKzlPNmR20Cv z7K`}IvQp_U&fHp6)!sCnoVi(%+Z(s)t)*g$IkkuhwF=2)g;fR09OY?(IslLWCRM?S zOn4-kVmrHtf`^+^NcJd%-hLZteypaAiX~ZNcG;D+7(4yL&SY}QgUsG5B;U#**$p^i`9EX+J_o6S+9?3# z4Y!87rY1^Y$xK2kC*2Fn3Yx15oe0u>OI0V2cSvaLG;C|;-T4~%+M(c}J!$Imsx4AY z{tlBom(nh+O)47O-Mf1?+kErQeY>$G?KXyedvdQ1O~}TeH|h15<@NPvbNh>*RgeBB zJ-c`Ju$yn9x0}$Xu%=h|p)dat`nwrEH#=dq{e%7$!;OXy5Sowu)ja6O+j6-d{tz9fz zqGe#!zFsyRvxRFtjr9W_N2Bqmb)76b%xqp9w3@Vs$l1~dBEe8Dav+UuA|Rl%@YlUk zpG7g52l^WrT)dkxLWWGD&%Op&S8a$WE*@ z;i%x9K%Ec+2=6X1sW0QdUQKI6<^BJ5>w4yQeCMm%y_@5Pe!F%j8zn~#5sNTq5?+R8 zD)ojXo%q+c`{QPZ+^u>|=Ei{}!~;vOVnNh7CEY;l-6!7k&x>C1o7#QUvhF^k+wM)) zH#9p!wqsTg7?(s-7r9@G?JiZ!z)l1?4=WmGno2a57C^&M-aK;0K}I84*og+MMt632 zAzFf20bvj?`czHvdec+PX{~n@9Q9VmRNCuR{Ay59*oa9sE{1Lo`Hhmh4hH*OY5z!k zsJnY8KH^W`V9n=|EKZiznQc`@i9+N_R)1FdCCZ_|6VMM9noptkX$B5#T#GD59V&oU z0cc%C+;*HmL=XZJ8aLGdmBkgdDhKbQfMlt5*+4I_#MNTCiznDEwx3yz><32c&;ISS zy~}?34R_FZ#-0SFm8&)A_Bx-GKzA)Y>1c5Wef5s!VA6iZ7#w|Cs;`w;`lpiJB}u!C z`sXdR_I2!jeZ#eO`?YTd-OlY~K@C*CX4JZa4RbcioMoG92zG16*W}iESXH+>-9hQ4 z9cvt|$^~{*zy5;abFRTWMmCI+J)itMsDDQC@Cwud>8hB?V)0(7L^wg*{VP!mM`68B z=K8ZDO-nzPKpvz~GPY1!qr$drd?`rYM)Q1;_rc74=}>XXu58v`upKy*dMbBW79c6q+fG&_>Ue~7u308@3JGAZ(W37? zI(PK5$;<2x@D~CrpEuY$S{9#bZMWMutbbNh|9ANZI4ktqQzVPYXa7=>8Ebiw99528v4qm@z7LQpI-VL3r~e6R;`PIa7XI(qr9r5jd~ z>lTO@<1QGdmyfSTj$MS!K*&%8J|MGyEoCf4A~d+h0CK?-UR4OA&=CWi=4?6W?9pVf ze<~Q9>SqR|p-XBuhu;NJV)anF@4f;(wgb&Ku6SzO8hlCk$EZ( z4Vsmf&k!p$3c?Ff9_j#cOu%r)&Mw2VU~QieT$xeTzTk4&+zWQq5L|{@`N!h-Ak<{l z_GbBju0%Rb2Xq;xQc-9B7v#}*xui#O*b=mwD9SM4508!>K7}ECMDIO%RC+gi_et7w z^6u=#e=s!DId~s{f95q_eO5=v(g zKj25>1?A-HAMTZ8Pm*byIfiYy^kr~>T@yAF(t#5-Re?&ahLWDHmZ>)r`SB{Xyi*K8|PMu1uW$EnE&zkfXe>^eqW46ik*`rzFWTZM1?N97V z0kY&m;^XTQY$-fM%K+=S5Vo;CE!i32vxIOMM?)d44c9{WO926wBzv0?_9?lsE4nc1 ze|QR&XMn=8_$FVcuz&GM95{{eF-prwl!5uIHa6Ek`}O5z5{xt}$^>jJ!IR3ab4iVNrZ=f zo4_5=tt_*N2kq)P&>^odi!1U++QsFbO`CeMZTJJ0qRr;qupx^S?^&e4JN1zH6hcJU zP0z_l4QB1I+AU_2Y_^+h&W$b3HgJ*lSiYw}x4x%spslB^zGpr6S0TUL0P@QTu3*Bu zL2-p=9qJ+SLZAXjz`;LfaU+8%;jatei#rW-d?u?;o7cFk4hB<~6V$1Dz*G!R96bpR zZdvPTY_0c2+gn}!hGsryt_Jsh6>!EB1H>~|`HS9tx#-VF*2ogFmW&(lyO1Q}E$?KX z^Ef?TN0V>3-s^ERXOX6qU`=lVF*AiCog}hTe15{@npaI0d&9iT^f)rtbL~!gI8-Qv zKq6ce>-l;k><1e0*>Dges2lm<6fnE+*i{VMq}6 z14x&!D45UpfSQqj%``|UjaAu*EYXiTc{ylHK z{x2cB%ku49WNTAQ2Txe(w^@XI@kjDcBRMp|xVPjC9wr`Rv^|#$27qf+JEXWii zzR0^np-o7+65JFDxrb498q)%=CL*IDF4(Iu&w6RrC08nf61{Zma_&%O(Uv)slabis z;&bR~2cllkT3 zA5KumC7iL2qy#s^YxSLy<5OX8pX$0S7|nK6OFq>(kyO{3FTXBZ9drg$cC#z~`*A6D zr8JBzIN?TzM~h@5YSd`=wYDWEjnU1U=w7{2d~)YhCyFB42C-_y#bC#JSiz8Y4oYlN z>SIfaD(qaO2Wq%!()ncypGPKa7t6yno z_{yuh3dO`!=I)%sk?Zz)yr5&>)C%{sxc;+-C7k7Njj$}DDnAJ(*bk#Bi&#o6^wC(# z;&n^9Rx@P5C8@qRCMtjUa7&4!u@-+mHqRkNm9g7Xh=SCBVG^ zTPzk4Fi>DkN0K3;$>la$w&xt%*7NeqJ=YL6)u&jiNAx3X_lUJxA$N*G6RN@v&Go+g za_<}vk}?5GigIu`qn;I^YRM{;K2FwYA-w43j`D4N3I3FCJQYc_?=of){26j>P-~a3nb-W zxY+%rvoE{OVe+{fvM4_-7Nz?*52gq>f{1Hd|9z5ztKAw4~-7w`jYWXpHVScSAE`z$({JN6W*H!caNo`!8&V|)SHp5&B}-NAZ;Jd z>w)^k+Ek2rvEYtL*Ivo8sFjxJN> z&0-EZw76H@Vh7_O(JSV1M6YPe2?EBv!jRTasf<8LC^FR~0H)%(YYddjJ4$RckTg+yB+9To754e16u^5bGddTrvN)7MNMIyAZMzdkgfe=DX%c3iDRw#Q=I zBihwFBAWh0wW1hnT-6STwa%fKD&fytwnhpz5{HuuQV?iRS}c=sB=4ZSQ~H^CV5YKJZ{6Y-=_~0r72}And(Rp^ zbPYn*ee5+5&+;*sK$N2I*Ik2fU34Fi6+Y_h;{ITQ`q26R7`KLCsa5CJFNiz)`1|-@ zt*b0NBp<3Pl3D!lDgF_~U}5AF!h%!e6Nv9!Vv|8yuiRDuJN};Cw0Qr%ee9;xR?#nt zHV(pHS2*C5VR+&vfF-){1`(FehMLt7Br5vqt7QNk*{ffvLLppvmc(tehLF8SYY zRW7=IZLthg4%7{7MPeVBB`7A7_R%r)P7po{QsaNvz+-W?xC^Dil6U~LDLnoY9BBn4 zpwA&d^j#cfqZ`31>I+fW%j$MH?{O*rxXAcTuEXMW4R|M;DwacD4k{~c)A#hg{7J{r zJ(S9e;!$$EQmI9WOP?rD3*4-zW?pb!*ZqGX)fp4yu9r*9i- zpi9;xO9k2AXch!HQ;8Fme7#W9Nk*)NJkmvpi0zdL6gUI3VRb4grk$k$wahz#3nw4~pT{V2gqp1C)gT zPJX;2oWwCCcCCs53>9HCZAiOH+U#n#I9GNT7WN!An-8-PVoW|*rPr4A-T8(2!+?_? zDR3E;uoqtjUr7)xR)y%5QVcckA*hh0<|1nYM|xr}zSZJ9T?Doe;(7ZeE=!s3fTxd9yIof`o_BAyDsa$`mW-wwijS7$j?J@M1tGlII}#R%(wM(AoI3zu5IWa#kMZ$ zM>V)7^t{zlzgMFm5y1W&7!($$(U8%~4u)l<0+i2M!d~JfEsg9dG# z;29yr{K41>=xF~s#D-@lElJ=r|u@q1Z!GJ(C2&hchBeU~i4RePUhWeMI zBiDn_hL08GGZ;WV1LBAVHUg{zH65^yMmgNsTT|8~gGl)qB&Ff$V(>(yU;i2@*P#$P zS&>eI&jqIpKZ9-2RWSgsEHJc{aT&5FnL6>Pk~IfNr-i{2kt?<2$paS)jv)9*fP`kk zLlH$5J)LSl^9K<5l+a4ClZFSP{;)4`PXZ5L*dLwi>%OZSkG@k6{MlE#5_fbtQa4>= zR2sV1bX)dpb7*6kaL_X~<)LRVd`n2*8qB$e`-4Kpzal3oCYOdkmr0RwMxO_NzW4ha zY_c}ryEk#XKMqcAPt)VF&ttOsRLcg%OD&Fj?sMBAsE zsoD82#GF^krRE|{5bE|45~H>VT9q+6M6fa2n)=dJ@%U8-?>)%hxd0z>~O>+ueUt~K($TKEa`2Cj693Q(~!a%UD zp&JKz7Oue?-zi1Fg40KY!j?BkZ6~FU5}xa4_)mt|2;Q-v;}5}u<=1RkrQ_}NL&)~; zU`3}=)A|5c8Gr&9m4Xcklf_0U9uscvcmgI*tf?FY$i@f0Fq|F!!hi_B2YMTt#XG}Y z1Im-qz^%`Q` zS6dnkBj*sNVqd49bu>!ydC=3^fcNq=E}kL^3ss$s`udKx)v=r3YaaMR_RG3P`F7L# zI;#~764FI&s1Eo{B~h?nJ!<4`1}zEwB3! zFz<1oX=n|@aMhsg)}mG^he&A~i$7H}!~LOGy@I%NAV z@Dtn)Uw2BJ0S&+}!*p7f1W;HA!*RqmU?LJcsz4zmv;^Wq@h*TEKFS(N(<)|M5D_fe z*n7v0^^TA0XYta@Gc8gmG}eAd!^A}kelhma(PO<=j1BgVUD10CLmG7|Y{tY!N7gGY zZ)jCeLx&E*}S&(*H)1mwR`QEVBUr74H{c}k= z0OR%p$ZQ)p&Z!0r!|=Ca<`7F^S&T8joQMUqN(KZg0OJnqj&Q>v(iQ=<_$VS39V$9Z zDaNh^H%>fo6lseU7x9Y**krI0gFO&E%flcC)0*2wT@GhuUn%Af5fknn#Y`*!N;MWt zNxp(f>j=A>$6o6lEmRu+E4_cvHaVplbfyIkYVSI5%Uq%|G8T70}JHe!{G0+CUi zvURgb*=a$dds)6;vB*Qg;E-%l?w0`pZLsWAOuznH>D`^y-cZ*i>GYP)P_K0-ed@eq zBz;L2eIh?Pn6?J;`Js{oQ9?LHNTr&%;`Y=LM)sI~RW< zHN8Ss8CH#?oM-hoClP`^R6eK3ImFM1_^Rb6JGS~n{mV{4>&1$5R4gxwL0$G+gzOiu z4E>_~o6@~NqATAG+2og>M%>Z)&qzO7cDki|f|Snwp?q?jo67Wt^gVU~)+*wKp%I34 zllujsSruhkObD@$+s~&COc*Fg8)aO)=IFe5%dPm-)}QU~&$0_HYuf5+PJZMY@M)M3 z_?Q#%nO?}QDh4?Q2RSSWWZ+0>&}PUe%R^R?t9GH3C#DnKwEh!aBYpy zrS&tSD5zVSKZFbit4wVR%(;Z56#rP3x!s#cS6A=ioM{v)1L?X7LN-KcEpV>4BOH%; z%xe{!$L{sT-6{~4M%mOR-c)zo=e2umig~Rk77xdIB3`5=GCN{UGx8L9CEf46@%BIV zntYDLY;ef!YIpaFfE1%3}S+`zYsiABF}Y;%&mm+ZTIYg&IMy_MZ{ zPB#n5t-mkV?|>zsk9~92?{@oV`Pl6>dJa4N}Dy=F%5%@HtHdWbS^GRO925CL~|~`qR#|y7U}>_70Q-@It#>E3VB8} z7xfq{4VqJx&^Oo#WnH8t5g!SS{RpY4QVRSaamhHCP0yxm1O2J+;bbr&>2}|)R6_Ik zPwTh#dVLmmgK^+;c{=H`TYTQ$1Js6} z!|X(|_dtIBY>sIo()q$IsiEfc^NY_V*&QP&KJPE0&yyeH6ZmymZ-G}+q$Y3SaXe_u zL?BjWcL=wuaC;_T$z94`EcnJS+*g2{Tw6><*w}>Mf9WSK%+D!AFqeu-*Cyxl`s*c4 z1DT$XAZt1HDLZ`W7Qep)OEX;xM(O07MBUM6R_5k|MFnMuuZ;rxC~#1fu!O6ez2-99 z5zI=k;FKIiRizETHvl7L=@V9U!pg(rg*OV*fPcNbRrD6BUDBaF%?}30_U?V`mRoGd zt(@@r^jVf2FZ6@!DdB5n|GxLpqjQkV5i+Wuap6r3J$lMjKQ29XIu)BZuOGhUG5T>q za6J`rd-X(-9qQdj_wGDtJrLK@)&~3#Cup#y5xsh1W=Pu4+ez3siaD2RiQB&DVl1H} zA>e?Lp$dyaSSC}h`bbnxSHHZ8zyWQmv!L|iX zqoFA8TcztlU-+o2k`$*^c~@PDJ)9fxUws(q!&Y77sa<0YhrdOAkJjlK!-LW|Y;ojC zSdSG1?tB%BP!%99n4^SOU90Q>`bP63Q6X$eLiXzCe-f#LkOy;lT?6{-{UF{d4>xPoWQ^#`Hj{vK8=f5N7aYn ztVJ=ptGQwp!*Hfa9-cn7Cz6dxAxEPt*qYh7ebnx%*Zi_lWA_&NY81(@x$5ns+jnMK zgRTZ=NQzNbh0*X()MW)Z$?Wm1lBAexEOyo73x+boe!Fe0B1v11&w?$*>H-8|lmdIo zTxyU2))=HKiP#@OGE>AVz)tY{_y^dK{vJIZ5dnPppFK zsJ^*mVk>0rj;`cfA3Xi>JDU@?B*q3uMv~X|MKn#V>znHz85tZ)+)}Qmhfz9bBI)ri?@gX)B(XU-5|x#PW%bdZ$kCBtUsojR+1=7beWn&R+$*^ax5y3ZC%@Gy z`;J=FkfbW8GUfPtBsea>g4@gKAKoQJqcp!mlquzH*bXcOm<(xOJz3IGW@ zVYCL+2Hrk0RqGe%RWiN8QM$+SfqO~yl7@u|3F}D87X{+?HkUsSJg>`7?N-FRk?&Ch zj)lt*!hNmUt1y2j)C5pz;9VQ&-81m`%=l+ATY3{;9L^n$-#o9sm@LdMM9n$Nu%vCi zGd=3{^z}yL!~N{8Kha;nci+Bz+kKzMHPCB{a!nn#J1?K(ebAAL^Sd9BK+sT#!=;MB zZMR|)N8k@YznF?ygLzGCE{5<`)Ajnx+gRs{3A;2`2bI`0QIm?W*Kz#^+gJ>G)FLqY zSHLc*@OT}po#1K{f`NaD9gR=Dv{DLPimTk9M=L5)Ku@5ZG5CrEX)4gI;uMMEDG;%M zxf{fEMS8V9bV48(JW$3u@nerv`lST*qj#*QhZ&P5Ws_nab~Ku+e9Z~Sn7?fr=Q{czubh~1jH5r?1<`G%3jF@drlF>M8Qres9I~4O)*(f#H zm5f<2W=yswqj{@Y>8NMv)=h!Hrq+#3GNOl#R%@rCbXoxr7?9;Ao4pAew6_ClIp3=o zo9tpu6u3gNGn72G6(kiB-)+q*xo3HhDU@)|*+tY?yk`?h+2V8Mz|t!~NCpHUMCjrI z0zj~hTMEj3ZZqZ#ibEi~w$~z|qxro_3G)%>r=%&~u-SCOlRtd&21Cci?};sahp=U{ z_}rs2Gmk#aUq2Z_y5>HZHAP>h^AZOwtPC|?nb4uIG2p*=0Sr;>!M}6ab&O{H`}y29 z$6Wbha~Mzk17>};bioja&~ia>&G0BT50x%k!9KY7!Pljy3^fcIE31O8#phX=RpGRu zsTKdRM5mY=orx}ARRFsXF6*F~5{sG-ctP~sD1<{;kD%cPRJBK?82{{DpV6V6xFT>Ua&C9PEbst zboKxp0dg4+7A=UN?JW*Odr*P`%?=1i7xvM%Oq&T{94$ zbWj1RWR##Q&@XjKb88f%6x1UA*#6xoG1I7uMw#H#`t#e2gZ?)9yL52;>I!SUG%~A-o>H=1$z0M+=>cMYTZt*BM2H9e%GXW=Ux5{#TE1leIYN&0;my$tEkRxX$hb0?THrSM1Gpvl$N@tF7;nyaM1LO_NzKAMm0jh|cZ=^tzrkQ}8L}6)&I3DEDY3@W;s&m^U zts~Iqu-P1a@|Alhq{+c(43WT44CJ(=U;o@L{aG!+BiJ4rPB<*JhWd48cayJf&ewWX zZ+7y)#3!VUpNvNQOtwY_N^=g63zvYu0DKkf$bRqgTtNVjfl!aE@8qMTN#iAcV%2mSBLbV@1cfQV347>r z8*>S>gP9Y7*LYU`hIbx_eS%(zSqRp)-+CL|E`*z)7eeBTZOq{x{7>K|#!($>fw}^3 zL~R%58cI2ZsizX#m^mqkj?Y6~0QzEXB?cI7gMpS-l2`(2U(}q9!!2lEV^CZcyVKU< zX-;i%Sxtd(D4{=*NqZHy8ueW2_Bl-s@6MZI`i`<~#Jgw4RkiUR?e!3h2bW3!jN zH}TK}9wc?bCkE9P5+E#uTzblJeU-0a#q$t1GVBI)Cb(L;DFh-Qo<8$|YX`AZ5HK)K2M9k*P++ZLy! z-FUI>zW$awZrCw1H#f8W#wqr*QW^H2JGVcT{F18)<#5*@>`&ze`ttd{fkLoYkfn00 z!$?5ETnuKCasfaKP`;`(Y97$&a)1Wt5_>@3vHV^^)EvP@BL3sgKmSjqyIkH*#LHg3 zOCTLdC!x9(cNYR-A>CGC=7#OxPbR;={f3!*e%syqXJ_{xxh5Zy9-}*ng&!Ildng>s zWm2=Vsmy_23ca<|51J7tfF3MrlEUh+oEPh~+@9qcrB06jRkfNO2x`gEf%WSL@)MH- zX@4)>Z?8YwGchr^MN7KOW>-=h+%m&9FRx)L8$GkVJAz>lBVJWb*0^ z_=Q~!p(2>;iJPHl$dGKk!7ySG5pvKQzA=fMY4cMLjrZu!M{)x`-#{*s+}7VZkPG+a zh?iLUWpe$sJ)?JKHmvX2*rgzLYs|du)KvOzD~>@cv?i}jZopd>48}Mf)sHpcZ!u@R zMOMx@L#TlU3pNB&WUbTUP%+u-&3zO8ZT<&)cDs)?Z*J0C+u7esP05MYR_Vc>#)q12 zO*ZST#kFeyYnO~O;r5I1*%+x<_+j&fsfKVp_<)-&M{7^Vhl9u}HypRAS+x|ky>Ga) zZDFCUb2#U;wY6EH9PlxVwNacOGs4o@LD(XMi{dqwpBii#DkZHOE}eOPxXV^wZ=(c6 zUBg^{`B$9tEFx!M^M$_}Jq!yj<{IIP#6$}sa1l&JfFLS9xT8z&s3;x;1uibQG|(mE zNsrkyd~2F*_r+3sKdB$SEadr>7O&S_nR-7&#~Gh*W?0rDN&TH@Ff5&Yz-evKe>M1p z!JwBtgtrO(u)j0xeZkhyV0-K_@fsWU`O?wX5?Ta&M}1^dhn`HaffP?b{@~a$O?j1> zL4j1jJ@xut%FqsFm|iB$v^r>W z|KD1YABn>-=k)yU@k4Lzz4m&1>wEma{|8(l+&tKOoXj`Z^@s=)W{pQT;KO4M@^OeF zhk@voH(VK=jU@5|>`97r-zZ9ov2CsO$^@28%3fzQ+pI=8RX(6jrBoJb+1aff9-@{GDbIE^)vPw? zY{uF;leVVbW-_jBRen$K51tqQH|ST=iiiy=3S`tMX<$4uVhw@Y7#BhK{E(1Lmv8(4oY%6Qjz+xbb0)8y z2nL<}#f?edg@#|6CcfD0nP{~)>G;D+L$6H{m>j*MKjH}ldfNM1lN%L! zz0-I0%Z0~5#)(5s1&lhsogRg}!4vbjLS;Wx^)iyuF--O0)3g^c8QlEv@p*^E+Tn679+Ceb$zi$JaZQWu3fj8=R;FY zG>SXGmr+7^F2F|?ZW4uRc1W(mTd2>7UliQ%X9Izp-%q)WBKwn^ohgxH3LO+#u%Z|e z-6K62KSf#lBx=8Y1PO_lH5koNK_{Z>0}}ZnRo}_N>pv5FoA``~WJ4koh66^426IG3 z|9u}K@QbV|QtZ>xM;|_wevJ*?1`jLY_G!&gjP306AXB6-ofoHJNLIswEPiI;c`A_; zw)i|bfj;4lN)I`W z)k7$FR0;;yJ~9Fb&Mw`T{Sx?pfwno#lDtpu0auA1k1$`BsWj+VIjZVYzQe96j7OMO z*(bf7im3d`x0S zbex{omErWL|ztQ+%ZeZ;uVB=OoS~wx|i4hL*v|0&T8miz) zz81*`rxWssD#6Qu=$Q|?FUTGV8YLsIkv%_l*Tp*H(aoD59oK8Geqc&DHI*3~OpM<; z*)^j9o0 zhmBk?piJ0Tcm{wPuLsl?ype!uT~733yw8RGOuQQ8qpycY1AaX2{#eAT0cPAVPv2O#h}ZEZ=!vPHX%5ey=VQ)to->^9@N{g(R($jub|sH#2x-59 z+EXymd*HG8xpWuatHj*pv^BJuQH5uyNYY*XKX~R)%ztt4mP`7Y)(nMr4NMR9`1d~j z>|mr!1$=}$+q#k$d3Hbb+)(eu7fXK+AICs9DmU^0 z9PYg_(AD?UGxuHSz9@R|frF*7`aSyWvs5vm0xY^@G(-`$0)ko(ATWn!ArQjSmd%|3M^JCA_IGyr_bT_B zta`K2s&!V%t2|Za$auTtm@rsbg<2nqn5;&94K|2MU+=Yb%L86hCxVZierx!SQKKxo zt7Q9gkv^xaXBVVmNx6QxMO$e!dqSS_RCFu~hoU-MX@E45YpvyywO;OxR<8^N?M7dx zRNfzYU-DPEtyVWF>ZAjTxk~l8y_6*nFBWP2aKb}p^3Yo2De71yJ*f61yfr;+uJk+L zew5M!ofL(h3cuznBh5#Gc~CMEUVci>ChZgvTS!n*W@#pq5hDUmf~XuR+9K*zQjDPn zs9JdDVRpgHUx^;4`wB|XCd>(p@u-SCmgM%^Y~B03W7zeZ7pxO|3@Ph>R;Hb(k{s(B zxafp6Jebm61O8n5kH2m`@|#^L!|hjEx90BbyCi;n^Wi?blO0ces?D0X27N(u|2M#{ zy$T*Efx`B{%7`)z6{saBGv+y}(;;-tR4gn2lMr1udF_BmH8X1b!P;L~ioz5@jfr;-7i`P8yJ1!E#8VfWB zhM^Z>P^9`X&+qk`@YP|Ru2;(giEZ;a`IPX3DdN|K5NJdYQ8&hvm##(>QOJE4WY%|~ z$D0t3?&9oB1hOHLhGJ?-xXoma#Av-?(IM>trAXl6f@7MtEpobIPQc+t6xiOVe0ca$ z>C?$%Vle4&xtyKSLuOmRZm?EYFvqo*uylWNQ1ZB(pKVRp>uX&WL>-tz`Qe`1*$>ON zjZ9uAm0$n;>w5?88emn*1B1xYH8j|yn(mvx&pkO5AFr#bDQ6Rn_0IzgGfr%j_g&)pA?!1Pe@O4x~;Lbu= ziDpxLYR7|T;_QxibkeGPV~26tDczaTRw}2z3l9#=vnUVPv+J@K$kK9xshIfH;7_( z*{xnvJY@{n0b>($Q|w7aCgo+QW+N5_@VMlvMd{c!^l-bkWUiSJ3x%q**IrLieA(2w z=Y~G_O8doC%qtf@D{QeNq(rmp*mjx6`m0yE;m_>^$qPO+@c(!sR5cDYk7 z*9E-iSeYEM=yB5;g#~aGI~oAoDZsor0zxUN!f}9@`f2IW8Y#*)j!jt(-J_mtH9kA| zz7nZa(J_4#{3d|{5K|O8j>TpMw3DX84&&vW{Wv;KVwC;*hXXmIwLEOBl=tVvxNnd2 zP4zQ7+m%vAruBZ=`0%)*H?9nqTUS|8+bBaiNzqsAD6(%jv0Y)4nq!aR+Z&ho#K2Ed z)*YeE)d!=6!o`AVT0Ejavah+>SD2<-Dhr#%W%JaT;)C=$`O{-VRqMo^xc;2#TKF0a zSm!p%RWKu>>r=TTa}XI^5ulEuq~+25lbIJby>n{lNbz}NZt<&d1%v_=L3DeoN*lpgr;QUG3#fk#UZ zq61O!P&tFwy>5fJm6YUd58Q#Ahk=o~2Zf&GZNt$4d>~hP5MZYRrN^^)!{GMv+lA|Z zc1IXn7(v3gQM?Z5l{g}J3-mHD<$|89q}@u+9S?3Dm!8{eT;aIyFq&7?W{3SlF?W%7 zTT&j}F?pY3g>mn5()iYV@e`!ix?@A+$l;$W+7Uc1Cn`#}mBp!IBRKUIC1uUQ>BA)z zXhD;>&oqoMkWJ$O5k&*2SLPn`8WKVpgocQ8$!=dS?)pLqfbggbf+4RY)q3;5%3-bE ze98Cec3>sFa>-&;XVG{TCUlO%DdG~PDn2P4LEwp!(PoT zBtRu$#KVt>4H;`QT+{|ps}}J{D>O#(bjZ*WDD72Bz)hDOBq11pyc;lG7J)4IMlm$$ zt{u$4he}yzsMXb)9juLybXzPf7fjwc`Oe$%{KMMB&cS4VTb*=YJxJEjma=KcjZsJ* zj*kHM9P~U8jmAr8{82q-8evRUwe>CtgWy)fA`Yp}@L<5?_V@*;jWt8`=! z@Hdart+Lm@s@lqIcCVie&0_`U&JAvorOvz(AP5b>f@hyiNwAK(^k#$>&py%miA2?w zL;Si#%!Tl}$jCWo_CV!W!Bk#k3z5tzK~@UCV{eZrHD^_#CR0$}tvtEAXnSqu_R$Ko z8D$wzD=xy5w~xkmijrU&dzFf75@AIK#SGESqzjkDq-TMDF2z?Nqo80xB6*7j z&Kf|?p1m|S$j)>R#+0p~4uE?kJJ>bYg+CO|=Ev~j7~d)$1N#LuB`)3gF~ow5u+Eh7 zNbJ&XseG{e(!%iAeUIEXCLKhD4jg6>e_!Ut6ATivC4Zs%iS#R2#o!=duuYZ`zjK?c z!d{{3U~livU(McT@2t!3ekS+oz>$GhbJDLyh6_ifiQ$p-jB;jGJ=4xme;1DdijCar8lD zXYSR6WOv)%wzyoDfw6?ewGQ6V3>!4oShSXo+Ap`CV1|2#M@EM4Hc1<1W|TkHKYGAY zTW7;fe06vC>UjNRRc&om9Akg}zNS7xWy(c;{k3&}*zmPQeVy&@&d%UC^L;I1^9%bL z>y!@laorscM0zjYe8bny-{XT-21{4=oGzd5ZzrM*$R{Bcd5ON}^tlEi9{ZRMmwK1% z?XRuBX>8ONWSh?Ia@|t>o$ao#89usnk1y3=?6MS&K~d#g(0_ibMLCncZ1dh2Tk{f?@R@%QPn*;gN=E?@(R zu>qRzZ(HkKgBhgovmcr6ra68<`TdFZFV|dP(YB4Wr_d`i)H}+fVy4$x4%q5&W2ukR zl;^R;l5Cml{RNYJUXGOJ^s|sdLVuf|)8~^K_p7T^Gk;nvD}MAbGQxrgbK6pL7MtsT zaH>YeJ3i3_Z6C=lJu^$!OLCXkU=bgs*=bwGBFl(FaY+^)_ClD*d;R$Xsz#SMYLqGs14YGyph@?mQ z*xN_%h$#1urrE>6FQwMyRb}lXjqQb_e|KkxbeBy@#c!G!9^o>vbS%o`SadWlkg&t@ za+?eXUwq(!Na&f|1F_!C;dOasGrM7}^3BzY&oZE$d8upo?(X4{uPb+bg*{udK$a7q zJs-VLapS}YE|}!lHI;8F-&`b8ly3Gc1PaO1r?|~#fF1~cG0ZWz#XP9h?eSH5tk}g6 znUK1K%fL$Fm#qEq7E|qML?Mdq+jcMP1zO7g%~n<#R2pARG4j2_J`?O zi#0iPRHG4mkuZ1Sh~hIJmCLQy!016W&lg_UG3`mdc|Y^aj*q9dZVz4%zidD{n63Hx z^~W}>eUPmh8yjnHXsM~wA@o7MFp+yB=6{&`WlC{jTy&V0K`H&$N|3X26!WRL-wwyWwI~j-_&$ zo+g`Y67}g#vJF+)fWNmvXD#^-3EL>@ErGwvEc|Dn3teoNgeyq)lG)Cn-Eo90VOkK4 zhKUPLTu1zG(Wn}+8nCf=iKV@X`6?dOYz3CpmYc|#C1HP;bt85jZSp@T1oAY`iYKNx}a7$ZeWowM8o~svf>)s485M`<80;LIemg|AFUG6n5}Ck!nOYbrq! zf=75B&S#Xps$OL;CFK?$O(RyC$*Ov@bdUC*bsV_Dh=dN7lxKPF>`cUEaskI4yGxo6{7*z`-UD$p_ei8ZQ!UlGy7W{xLN5MO zA_HA@z-mdGdm~UvCq(^gm}m<+DpQ z=|8aM{><&krvA@rPsabh+8+O(RVJmEYEBVDf-pX0BuR9VkqFV8B_%t!lss$pxB-On z$|NO;^e&UI*12r#tJZqSWdn6YNl4x_KDw>&Z;;w9FMbMd;Sr>zt?*TQy~`$j#af@5 zUv4`_M|R{N@&=~8{&HvxWQUjJw+9gxV581z7iWvBIICStNbdROoL6Sgw_=gJp0E39 zMwG`(k=&))KyY0d)!^H~lK`d!)MM6IqmK<(>)kf?HM$+R&4%M{w@tXVZgourme@4% zTk-z=4E?sHc5-;w|BWQ=7wQFl5P%OTUUp&G#ph`QDVJ0d3eZQ`2R!qVAe~G155d?L z?QWU=DWBJ}OkX~t^+jatq+q07SsKN;ZYvGo0yf}OcB&tVmX;M3xzpb+UyPl+e`=}O z=0ogFH>c0|5FHKy=h*`mydj`9M!;OfZ5?9S(ST3}&O|wiuvHj&c0{#9x*1Bg_~37e zXsmF(;7yGWGZ5L|U`Y1(qH~Z#(7fYQ?yy>egIOE!A+-kE-}-cYmwUkA_ZtS>U3DYt zQ;T0nZ%hTodJYfvj0co|8L?z^LH5(2K4Teu7wQ_)@joid$e(Wpt5HVZJo-*xu!of+ z13*&z`hFJvDf-K#>V27j6OIr64narz#S^TDg;YchK42LLQ9wppe#o(Q9K%2D8R;02=NcNsI?Nx z^s;kJhMB_SPnf(PPzcix&R*g*bw=6D#$>d4S8SJa<988<=0tXRB}!G}DJ2@tVFH63 zqo}9QBkz%Z4t(5l#N^7nKI&nN69!1LFoc1)8yx;&i}drZF;VGftm}$DC_m!bEijO9 zX-wqr;dOoR#uZ&-xe}3wGHGPvg~um_y?&2$80V6)_Tft^Az6T3D8)HBV-l6{)ZAU%f%J&968Ifk?iV%bmmn&$~2 z$%k-{^bBtk#{@90`9du}t5F~C5tKF)9CT63l)Z_ugvsT!yko6%erhLJ5U5R=bYVIT zZUoUg%ETJjeobp!rUP&lS`Jw2*4Uj+;PJUlC-8@a`ytpOOV^zu#$lYiwZ_t+aQ8`c& zs6Qz1+vn}WO_CHWmjdOwb^xn%X+6{FtJ-ztfpT>a@2JZIlD^$!*6PzbiD?bC4sCg} zq<+yA2*g3U`OrCC%r2Ff#ads!>{7L4GiW<>x(>C$Drqj&R@Cd4i8q*4zvzuhf838h z$$a)$i2dmvRRVKCi&&0eN(5z&Old}7>BOUsb``q2n3T!c)rcTndcLzW5cYV&qkf~& z?|oq&8BC+Vj82IP_ zB_gX1^`gRm-1(2}ZTgoK7>7}aEPQ_61~hWN(j1cv@?FeSZ%jTLsy*>q{KVPF>%t?q z=U>}Q=NJ1k`DiG?&x7r-;NvG`=!iIylOS;YT^fGfX$%w)K9~_U|Qe0ycp% zfvR4fNQxCPacHD?3R-JNz?E9Vv7Of@J6gWn{gv8l@4Ge~Co+I|UVUS#ZM4=l zxN{JHwRMO$$FChw4~^fAK3Lqw#K*Le>ndm=!4dIK#xZI`LV7Q3DuA8hN_-tlwffhI zNWABocyfo$Nv@&HT-)y*+x(D?F3Dh6>JpmT2QBfny%U4LwAlC+^lso+u%TRBTT2rF z95kLU!?u49^NH#vK;NnWX%5xnkUc81+f4U(jz@D#ckY37X0Ps|Wy-tDF4FBCe3Jd> z$zSi#9@6gkw2%GBw@g+tE%(CD~6bi+kTHF=q zR@r{ly%OQ!gYYq2fu2Pc2>JCiY9AslBC>)}=fq#2j}V?eyan6={aWF`6iCeqRE`uc z;(PcN9y*92elX2Jtk*)c_8$K{^>7W;*M7t ztYL#rl9;Z>?eaT3#&V~<(d~6xW;%yEI)*zzGGngxx&scK&)w{`mK$82dcWPNHoBcY zSDiyk{Xurs->CY5VbF3(Lrk*semj{UE*$=YJs7A~Ons!hz#$qogXUeu|KZH$=*<@c z!=ZVsPiQz`ynNf`%BM2^bS4)_oyw%rDsA^j94LkZEy+qsI(mWcyX zqiY5)HM{sreEycbh5VV-A+I61yRMq?84^Dw`=@fgN!^%my;qzWxhaNsQ z4`p;gqW}htk^u=d1a=5G+<+RO9AXfC^EV<3G6{LsAUnM-*YJ8Mz(f7YNcXzg*>&A7 zvROR$`DfBo0s_#V30>^@>veb{y&7wM9nR75q2>o;>r$v;lYytSe8xfkQv5rrF9~(w zzSzEQ^fTde8aW#hV@>;gbB&}{8e1-unui{sht0mEw;8}J z+FwlIx&H$4R%$ucx1CHPj^;!l4Flm(Q6;7*fI+Cgg7<9LC|N~+@HREztd0i{v7@=i zE!x|(osq{P+k?+uY;AYwB!#W5doJX0Hfujb1qHiYYpHxLvd)8KHN9ikI)g6I#%-ih zP9FKQsmc=9nv3K!D4xots#{1}d=>Ey#C>qj+3;w7lw^gZbvHL(7;JTo+?9?5l`DeL z^nT?7+MiOW$N(bmbV@*%*qtrCt*yN+Y)|??x^G)c%eFo|`0%NwrhLAsX=h_&Qz})p z%4S6anT$+$j{o}EoU7wwKr`Y4_Ob@ufIT7GH`Y58DL zUW1!n*>$_y2@RQi{&(q(Je~eq{)!#=PGAg}R^&c8s zlgs@!c9OsO{7Jko_I81xUI~vs`HmOsay(O=2wQ+fgwlluM7%QUHNYw*H^3a4I^=on zBG$6{Vt>$~4>;_V7~R%ZSBwVQ(`>l#P7K?>kA_~cgn zZ4vDeT%Ics#RkTT^yYcxlA*{Mlt38oh&fP%L5%yc?Ao1cGw;l!=#Xg>&1N$BfBZ*u zDCsYyW10!Y2_sBvwpMe-_z*}w|?!fatWfWsG$ zeJAo!8@YarNT#-+5|SvglP~4=OjX z)#_?>f6i#kNnTZ@T6u2E>4Q+fQO${VUfGu?L-R^&tI<798nb3xR#% zC8z9tFpL3Po@$4(7by1Q1LsE3*wJ+Bs{274@jjgFkw1qd$B61#$hJTb=9)g`xri6BCyGEh=^x_5EfRgO zg{iF2jev%Ru1)6g8YE7_QV2)hj<0jorbfDhmsZ+q0*T6m)@8Lfq@dNgv{1VgG+oV40s^u|o*mkarNlH&75(oOSXC&g+HT%Fa z>2a(91toYVea$+*qdKs<8*ewKFZ4v3nA+ zu$AfM(8bD=@X*OU+oc~OQ@d%XR=J-|)ebe`NqtQ`UQ>TiIlYbPZHd;Zs@8$3?i(vHzxADt)1_Px_N`TsfX#ICNo}=kmceE&CF#cOyK6bhW+?8B&$-gB2k} zhLK58d>RDa5D%>t6lRRF1VEZzscPkfQD$cxHsfb|2Fqf_|lO`3r#^31I7!YB*V8`yj44jJPHtv0L~q4PhbBTu>JT zei4g=$1&*+A`cdBANKiXC|J1AUT;93aN$)ep_r*4s1S1=7BOfqN%=-2IgQhNaq34LA(N@K zCe#;lO}X$FLP8RFn--LX|DeijkuPeA#(bkr=cq3R5Q5kfFcwrhn~;Ze=J{F~i$Lib zQtvoX8unjO3HS;-+l_#|T&Vcw}+IsHrr^%0GG!aRCR~ zR{?$f^0H}ap+;_nl8ZIn0cJK*3e>&^4H+WnC7VI=Sv&9^e;Mls#B0JF@rCItTzTlA zE)=E<{}?W)p#pR#U<5|TMmxYB7VnL}ZEUFj>YXiVQ(a?YYeUO*9f?)d@w&C$yEG^ybU9AI+jdjWX#7txB>bR}Sc1=gT1^ikzf2b!vEtNOLt6q~Fs zFYiuP*R-u_L`SSyV;$>?xLbRmlc2P_RO_B_8I9{)HFbWs&UnBHV#B&Vc)t8QLR-g^ zL4RNJp8gBtYi#nUyEER|+YqR?w7K=b3mN+_iX~?~;lQxlYQH3qGQbw%^GR@csK_=V z-B&fYC02TXAOMHeku0X8K{=JV5qYQy@;H$ajWGVg z<4BuRnGF7*$d!)8YImkkX9LIEgX1+diQ|#(A@nQaJ3#g#a^$cRE!1h+8&puH+@j8% zNIxPaDRg>E>U#DQ5QV}uJ^!+jx%W%=3Z3>TV009&7Z6tYyt^L8x0$SQ+Rf6^OVL)Lf~YXnxMS36QMsc?#+Bg`TF^iZviGDmX#1D<#D4-z5VZdd z@Z29zB3n|MUrC4Eh2yR;nr30MQi8n>Js+PeFZ%b_4@Z=d17AE~NYA=MVV9I}hy8)V zaXvS|Lx~}=LqEWJf~v&VJl2L9;+Ix{3_BAkJ({Qt?Up^HRu|>SgME?SP3xv^zIkfh zrpQ+}$G>w^!)><*GKc3@w!_xp@_Di^XFZK|;f_ZR=-2H}rS`7_EDb$C`sd%HFP3Ap zOqc~V*zYLPhFnn((cna3;Cg(rM}yc}3}^TFym(Y0BlhTl++*u^e2~d}utVI2XVwQp z4^ml;6gv`bR=yn^XU~Twua1T#<<#u#Dg38WYgqcS1Ngz+>}8i-wuUw!cu?oKAp~#j zeC5Pam6db!f5MHJ7kC%2AV^PM5Ya`TA@eMQcWo2Vu{!d4Vy=2{g#h4F-RpsNO=(p57e}gL};# z1|=yNr$^~Fo5J3V$!enar1$GT{Jr#kX>HKnLmW13l*I^N3<0aj(4j=_qEiNvnumD= z7O?_sCG*5{vK0{z)J02PORMj><}E!ysNv6Q)2>eh;%ZY^R7A;ssQzYJ zzZRI9dp#jvVC>NM4~>;4rc!H~ES5lgKFJ6lPtA@;6AuenDsWj=V(k*znMUTUO~Tg# z9gPgZk~PXaNYd)8mr=^mGc?5$wsNDR-B(=E&2K50Y1!Plqo zQK{&BB)cno8j=)hKQK9v&q>qi z^izF0F(zBy8hs+}5O%@lZyETYtCWmI}i{bv4Mqkb8`Tdwrxa!A6F2Jru?G%`9|ZYXQOOeTvH|KycEGgYMhxz8L-%}_wdt}OK(1`m2!Dc zIvDU%D^Lv&#h;{)=FZ&XtT8R`WWOI#e(drX*>`lyM-_nN=wl?4X)ijWN)=-bQ5w;u zy&x(yh5Yu2@WA6)?EHG(``qMMYTH zZ)h-$pk{ zx~r|zy&t@C^Udz{cXoE(xnBAx^?m!+Z{ZERJ=8mG{eEG`r7UsBgr0q6w|;`oQ^JN* zAC#G)uzIbsidk7VdzImOupNN`1$?9*WcK?flnW(iUU@^z%coSog*>FZI`SuwN0p00 zK~$syjB`H7h;>0UKs+3cjR@+~)3aoYi<{YuU{q%w%9sO}3_@}tb~|MY(ude~lMGkXq?OMawOj^Z~K+Gd~;Dr81lSiA+kTe1De9 z`C&*HTDMQB`Z10ry`qf4-k7sFLS)>L6PjESu%i%mV2Ip=&G^NwlmON6O1ah(NJi{B zf09RVM9y|7sTe?o&D96+V@tbqI@#h_X^Fe)f=RzX#QKv#Ws)=9zCi$e=Arf=$KbiS zyhhjq@Plyuo7Y^1S}#3E+cfHGH>_K_r+y>Uvwi%QJPJjB?n>yw4UqjU*!2jk#!Q>H6Ib#&ById0^wO5q+^lWM+MIt<{r5>xVJ;oK*$2_j^nSk zNHCS45on;O#2I#7kxL=nu1wtg(9N@hHxK%IZGaQldi{93{p7aG;ysb+-FNPuj`YMY z+jerhh|3P_+0zt{v)>Nhbf~YZu_d`-L$al@tM~9tgV`H?vhA+xI>xRY_{wxg$MjbQ zt{v;R?yhY=xdDlQl+i)Ct^y~RfP9(f0wcT92~s7v%SvQmaEAaaMg*=wOFmxFYb?GljndBUtCMObk3>AZk9F6-=ui?(SUP z2QIKg?1j-=Pz(*FV0EXBM<18cMqnGUE}2$o!QC3%a%cN?U+E#1OM8ller0x>uS;{D-iDL9VM(aEU_{+H93pM1lbj!X`)@HL@+*W-~*xi6TFeZ;WcIPvFBm zq51~aT`ncou1$c(KNiq4X?fy1J7QH=ek#;nu6?jv+tXeRQXy@5CwNWVpwpK6lt;?T zuik%^O7YDE`cQ-5PkO*ECJ%gPhttBe>?7rJy;>bU@a=Bdpw=$?GB~@y7s>bOvKv(g zrGD%|T|nDjf}9&TSVbZ`T28c4VQg&x8_|6js0&!2gt-(^lew%;w~s^{{^wvQIgMJ| z1S^b!9MUriJkKC+LM1yxlZd(~Y!wOX&URGDru+0spElWp~C zF!F+x_ZCx?MW@GGh%+}f+N$cSQ8yO*G3}*PABTHzpip4fjCy#mK$yq403R5*iY7EW zJ@eNynWLZ};{3*`=Hc6hW9$5}@ZO=B?@dpCk9g~5j;eD|Vgjl4G2Au#d%|6u5scO{ z$>n=geZarz5s$0`+5(;`3?w|Taujh2sfRH&<#+jjLG%Kuo1S`T-Ino*NI}Q$9lCv( zJvP96fYvB)oLs}S(vkFYn_u~+!#Tnx+ND1hOxDapV>c_8TrAy||3;=~@~Rhija|5P z?z|j>xEyPfG&@dcCdY9?&f--XjCt~bdFJEo%3ic$-9uB#-sXhG>9W0p8&jg$?%fH% zWiC%maD4NX&3Rb=Yh0ieaJg*GKlers*CWBiBpvK6)j{A@L}h4b6HCms(#3qjnWgHb z`L)z+`UC7wz1Aw5GW3azNwxxyrL|@#S;}hn(2QH?*YHscgySY;Pn*xJ@gStugE+Sv zCOEwOHiDMNKKUyr-UI}}mLJ#CH@vnhM5DMz^5FTHQClgs`2!LZiQ3##}`;c=9# zABrTH&L8_?&H7Yoy<;i{G_uEJx2*7Vh6laPi3sRRh-JMDK0)#iQVlT5Stg&*YWRdM z1V7DXW#eU6m0eqQec4W^vZY!f68{nyN`>n92cKeu3z-@xcJPz!sF6FvtrS2 zNv4upjC9cR|7Fhi-V$#>#w0fzMn(*qi+b&F5nDw0A7N-|yuPOJz`z{g80$Gi^|_HR ztU1wjb9t_)7s(ZI%43AG3LTs{YTi357^dhE0z*pa06s+Tzk*CUD7*9i{IsxMQfCFn zbX16N&s4Get&Zo_Ez}XKiH+-QtOixlP`M`wSq3jURd|N~yh2ua zD^yYM+yKqZWDO{fu%{lmS2_K#5#@;`j zuPVR0>MCY^b>J#`+gBrQPk4ht(&wPl6TYAVyFBThwdA`ubAXjVeNpvmX!pojwT3IG z06Syi8Q5bB2tf=7PNl-0d9(Tw{bxljpxkK5)ufY}+!PJx1=V@W) zvFKu18f+LjdSYM%YAO%PrAd019WmL{+;ZmUE%GP{Oa-K*J3^5w`sJmuvB}WAG|CT^ zL1QVt{g!lJ5t~>>4WwUkDp7_o;E1V`9Rkjx`xbH*l|C!JA-+T3D}5IQ!MT}5T|#>b zFnI67j-efyGf&EH3shEG#L!}}r~x~%$v!t31sF+Lfnt@8vQDhX(&2G$))X57yp)$( z$JIB{K)BNvw+w}Ed6mwoOQ&(_=}VPw<(X40+NYjc(6nLR7Ag@zjmSbdQ=T=No}yMh zWitM%)I=I5($$2#0Im#`53EIK0fqv0CaN^eze0!ua&!v-d4uQFsZ*ZN>}-f0&?9#! zpAWh59Eo)~ByteH1Q9LJL-;;Y@P6RAm>Xr^K>Rj{xlxOK6gCY%Gx;j$1OnU8;6XZg zgg+-(q_yZVfD49vE!i|qm*WODt;Q@;Q!x2ZxDnQW5Q#!=BxvIq@P-pPOiM}}LYZtz zXV2i8Ka0Jb;`YR90k$ioh=XDrxP0nPW%84QMr)MT4Wii z-qC@9XjW2l48Xj+HA2>H#FYqUdLScUjRRlWPIc@g3yRt`s5l$|F(Je-36M-<4Hz%S zgtte-GG0X4HeWrmSHkp&@DyOiq_PbfHD0Y$<8b^l8uelke0yhi_vZaa_HX8Qck3M{ z1L~S-^(!oPPql8jtkZcu=XZBY(Ppp1RvE2F?Jr61ayI*2vPo|>>A}kAff-V%TcI-= zqQQ1Hv3MU)zS((q>F9J4_PA@60|?j^E3Fo1wMVb{p3{WWv``np-HMc6adv|4}y)!Eh{_O6;cOOc==4OvQ(-VJ9nU1+%O|aQ=r!qWf z9~l{94^yCs>~4WSCHB5%=t{k1{b&b|7GY}1D27pt*0)E^L@iC|k$J@ks|gFOQYL3d^P;&|CmqK#_)jxc9kA~bfuf3|l2C0CEGv6bG?5X7aSc~@0sUzn-E$v$bQckMKLoxh&QT-rAb_6P>4^t#TvI}{q- zi|*q4UbVDGI*Oh{j2#FMQobtOKo9_)n=BkV_U?P{DJPh3^u6uxjaEy^WADB9-Y9

6v1MUVhFLwX}vI@pi5DQ8|(n)gdH+mt`-W3Rlp#CZ_3!RWieU;;(YjYGco zNZ}Ye!;i~+Kf&{3cz)|r=fUW}u4hs9U-l`@FDhrYv2mPjA6veS&O>tNyTD0Up*g!K zLxy>xfZnS$UZ1rATPjG*MX3>=5H?nC1Nu>p*kn|qC4P=(gjceIyHe^*qW6LnyvX7&|M~Q7N#|{~!*2#d zFJ|QC4Mysu@sPu>9lWVe%H)(sA)a87u`$2%crFLx;B@+qLx(VaqR(jjmSOyaUk@_G z7qx=Ru;LT7mBo8Uv)T0{b~Y3ZjW3@cNA>Wo!K|`Z7-A`JGYvOe*(p&!_pMt02^z}R zOHsb?^|DODY^+p)Cmg>3XidWSU_;s2OfJK2r!WQuIh8kN$-7N!t!OLr?^Y13qtfk_ zxne4!9t%F+N42RT9QeV+cX^y~8AWrvR(#n5aw!GjF3an$S zW?$6J?xTe)B^4cCxXNqn16s*=VHaL_cMRjZNM=BWL3#Et&C~lKCYWv;n|zVIvS0bP zZD*gy?5>17ih})>k_Wn^sMamCz6grPT_^6&Q4{T#P9DU!&Hnwa( zB*!^p$uN?hWy}ldUm5mE$mQVOSJ+1v&LVtwo$D5oH8h^rK-Q!%S1H04UIr0}BR~<; zP!S*q9vDx&^Tj~S4FN+D$i+iN$K$a!*aoj+6%eb|Ts;WFQX`BEqUxg6gdn61L1s0n zg;c6rRlH|MX7Q7sx6n~x)RagnT!7^&`7sd8 z_bRVLC8y1IF@h^AxUpc~ij5g#TZ+}`$j8OF{^hNJk*0!vKxNV0A(W8!gtnsi3OPk) zfM!7s5W;WRgG%33;k%d_W~fxrO8Pc@(rq>kGB)JL@}#l7A+o%|GldmZnDRr?HC@}DVc6*FZ_b# z>)W6@h&{1%42}$?+;cBn&)!Pervf=DpG`h&tC0-zJfDgb-pc!D;|>omhJ*r~KWM+D z@czz`;g0KAU*5t_#B18>6?K|r#h&t%$_%}axZ;I(s?03V*e>j~_5ya2@QbEOuU+}TZhFC`uhiWpEwg*QVQ+(7-2Iavl>fiQGpQV& z0n_6Z<7$`b`*yGCd(f2<7z<7)e+pKmc!b+o90PyUC*`O|{dcM>q|>mn4wv0u_6Ww< zMmdGBEf4`gx;&x8d}<$T3tt1uNfV7Zpvp2&X`pC`#^xiY^8oA-vQT_5)p@clB268U zB6I-i29jbCMd1!j98wcP&L7u2P%ApxplRTykA|?%2Al^waSb$N8(g_SMdL-B5ohi& zLrqcvW{(fZyt~Lu>QHr{ezeP2?Q-i3ZrkOZ&9!x%LANI~9+k>17NZ<9eZDiix5H5r z7;?lvCzbokXDujkQe$ax?e<$$(nZZid-clU9tpLCdrfXfy)&SdO!n$ZceT@Na!9sH zz0SmH;@z>1O1Ivm?!VBua(P{4Fr+QFncWRqgVF6)>$`k`OU!DQZFjZP|ESf}?D0w% zL7jG)$M}4$6Z%zjl?|bX8v>R)ueQwqvbF=KuGa@52IJweFlGb~en992iydZS&EoIX@jtn#c-TZ?N$_^(y)LIA(x zg)k!@$YL2M$U9U%5S&o{E(#ms1C%FA$Y*wvh&oEbjEFn3vXrdyMSRUpXEW~P&luSY zN`%lnMO-o=j#H_^BUJ;gV2WmFD(D)ZdCBc&tar-UcaXHB-5D1Q(OQJ_V6}3OFL=>d z5wPR&2>>=KCX1E`>F!s4c5p}Yjvc|94+hZyMnz#3H9(1u-hKJyca81idRGx&OVufP zZh2A8q7H}~Wp;#@c}~_+d1`OTugqm_+Ru*q;eCK<^rBdwyYqQA<)G!)P?EN20O$EA zE=%Nw@a0L@Z3cGr3dE`iM@4yV3oKp|^8{Fh=tVckLi&mW2}Xth@a$PmVQHd)AbJpZ z_ppPXI+YVLRP1Sj_w%eH14jm(f_jjDmo`S_@qFy*r(=sf%Y}c*cRl@dml&hc@yx(u zFWJ@#91|AQ!lPolMVo4I;NqS!cS73y_Tt!i3U710qI7)B(Q|r&16URv`5}C>3y#*( z9Hj9_DrFv5QJhny${6*c*fi%m zU?252uAb)qzuQ(6r9tN|I;!Z~i+CTN+t^~Ke}cXxEpu^uZ(nM>{-rcnpQyd6bC1f~ zEBbJW=8Ef}xxmWqE<28bvZN7~&268o1Cbd7S)_6iYN5~l1Jkjuvtws{4wD%)M(mg% zGvfV=x+K3vJiv;Xi(skOjU5Rt5NvO#nT-lo2q_vE`CI{$@Tla%uluj>zjeZY@7Un( zQDbUj=atIM1RpXY4Q1+1{m^*d^#j_i>FAZQS@<31=CANykWNrmn!gYk951#8C*smX z1@T1#87>h_=ByU0(QsIS5IOn8P&AtjC!V0ZSjsTYSgiWP;#JQvx<|L(PdS%I!pv(!n8*Q)6M zy^Ed2=|yiZyw+93C_%2_q76_qNPzuTBUZ5hIOZ|Q9Ns4hmfyn$;~MTV>_ePe45t|1 z!+K&j<#2EE0f@R}eo8qsP;HhK1qzy&|%1f^A;9d(W!DOWn#^W~C~MN|i-@feu4{OO^wRI?BIyRUiH zVogEt&g=2Z;2XmWQ33yqRJvvCMkpQy8Z>vL8<&BUU&N$%tu8PfbOaU4;VA>;*AB6wxvItmJ> zkVhHTj{B;VUuU+~Q#bh$b-*CNs!%|Dl=D=f8dMJaM<~UrOo}-^i5Cd5pC+6rq zXkKLbpu)Yi!V47yZdnlv;SmpZsvP)Vu*tw2gDV_97tp~Tra6_7-fdl_=H7G(;&p^pK*!=0KNp?NhZsEES>kMn{)!ol zAS*= zps9HA4Y5zn&VyjkZXNn52RxAlD~8Y|{ir?t`Le6awwGnfc2kd01`4_H3GM=6K)SmH z02o-FJ_@7zqS$YIY7oN!yoQJE4M8&6Y#@q}vF%YPq#k|)E2@>t(RO5|B0UGm+aP6W zAOnu5>!>89nKnv-l@eeJdnDluu~TBtY+>(3KkalTJ50vjRIkyr@W~E~qud&>s2%^w z;xy{LTCYcs3R7B-!B}fHWKa&z(qt=N@TNzPH;j6GTVtPBZm^DbS+8I< zLme&k4XZnbR<*RO8tPcxuxfRCQfgSexN=bDk5#oTCbi9A zsTr;@(Yq!*uo!G=)9Sh^ZB~uiCe>P7ZA;;$>4#@#9^!uwPtVxKx~oR7i;vp6M@wr% z*h%EehV^LN%$7-(#PiwnJV; z0Aj;?%HHYk;X0-NI!ifUzJc-3EV$gKr@`rt6H`2=bY7Cd4xpa8=g$sw4|-oNwjs<% z#D@gz9)vH|2rj@}L-4XzQlUjr9?gvK=JZ@)?YZJZ(XtuqShw}_e?g_L<{B45Yq$2! z%=ALPDm8RQ9z*Z{civizN6!_riyF(D&n7OOnYnlx+F3te53s2Ya;(5|+CR+o4z`>D zdM_g(7irK?NRX!f5SyO<#yb;m>;xy?VRz2Pz)Kl}@YX7SWZMgmLv{@)`d3)@21VJ> zQyh!)AGbn-xEh3_9Q_2xP0by4UboN-gb1&ehaU84D%+!8n)a2bAjH=SI<`XvHw5yz zBdX<*?WlK`$@HO{{(9yOxh~{!_;qK-rbB(UtrqEIr&j`VBvQMGU2^qE=a}9A)Zh4d5F~36> zRUYXu%;IFZl5A3NLh+EWJj;n(J;k#DZv_73d!f5ypQJn~S@c+^q4nqTi8% z31=uMU4&uEywcdAamT>@(WqI;oRKrJoaV|#IX#p9SnZ$Rr(2A8U=OV5x& zz_VWI%9XwJG%)uXCNZav=Ne$)2c;cJs!qL>YQld${W5NgPhM`TQzq(LTkF};y0$_$ z*W_rL0WQU05MFHGFkzH0tPt#H0(&IYdzb3xF@;S8>=a-RV|O*cS_mY&%y_~MwPv{ zKf;bUW-pM|HS|D9-O=6iinH6sKKSroWA`7y)cgIGu0G~j`(Kr2+bkBmkO8ysefkTKvy95m*L(EnrrKV|M?tX zO2S3p;8ZS$xVQ4%&lG>8SLZTvDJz(Afu#`x(tz3fex4Kjx?({>u z5WMv)OUqq{vt- zZfT1ge(5daoT+JiOY$}p5j|Df(iYjB3+1Npb(ic;EDGQ%K<^=fdY|0#1nL0m@d#bH zGMUX{Mjhv=vID~KBtWPz^s$|#5r{;$rMX^rhw7keHCB2Ac<~|di(iW|HZUIGh@h~v z56T<=MPP-CLlTH`n3QwMhq6T>=hiS%N`wbjK!!Esorm^rvxcDLQz{r-T3#SOe4LRW z0`wq~0Bk@t0^Gxzbvnu8tMf|Bp^-F#CYj)`*FYu zE3FOgSR*RW+YF5{x7TK@kaBwG`o}xHp-Q7xZ8DfEy`7J*XPsTnF8sylc7w%Z@t5oE z$_c01;0N_wx%F4Qn|&KMHs3vBZE`1PjCR?C3WShJ=8qnOJ+FfNq*|)T)GTrzEGMKB zpJ7yZlFTGfZNWJ5*kowY@To*l?i@j=Qb3M%V5$XApALffAbqQ0gC3@heuLrGv>$ic zD%aK9u6D`G@UkCaxHhj>rNReC63TYAH!*^*#;-{Mfb30Oqud|#Hhap0ot?pQPqR1p z1bw;!b+B!M4HKVI9I&!~>X@ zA_s~bPjK5{L5p?N-moLq`_MzZvEiTn%ohvo3B`hN9X=p%FZ)POLZ(F|0mU_&kPgLq zTbeJ7rJ~X2W1&zCDN@Q20jPl=XD~dQ&CbHv2$@*Ka;spy6S}R80{|!p32hC^F=amy zUe`)3StxGkeL%C`Os5aXNS1LCU=tZ8{)I7*{j+iAy5$~|9FNPU9Lbvnbb|12ZHebk zENH_@ct`}l!9qepXzeKXML=f4tU}Fdr<-U=(2<%&3lGAT(5fiuRn%@tNd}0>c*0m6 z55$||Yms4PY6{nxs_d0(A!k8JLQJR_QUTt7WwZnne z{BNv8B3Qy8BMqnU-zBRaOZ-H;C)a5VAT;O3bA`&ub;M&T-aL>?0dxeU*j{8;!~%T3Iiv z4$^bw5u=d})ARJ3Z$fAMOxbo6_PUsBe)R}kliY($q$L8Ru4M%ZYT@4}?pH|t^H1nS zXjoi_5q6gbSOqI$e`O3ug4ejALc!BU>kj8FZXu|Zu;erO(IjMY(Z`q&(4C#Ct;7N zJeQa^m)c^6)Pf{OL_W@F(i>xu}Fx>*umP*C2c8fn);%VtV$|r&BnZP&k zgHNElxc&yd!Gq9eDW`oEddUqZ7qTbe+UBIwDu@!HfdYnA+A~3wIsyMOLSyWxxK}2~ z7sQU@R;d;x3yEQH&kZ0p!i_R191zTdVix!#z44QuSM`a`+mB4WwS$8nds;5nMcp`x zk=vK_L}OeUfX9b3APnq-X92>haP!QJJd5B;az>VCh^2uXJ0dQU&H2WBIl956K|U)V z{grBi%Few!&`!J<)c{0ti$u%5g&D8`Lslctn1Tqvy0??#MRJ3SZ+C*r2seDLRbS3D&&$$67g@&4c!VZVnS@5CA{| z<|B8i^cWdIDU|JgG@l1kgOtESfGsC^@L&4qBh-K;o+XK9ofq^?Eo=??$Hn*!hy6j) zH~6r(keG+Km#)t%`?ZoTtaj+`VuO0ODeE*WJFau7l}GN>S675}k}mTXY{!#ZbPin* z`_4wzqA%ACn_PvL^s;)iT&-m->#+|t>z%qyeC`*0u4Hdw*eJ*bN`3f=G~^BE;{x74 zI00yffFlqLr)WyOwAq;&P81#=Os6~uHqoA*J$3J?TIJvL`crz(a+C+5dxpd^SWklW zgC$=)aB38v@aSJeaRe{tGMozc${BtA5L(9~#g>p=l2%?11ZH2v zC-5=eX626t_WY>>FJkUO--7(?hrW9DoLDT$N}j0CAP4qxL@KT<`x2rR>&rHkZ9&Z9 z=CWH6wYa_P4n+3vEjv_pU)hne2g?3)+0$jumz~1i0RMqp{9pK(UR(Hl;p6|E?{${CbSyp64Ruoy5WyMx3JC0F| zF|Lmgt}({AsWB#L2qB~?5JA(BhC2;SQ%)w6lgTh1H>D}ZO=-Ba&;ZNO`X*-aa zp%gmPVOpk>;qT*vzx?moTe4-x37q+T(OuuZeEVB_UEcMsuUqvMms|C=zr_6&cAbqK zt1ffDS5@YsfA-{x<<73kQr8i>Us38rolo1!cjSL9`=;Aiwcc&2{wn_4JjQDF?XV;K z7Ls}X3HR(fL3^+@XbpZD|B0YAz`oz=YCW6#XWx!GV$D%|^vf}OG#+!r*gt06z4qQN zPgkVd-4*HbbVs{A-4XilHI?;p^X%z}uh*`7LF;XD>YvfM)4?$Z>mKf%j82&v~G7blPh? z70OTTHE*D_k;iVZSA?yOGHb8ShAdSfPA0HcgnF2!^wGxojM%*uU4XkoY2}djkrxEs(g+7dL;ywEHgVRwwBL4`T zWx9t?qzo2xG#01tYH<0XF&r7nv^R$JfEp}q%nA~YOvAO>$OAO_oAGtNGI|( zQRz0XzafSfW5srxm(pXP0}@HM2Dhjf<@Gn=mSD0}$PT@sO%Sk;Sgpq@9M_`VTF}Tt zD3qXCyQai~PFkD%=vS=P-h>a}AoyNQ35t*qLkn6#7FH8`qko?-!Zlo@RwvXtE$%F4 zwNb6rSfKc8l5O0e;_Ae{0d<91rO{}BGFAJ_w#4EtUdjWd{WVz)k8yt&z+vhQwT3>< z_ce2Mu~ntVA-!0i`UcBQYArWvmbdzK{_=es4g|e&f)khDNe=E36+gz+YP64|BU4bz z)T~a=HCol%I{p*Ae%YtB_>|^g$O@orcb{gDN3Gcw*?i^l6B-R?YF^o8=uKHP%ecW< zVsV(%VJ)}wVs3El!l3Tc=$)Kfjd!CpO^ZgY*TVZ`;EFctbgIz>v>QYMA_tQ(cW8`S zwa!w;Rbi{fq*3YjDK9^Y@2TlWSEloz__Di7ZKuALw%dj>x`f`^?%Jr2xEvleyczCN zt~2Y)_%e_`TA0zz!(4521hro@Xt)kD;81gCxR)qmK&TW)4eRf@qErNEQ))fF%D5A(OrJjE>q6 z!&}_O+@M4w2yMaAq3ZS*YXr8)T+EHIO2|3_BQ?+!aP80ywttvJcIjY|DcO_)LOj)z zQ10-T8i6U~Q4WyfeKPX$Bym>X+EATosCl;?_D>6HA-q!4kg0CS+g!Pv>*a#K4ZE8a zQv>M&TTnK6sdn?c*2)`8H;(g0Tw{DY@}DDK(Sc@|C@;fp54r&ueKg*mAm;F2STV#O z2aX6kB43DoQ55VW$IUg8DpuSo|Gso5zBR`vyKaCVzF1G>UUp1%=N#WD>|?Uiv161_ zVggLhxllnt&vNzE3hGvnSj9QvLrWBYc~N%Jd*=aApm~*N@@HvjDp7ITezvX?Wj7i( z)h;}9vcJ!$LMkru)*H#5XSr&iHJCq$cPTGUN>p8&=nT7d4yZF3^}x>1iOf(>I<4*p=fuRsPj*B)zQXExH0J6^ z3~IH5i4IpRW3?bOYq4f}+p3+tdmTo4f(mw-**CJ0jzj1e*%q>|2~n-}@{iTmI88e_ zSOt!$WWMWW8eg2OK|<+WqUZWxG)06e+z0Hxx_{GGIwCuMtn9!*E-?a+&$X#@lAH*W zMnLJrXq2;uIwIMhuwiiti}9f3AoRj;E)M>YbDx7yl1P%%PX@LeoD~s}7+rV#$WB+d zGjXjv2O)R<9C&ZL=d+&NlS%2mKwxx|t7C4Q1&xNzLOgA?1u_AvC6nmrNT6OkJ+V#G zFeWeuDTvic5%;EZA^9-uxqLTRKydmOIG>%_QyY{Md!IiVXoFI9N@>%10DLgyIsc1Oq32 z9Bc-nCT#wQ$S?;qNPsEN=p8IRYi)ZSbIsw}~nzIse2wA1QIc304EKSg?RxaLPg4&`MeW?Erw2U@yXz zihFV%0y|8X0fr7njx@M9;I@G00NW#|Y$A#UK28if6C@k}PVgJpF0xr6x={cY09^4y z`v{$X`VQ9IeYmH2A?%{$R$lBg=s;a%)NhO>NG6i4Tud{9fAVe8^Emy}QUGe5(u?s+ z(H%(5yhSHg3W3N#zC#)VHZf(2dc)3%CwK|2P53=A07R%UF7SY)@yg6rjER7__$-Z0 z1bU>;mb_GeM~O{wa+1Cv#sNPyts|8d-a*P8CmvWx84;RYbh*NclkPf%#3(yDO0H`P zkMYANP1l9v)|1kP!>uA{w(R!jQQ>wD$%-+sUO1G4Cezx&B~1zAD}m0S^$Aa}SliI? z^0^ER=nvrFpgtqE&zz%HxQt`bIF$e+LNvfV3GJzYClhiUsbqfZH?|KP@+Zd<@Yixz z^YzW!l*iNQ9+S(oJng79f-b^nPpebgFJn(`ePpOd+j%oImri^xy-RsJv(IkSIZPg} zMd$L{&6Y^Cc}@0Z$>W2%Jj_XrreMs{EAUe8bQ|RJH&LKtZw- zz|C88NcwlZR)fJmwRK=Xn&YO-eJ2&O_c3%0+jyzGfQ_(nY{P&pJ&JFR{}LXQq!>8RG~i% zMj?xoo%1zBM3j4J?FdE2#cF5(@P`}?i_SrgVSP_1-n(^cFN!y#@ZRiy<;#XFnE0h? zh{PL2)eyHga#$}D8jb<%haZx=vVU$|DIgOxqu4p-3}!#nge5wHWV$7_yY#yz_VbxN zui*kNSOlDj;wKBb&7TMam61Jrc4QWICw*b*6B*x@JSllDVkc0w*xBfxX!G(y(~Q*l zDE<*#nt{mxp>YNeg)2q`mLMOb&UeEbRk^M{&oW)0*JJ3V;e&HeJ zzn|~dlD(Sm&4Qj_;iCONLWh5?XdF)vH!6t`xJD#xfdEc3k+- zaM@Ycpr%z6E)yXzP&o;?3=!{=pQ6Gz*5uP%36XtU>a6X1`*KfE{4DwTu!hSr4k4kNf-h*@>^(=rgInbvKL1Hi} zYl8Ja=QDD<>F-T;Zkz}NgJ8OO!gO^kosRXFzsOx_Qt+}Tj8?1h1l|q=;JeSoIS;{i z9)djVEV@$ECa)=}#h-Lr60E0+*^xR8E~hBXJiJA4R|$kZ`L_VUC;1KQ0GE=+o(En; z^AF&8uJuQoU|Ha+AQtM6#dbEv`kNbrRnG2a>xtWv43>b^VYITg9bdOLcRO9H8)x@B zZ5q41*<`Ke&3?ys;Z{U8!oSG7@8})=X709`)>hax7XE|-KZ6@@9*H`Fy3~l~l;2Hp zd$m?)cKc6hMpC+VIdaWKofhtP{ zGw3XhYu;R!gePZBvZLqT<9$`@*uyQ!$>IK^$(F{uQa$(o{ff$mjYt6~67%;n_``pX z)l5ER4AY9B5cDCEVwgdHF-#d!?mVE-+sS{^I1Kejgn4?u!~Y?J%ImN5?OOi(*{Y`N z+(;5)z1eKf={K^_qh=pr$EXdVKckKF*cqL~;A6IvyAutNjD*Js49UosLaTAmf0QG( zMe%ZZ*|dEJ5pV>$(yVtsYy9vW`w#*&=mImfPpiB=IKzTj@Fu=;x@Y%pW$LcGGSy#f zROx5$$o#ZU`57Akk4xncl(UJus2_Cgewn`roQW1^mi+%kP!lBdNClhOOucGj2!cT> zSs}?l@!*Yt`veLYm>r<<+Sz_rT_6z%9QkwU$>#N`)6SI@E3N5B^9^2GcdDBm2C*ZU z7iS;A8dKj7s#mV{hc<@&H>H#hUQa3SAPMcPiQn+y=KZFEy^g9g zuZC2S0g0TBliz-G4DDj^p;mLg_W}bnU#u(U8FRT%E^BLVB)TV|{Bvj>s$;bpNnxO* z`R00TxW-W>8o_@3msDLhOYeV@5+mmKTm$S6iWpLS97`Qn6=nSt&zqG1c#>uc=Xzez zfg+G=bC2uh*`MXxLs8+M^YR%{%?rS3+2kH-eJ+)L8Wtw+@`vX7A>?cUb``-1A4Dj) z{3!4;Z`t}w8o&_q2k77^vP6aupc69z_S<(Jf)zP4b4HSk(d#qGcXDe$Vs*%tpj?=X z99QOXEj}{TY9C@97ap9FxM+=u`OD>pEmgmk);;zKtfa#FweRm92anRi`n9LPJcz_W zRIn{P=0)q*n&A+_u|IbGTGlHH*wS9VnST@fJEZ^R%{|icVdT+7!(bBk4fzN8dzc5< zxydT!cUY^e(e6N|wJPWixPxw1R~>ZW*M05(diLm0HCMZA?{`O&BU<)-LU4i#?U1$F zZBsV00jt|>RqkeLYjw3%85ur0G<0;Bm02N*Ae(@5_t&#_Mue49m4ajowUgj^|C7URBZ6 z$iZ{KSFZvt0pb_ilZQq8wSqT5_()|nPM`zYIB*-ZW19ixQuzV(ljG%xMcU0xwfzD* zboV};rqmILBtwCq#c1|durj;JwoH%kM@gB{r4B9AYE2F5Dvw#+V6a#X*%r0gmjwqO z(-=l|XIxXuPG~i5%eU>TEM+>wvW?44dNX^STgns#Aqd52*0@X`v>R9_+iG%QubA&Y z_DRwET9{vO?aFfj1Cg-Uh28hh_4O$F6L4GB$le@V*jrs$2lWiZ?v}FmRs4^#b-fB26@$ZP zHog{hcq)NF>0eS;yPDX{cm*thoSOr`GEOm?QcPqTX_0=pX!Z{WOe{004I<&dCYQ6`Qb z;XiESP$nB}go$Af;yBCQ7yyWTe3r7;qR@eG7*Xg$8M$BtvsCE|{XhSN>U%09^i$eN zNTi??8J!lO*;B6q2aA8#EAgj&bjW0A;8?`W)jyfqxy)b{R) zj>`X0E38_V)K#>w9d*p{tv%Q= zlIrbAC2hk)ed8S_tzq+;uBPPLWV&h1nx=GeUHjUe#+%jr{&ky^-MyWgl7}Dd*n}@6 zH?OO()zz(`_!0b4?a(L4I&CkyyeKU+a`HgY&}fE{6-$}5h~VNyX%x}u1X!FT6);Ho zO?*xppL-C`zcu%O|1dadgZ7>5xZ{qFq_wQlHW{>tQb?_d7k>KvmR3|mntcRIxz=uP zhoZj9YJGRXT{}?Acn>Q*8*NSYcke~)s&{X9f3h{2&AR=e_6`00qt|4{#xjGSKJw+R zpmHA_W0iGA-eniufM2o$*dwiYC_OWa+s=0Zra-foI)Tc)7qmauj~NuNmhb*I z#t$)m>G4~$$&Wb!a_+w<=H3QhJZ#dr86ai{xNyny387Ma!R$YppMBJa`rEb$+qcx@ zpNV+iK{dLy@4zQsF!le9cIQTYk#-ji`XUX_t+yj{V@9O$B4eIoSXww0i#zaZdA?VG zdzL05f8Gmva7Lc%f>(0=$mi=5%FYWd3f7WO!deAF9#S1FQ{@RB%fa@83|6Qz^-$f# zb?8+_;OYj*e>)PFfCB~#H|;;)Q`O_#Q2s!XuZ@?OJ*qMmFY$=KHioD1GVWpDtn6&v zxKWwhx-r>}`kI}ep3Syi?z`+prs++2Qen3DnL)?zRxpjSx#C}(FMjy*e_FAxf<3I9 zb?vo3F0XqT7a+7Pq3-3jhDBBa#xSt4a%?OmhzGH9#*R|~n3eWv6a`NH#ewTgiT2(U z>jli($Dcq^n2}x&-g4B0O^Le?KT@B-xS=S#!4R@1{X5@|N8p&3YDeZo3P(@Ow{&}P z$#W6ANR#5-Om;@LO8fW?;F~T1ewvf-2X&l5h{c+wDabQD%?GHGn3TQi&VPuSV=q7o z6Iuc|H}KwjVpLGrYLA2Tq=YpAuYlyi2Y{3P>OXGdFU+*H-Lq|?ZDyt|vyF}+&lzz~ zuO@#7v?#z-v1(xQNuvOo36`(qXNT8ah*Ke3kf4!&10qI#+Dfc`aKOk;v|BBLM1#M%u&5aoLx5_D-7?Brz$phcaC88(dk__GHmwm>!@ ze_(bDbo{_Z>t~9PX;p-JRDTflsH}4p{F)JuSdVsqZ2<9rI4flghJ|DK6^N^26u5ims&^>hCyVIu zZ+d+`ua^+2ot_}8^8n5YmJ+WJa=1Ze7WsJK6&JS!`5eUWLs2sF{pYNHbPGLYwRJW~%Mj(*>!Pb=4^8G28brjy8rZ=J85nb*M6a({M$V&iN;6%v~CcJN5sM!4QnQO2aXiak+z#biK-d zSQ%SuMZ&ddax#RuRVuBXuzl_Lb)|+X-HOT^)h6fWYb%;>3|q>dFyh8oOjk`-j zINnQIr$Mh-etUALyGkL4pNPZec^&36ZSuHn@}t0=C$u^*;U7r7Aw)+!_n4m3zd83B z>p|TH{L#LL3Xfv{!$bOci(bd#!A}kgARZ$NNTM}zxdkdv-Uwux%(n365JyY&BWk4} zHT`=DG%D~1AdWy!*sB831b!nKikV15tDKogBNqIWAlagpCo-VYJ%h3j;!on7ZeWeP zgx!ntPf-@crsPrS=r`n7KD$@0Xdz#VeCY32am6DWfa-MMgTzM+yfL}6D47;{QFsv> zwaD(HL>`s>*<^NR29&Ga(QK?s(JN;sCf)%bq;q`YuV?Ps%|3gV&)2BjAG`c=9#HPx zeOIkx#!R}{5GJ?AV!WFEK!kVlo{+8?-)#gWnxH zqHON!eg=s(zV7Vh%z;t^TzRy6YOHbj!Gr8R<&^&NY`5>jw`bTc$Wq!9<$5m@QW~2? zVVWi~ro*Tij(WdDT0Ez&eaFA=WM}8eeg1J8eg?P7@3BT@ ztsHm+D42+KhRYF}Bb+AIa_j|IcbYs7kq|=o3<$HL0AmS8x$Nv|@*PKp{D(stjk1rl zL?8%e!H-_GJAKz(0Dptf_*Ys>#bn(oP>-CeX_z1)HAETn{dhz5N&Z%0KNesEKe8W@ zmVv>RYp!V-9BBFE>?;@P%uDMA2MIh#fBY7Ny#GOKshnI@*HF#Qt*oE#5v|?lRGqjp z<9Y<#mAw48D1j0|$cT0rT#EqI(JYC52Cs-~(=RPYluYe}&pNIA8Y0S{2B>FpI{ouZ z=I80@bb49>_St^CL!SWGVTSqW4f&A(40J@uXkM_!iv9|6p%PMr>Xb-J&4bt{0>+kD zTm||_$O+bYduA8wJUlkOC8PVy+Rtdy?5y%**3zoH&y2V{$EQ$s*fDh@+lAxN*d&%s z@-h^eNvO;v3(#;%aC9^Nr>C*i5qKy#O<@wmpT+ z@L;E2A5c(@4#N>KZrN7Ng>51FiOAli8q>8$qwTtjwAXyy3g>Y1!WQW~->6!}ua-6u z`AmrthJH)@P}0S75xlhXa!^5yw19Ijn?2kzGXDtA*{0pQcMrE5#_jIIEyFYO5Ai~N zTv8^A*bOugxZ40RCIYW$O!$-B@)QbUBXyf>^* z>m&D%s7E`ZLn&X!ZCvr_&6edJKzE2`ECUo~ST}nG|F$lo9=mrqLrh+PDvPy({PA{v z5_?@WG^6#HZqWszl@lg}a74yyb4r>&mSjG7{b}ISg}VP+y26~ z!44h4A9b<)UE4NAcPY1fBhikqS{>%@!Z&t4LZ9uKd-I9G!-Lqy5Oa@46VaXz;XDHE zHB`LZE8XJ#5ArY5Jo2L2^KbKRtVO{*0xC2FI>GSoj&NQvgn(LNT^>&cm4-%8dJVZa3bfCR zYeiHy_&|fRI!~i7_MsoC*6}}!_-PTPs%WZ-c(0sNUaF~du&*2$gypp*{IULC_cO|E zr`^5%cyyXQOpgFwdmQQTe5bXh2R|O$?9cL#%DKT{n0?;~J00{CL1rrbOZ@%ru`aH2d$i5h-*R0u9_c!E z2io@CY1ZnzP95)xMpJ5?$D`%V*WG%3T(CW2N*;=Kt5ea@Pi?t1etmQE_3@z*m!)m* zox$}T_7yvjcZ@I1zmJdP3cu&}X~OQ3E-DcANxlYIA#k%26KFK&{Ki6(W*+P-WEsDa z912+bcI>`3uv|ZuQr@^TQdxP`fyo1by2i+zfJ+`Zof**e?YMI&VC&n_nz}(hkO?MQ zJ2GF&WG>&B>G)hQ3$zZ&tQQdP`;a^x45>VRO^FAQV-V9|Kc!?O4^)3(D)^C%77lZr za!S|To6=_FGu9)YvHed@xKDlm`={KGPo?J{%H#h?g<7$Kp8yJ+s1_m^p%LFuHKvtY zu5TGR+wvxE*_V`m=YPgxGAp-?v|RsY%URsAFU@gd{YX`W;}9ml1hhHi9uh11f<-;I zxN$u~B=H+s8aq6Z?r7NO9hqCwX~Z)&b#^qi{KcPJ;^YgWwY+dO=U4SeYE!J`FkMsS z=coC#;HIh++9H;W7Zy0IaoiJTuL^~baIVNchoheh6a}vQziYoTE%H^;J?lHJx1wLTThb_%_)M`eM5c)S(o3#W%2Lhtcr#Cbqe;vv3v9Ygh-Qu;xuh(UI zK&ach^=o5N8iCFX>FwiP%GrVBf26`g35Pc5@i6sP?g^*fMQ!aVZpKy!1t zr6tg_&FSiDZS<}VSq!6gU1wsgFBDzjJHeH0FKjP31InMn9bx=!Nc1J}r|dmq-+G1H zYSP)gl|SJp{7x&=8?3{mW(qy?IetIXO)sPhJa2@76S5Y-sHnI^U>-qhL&l94a#2IU zuwqbN!s11MPi2wJvCvO6?ZXie?l`-mecKw^TE68Q>e!i$2OE=(J9<*AIDOfV%7=mx zS4XF>vdS@B|2Od)lL@dO4K+D!o4O+Xq0q0o2Ob@|FX=0{w57srf6#Y!cdiWbV7xcv zhdazH#(Bt)BaJ&*xyH8^7g|LR$wnwqgQD{yOG@$zu)MalfMlKF$ zuu3r5c{om-*}Y9Fq|Qf?Tv>vuC7`EijM=@2+WTQmQ4%T}G-}%%!MJ0426Z&jT=Sq_ zf75+Q%=)geHXHleoz~jK(Cp2zI|CuS_RzMSvDqt-Vi?ftAJk~J+-YB#7&`o!G0k|~ zam>+ZHH8EGc%`kQv%RlBT~U>;G1WAz>0N#Q*ynC};g)2(;r_l(OV7`m?r8da>ed%- z&fM0>dn$FxhpT(nG^Fa&nRZL}n?}v%)ykWF{r$<>hBcKmFNN1MSqyM_3vV0jAY8Kq z{>KA5tWfX(6+mwqYvEf1bMg$#O^}!n;#`>`U7JzyR0L2&K0+En0TON*VnFT%0#}(5 z0R{l%sqJ|io~}=7o1$0wMlabq>g-;s1Ijy+3m!QUm*_)wCM(8&9K52H@Nf}x2Q=qm zY&oSpGL;3*R~{Zk*H*1&HRuBVR;$&kM-Nw`Z;Jk| z^lsSq%9}L}7L#Rey+|(UV#qGK_KW2FP;Mj5(1KaQB#~Hye-`m?bP>pC=A{{8uLAPC zV<3k~ZnPd_OGNR4u7!T_~ce39TnH{5S4zjT)ff2R9<6bRL78h+-C0ix$f$+F2*}5({ zvNaabiV#pOwO>=eQnliz$t01v>Q~k`4K?X4>|XG>{sv6zAVklNeM+@PrTe&j$faSD z-MQ2Z$Ubb(xmZ34cgu=P_T(V^F@yLUXzA}qcZ6;=r7A{$93s=TAgz_iG-*d5x(o1q z`(gb`ZdF>OipVqz+%yhJ;xNIy1X`7xJk*1hYf_zS>udNCEX6mGm9Y}jagVz5HXGWc zx2b(2Y6Q>v zIw04sC?Z2a#04OTc6eJ#jo5xVsAmRGgB$o3GzQPH5z~r32xaHc?i{$F6fC7tdF# z3g7@;**^W?ovzXkEPi9EoRqc#T^FOKBeJBk=w6VfLxhLc>LJj#_+K{|P0e;}R}^FV5`y`#TxQ+_!boSJe=ZBxl0{SozAhCyf;VaMUE z`t#z|eDDiP4E$&jfGpDtLapqI0Q${22!Z7=+WZnndv zk_&Z7JB4Ij$1eyprv1O=$O+>o@Ts{_Ln@@K*25O zL;Ru_5IZJLtvuF}=brD$4HcisE;$#N{sLJ?`m|u2KvWSbV^b6bcXE35Lc)A1rip6` zFrzfZ0wxI11BD)vZC;&Elk(1=paf&^JV=cm!N9yGA2~+y;zC^>DB+K%%cCk?^is-v z530R=v_XM5OMVWH@*|MHGD_{mSy;3esQ{CrUlnaZ@W5NJGjW7hh4~@^212SrvIg3I zPtrIz${sD85CAa{)9E>LU@Z6~n_4}VZ}%NlDgPxfI91pMA&M8A{gNDH-s-Ob0)W;Y z*^vp*f0WRZVi6Buz4MauoDh`3zPp{x;>E#$y9*C^7dRUZh50W-JwrVqaWfO52cbRc zp)QX54F21j)wn&8<7=RE^IgG-rw1k`2(5%rK84E>1_q)nYgj8WG?F`4Wre|>dme27 zjLrp54%*zq3qZ6HrvtdEdKGQd?l;TJ)3B)v)N4(^u-C2-4AEHg3zf1l`s7C!1<5{9z{qK=N!t0e48-i!i`TvFRCq~WAX+ZF|%(6 z&ICl0>}6^gHMZHVQG}L`3vc}}(A~$7nm0j}ukfl*y!r-S^^z!**MrCfDMMtMu0@J7 zE?S9mKoxJ^%R}s_DjUpAczW8HZNais9zj14I@}`f5Cp^$eSmiicWCVP8s|2;NaocQ z^3l#^&drYE5SBxEF3Ph=)`uUeIcQm@tODzx~5R!asZboru(fUOC`XGa)zNKvFv z%eZSX0aKYYNRwv`_BBEV{1%D|TvZp^(0i=6V@=%${V3e^$kl_l@5zje zWcJ)H=5Y$&KM#51M6P;~IrmlK;zV?$Rz&;Y+(x|zp#;|gn~01-_`T>Bp0W6+L(#;} zmT0Ki?Ylc>DRl#ykj=)dw;h|f-4;{s!;_>o>5C-ez42tkhsR(m2*qNdjA3=m>^GQK zE34=WnVsR_?U|SlkJ}!-hsRMsAP$B{zW2-I45jn^JJkuqNi66m=^?@zgD);;ABl?r zR4kP3#ZVk9R;=m>1YuvOl_8RhgmW1G>7y)p)qxNHm5JhDte1)yTI{fiq}Ys|Igm^r zU=L=_oXJcVwyA;Uji|9t9v-3MrAmRRPRPT95@UoKfUT9Q1x97um8qx1(Z|^_T%8Qc zE_NcwY~Ce+kTkyk0M_AEj4cQ}RuLnoV~xMwkJBJrHAJ;k1)C6jX=XS{;!TihB+qcZ z%mmaYzez-#JfLD!TjB<@GtjNhtoP}zZ5!-tzbq7dY-r!0ArlBYgJI|FE7XCXSn6ZD zwp`Xd9qF+eY;J$R=(wA!+jTmFgff#N{m#KD>;O`5{WId0CNm&wxD&Y(k@%W0=^I|w6F(YTNJITI%v7(o0NUX zwYs1y=rQl2e$e$asd9*VOUnpf4TK-nTT(^+J`c!A$(1uNJfJyFPfrBjeHX*;oe2aX z7TT2`qsilUJ@?#Q?3H(uGp7uYB_k>6&XLEThMfO5>_0y8p@}s{zB{@`3ArVFn_iE9 zfudpuT%y6BE3Fp}+?|38BPdv8fMpjUK;f}49;#-a%a<%{>FB$suVuXM^Qc*R*+3Ymn^uV_vDooeYm*MvgVE%~0QK7FfYiFI|m(PaVh#>u-E4G zwgwR<3;08ul*hBU9w2>iS%mz)(Jp7jfB`rU235*VMd`IJ%eNgXx#b%*dY0m;kgxTg zl~G?a93-)3U(|kOsB;rQo7rjnE5p{PyDR37nW*es;TSbQ-qgx5=5l4tvd?kp(*M{a zMm2(kV}wIJ*ZrA~9_#~!BUA;b%Q4)bki^FwDpIl*3{m)9zswKgJT9aB6L2@J3#m&eM3&8N>mWkCXj?Qn>Gb3hjq&rMA5fl`XiCVR?|}z}YQ2hT>KK-n%oM1A z@ErpE0@DK^IpVs&UJgJwu1cvUqTt_lb$<^Ql%+V49_ZiMpJgAoCJS)xh(5BQYCVd%a)R2=s7+zcu?G>!Hz!qilJbY z7nh@Mu~qrD&bdtaw$;k6zyo%L73vlCDDwLK`L7+N-_dHn1CHm<<{v%qxbocNkF(C> z%>LlQ_NZnG>2UsX5H($_O}>3*CVTNVrys&$m1pveUD#~yyi-13u04hn-;0kCSY61o zi#N!3KB)Zu!J$huDCH?^0BVzBTI7R7oBnw5MMp`k{u#w3KdRjaA9(gsEz=$=+a>+D zI@fNw{n8D8oB=<`Y?p4jV4e%dT+S{z<{7^IBZtgvmps4H-ufBl8n}51sKX`z__;XF zri;!WdQ3S#wi$Pfjd6=}`i%3v--}xrU-};Zdwj1H=Llzr^mv4lYVc){cc2O#VBhef z6tgXHc2A~nAL2UVZd{o?e2}rxai%(aP&v=TJIl6=8*dl4tm{43^t9`}_Z+WHV`+1o z56S6N3M(nc`;uc3j2D|r7(`5rKOGw|lqzx5-Q-t3l~uwl13JTFvDuBW0X6y1Tos!0 zMNhJymy0>hAJ0e_G07y8Kcd;giv1ox4vGQz3lH4R4l1AF*Bw-pG>*P<`BT}%!WNVO zJM`jo+Ek8~TFHhjO7I^6=YkBNm>D$ScC$+3edQJQO3?AtQ;r}g@?bEXFFH?K1jc#( zJU;(Ne7=~FWpRWiJa)6ECjZSx*``MyRgNA&$zt~0v+SHW$U_LbNWn38pi&%b4SWa> zW45Z0sS_13ul3;NyP~MC=xXFce+u#f(wTmN4I%ypN_((_o{!+XR;UzaYb~r~fX~H; zz_t!&v>m)2C1H+xxMxdX$NA$(k@q)=rz(0%Su{A;AcBb1^51GSMo>ZNS*hM)C^H=G zy?h(eXTi~|)eIiJWpqujRQW&prsTlbj{TbxPE~(@FsQoXC#C_T#~&)|o&YUC&wZXy z*mSwZ5;gqNQPY&{)0gYJeQc~}c}DdxSL^g9Tf5Do2Un5ui&W}xr&b642Nc29u1+@X zzIpf1_-(yICd-OSZBz9<`Uc&}25r+(i?+V%WQA$%s#hADR@Y3eZd}#JG!?7sJAPYH zU$J83{>rq)0OtnfY<*9)3Zg*rXx0mC3T13vhE;BX%MCF~T$ElR;X!5L=H@mPZo#+= z*5zU=D=&`u>tlWuu7}3B88r(Dw@0|*VxPZQwMuhHqx?w6m6tU9n6~(TsrlzQ|0_+& zQEuPsP~K8rWbQ+1ZrHo`3;Mn6<4^Ql!Mc^>tgBl&&5rb3amA+Y zgWb%!WYyC)oTm{jHV6~5rm4cpdu)h46E zVl{=jQfYNM)fF;XEe@lJtM{c69W_>~cSCb(pc#~Y%>!(CD6KVUbUH`UW>D+Yn#;7> z5|sF;1dZ#lN0QNi+iKKXmg#gL2{&5ZfoSp**Bow7H`LZfS-Sm=*E{-l?C9%wo%HM? zH-DJ_B{X#t?3@vW?ADSyIj3pxze%3|icc_Yho_I7ix+x0){yBsxDZWPGYFlTuG zz5Iy!w*HY@x%#%JZfWm)xQkUNk9TXedPA*^SMucNGF&~^a7DfjsYaQVbvSdlXdNa+CcCJiAc;1VRq^cMS!2#0B9>kh22OS5;l-bxuqapx=O>LvS)5xMXj< zLu7{TD(kyv=8<)eAO38zAcC2j7wIdYy54r7JxGWSva+Q&(E~?1nULkuIo=-h7t@p zUWA`@F&NWirK<2kV=cJq8gM<~Q#BfuIA`qDfVV#kyPTD~ys+7G&y+vXGY67wm9XKO zTL;UAS%=};TdoKAFZ1E2l4FlcDS2VVtiuV*mERV3{QY9JQ@b z_Tr;&;C&{!OzX=6&1^L+UJDRU$wO2hV#vF6S4qtSz`sF>W^4g(2zM-K#hfZd-NLPrQ6Himk zkGE)jVsDc5=2QZoN9YO4_7m)BSa(q{3Q#ab-~tm2SelqWilI^RvL8<<>|zGEA;{s1 zJBCb3{E!<88OyM2sBRd35K2ROE;+@vsty4}ks`M*KtV*wi#HTKk?aCII6H0|4#z@yQdp4eo(^Gqz2Y0w=Ni60^q4@kOGHy*YU?L7-C^NG`@m%P)g+@<11{=zVs*y zoBiMtBPE+BkDXgdF|h*7Ue2qUz?P4NWv#(A0ik&b1RX`ILF=luzno#?<5@TY7lY^| zfNu3F5FiW>&nWjA7s2R?iorAXU#j)|C%EE?KP8209Nxd2E5S@+)C%Psp1mMZ4O^j@ z09=XG?c6VLztCf;=1dbP$E3LRHjrDe7G!k=jzQMx4Tn3!;dfj;dwX~!`I)5A);<)~ zAfz|@5;wVeBLT0=QdVs@ShZEwGI?{?fUBORy{ z^^BUu4?Py@ z9_S8<8?oNMbpCtnO~^SKe-VqqrHl$fpu9w)AmEz#KB4HEvH>K>vUZf{Kte8(ka;)| zL<*nR=wQb)0V-GTr8FXO{YbeE3{*w?vSq-*=Jc8KF8p)Im=&BMwOQ~ zjj@*eSmkF+u&WiZde|e4C1_WEE4pLi#E$sfciH5`?v=cDH+yOEG30z1i}v6cH3p7s zJ(&bxk2GOz8Blk)7PW_Jz0i!ym<`25YoRCNtPqJ8l|G_hk$zQ$fonvJ3+oZ8Br*oD z4oeWTg~DkNPw=w%l--6EOYe$>OWHLaEatr!^#r-eZQ@#WnI=$SDAk0WTJXymtp=wn zqBEe_Rc*Y(?RQpLk#MC2ir#4EP7|^%wH}?Z+-uUQb-oIqJ4as zwP*J4#NEch3QY$a8oBAn;BfN|n~x6+!>#xH=;-sAz>%q`BVY}s+mkPkKL6eqr(b*M zfnUBzI;DeDIS~vf8V`GQ+s4F7Yn8*|3dYlgk8hm&j0G7u{0U#oRBp8dEOyid+Tb7P z^)@@b>G_B7sMDK3eA0S{>=wD5-#~Apf|VU>i+;-(*)EMDIfAb9Mi_OFi}r|EaDd4R1tN^A`xhM1i zhzBDlPr55zz)5Zm7RSfkF)>Th7Yv2-@IpQn{xC-_X!@t z+xs6l{?L059PQir%C1e1kK}O<5wUKdoJ%HP2e4l}a#sDtxfhU$C#Kn3l6%3P zBa;L4!Gq!p9u@lv=gSN>XMhcZPT62})+v9Td*w;;U)Y_izL|U8!sPSol!yQL8vDW@ z*fZK?u!0R1*u}7g*;jR1J3TOo+e12?d>N|*pBWlrsUhVVtOH0#)D9p%YMHySQea5( z@K!)Vg)!Dt3>%SPLioiakzobrjxbFqSD=Y^A=Yy*(t3T-Xm>O^OX0)h6&VBo`H{Bh zRaYbvfITQ`ARqV>$T`MeUlbXnUC|Q=ELg0b0OBXHfX8Yp$qlf54CD;e@EbgHYS+W0_{NwqhgBDWlFigGpyYLJUV-0L3e$!tFxnX zU1cAltL&{jRRK`!%(tN5%C9fhYud-2E_#T43u~g3&?qp|kbXm|EhTFb6AvpDnsNku zVQC(QhCcHTxDcaOmN_N=L0=Tw#Bi zr24%PFZh&d{~DS&PA&Gqd|&LMCvZgN@IZvzCe#7?MEyZ$s8eZ*V53Wb@uQ$jU?zaX z3OdgGn3mBV35I}NhiE)c3v)mWhT6w>Go*yiw@utCWMask$DS5di+ETP3M}d;JZbb< z`RS*j;ZM*9iD8ENF@H?cQsapg3Av zs&NkQ$2lbbwgf7PKC%0Q!O38dhlv|W)^wgfE@=-Uuq7usR?e=c3B}Cf;8Qf0Kz9hg z$NYD6a=dV+#!*g!x&os{bmoBvrl%ixps?S#TE#q;V+O_aiG!hjT+u_|7z@*C6Y=+G zj=({zxTk4hVSw_)lCnkqU%JPso$p6(-l5|m=VpFJra@H(WX}BgCp;#t>G_pZu&Tva z=hn4YL~=FEf1j$*$unHIg2+b9eJ@XyCr&thZxq+kfUsQi?b5m}`1agMmq$R^Wi*;j z=U3u<+XndVWZRhTBwQ`Iu0IWQekN*PG2es9le&NdlzG&N`8g`QhGW zI4#y59Tc-J?iQ|HWSE$-_V6oCI2IF~j)iMfTxI!nL;$&`(L1_CX(`EtL|%mpkQKV3J-kp!%e7AqP- z;*}@{L@l8J;7#;jFkkS#n8~XmKa4d>qsS;b`tX}c%?DuLY=NZy=p6!F8?u|g%!4&ucNu{jr& z#;E%-cVza%MUr`8nv3$%5^|dC`TQ8cf3UdS;==2#Kyoi=)WS zuExAbpPy5b=Lnja7f5tjf))!Shbo-OOZb_Banj<-U1Kzt^To!nCg;aP6=cws3=9#vf#SJYnC;1(SqKAbTFsjoB{Oh7Ak-O94!xqemm}{z|MZ$@uW$~=ASFv~D zPq}Zwp~YSXgx$sFTC9+TJKF_EK9<|*7SH+Iws(nsQ%09Km$_YVsp+6yaq)!69dhx3 z=jXW?nZR=Gm0xhknTf?m1G0GWp$g`fGBK9eT^G*-ZFh3FT{ICSYznvDg-y-(d2U^c zoj6Rv>W^L-a+h9sND*7f%M>$(jF;NA7hmafOIz%P3#TZzwrPl`#7idhpYvID3Z%6Kh^BU9= zouAjJ7LFjVU0rkxS|C8@w5=r$EVQqM$CR4bq9Ycr3n`1{G_wm{g3}3X^Y!>9Kq)nBTru0uu z6`7wZr&iU?Of+=X1I;b>A9Eld zaZV^d%YVUGX8%ge!s4;KCEEPISzAjVzF-`)|G8vK1t%mX8^t)_3CMAM%RCXv(I>2O z5i<7#!!dCY1Jef=qLhCzk^gTO@{pvV4~S;O-X%*n@?wO@gDnd7ST?;=Ih$i3m?m0) z3JTO`R0ok?c$z*(IW)X$*GWl2Fhkfbl7TPrC;2(y55A0clz1Z{G~)=zl{A(h9!Hs? zfO1JNOoJUf*of7OQnPUPws8TiMz9f3F1ms5wdt*aYXX651_G>T^&NMt4&8BwvMb;) z>AEsk9mupNj4k%cP^Nul>*hOeXjA)LWmjFUGdbWZn;nfX#qVbW1AhMiyYlumA$G^@ zp*6Fw09YM3@U;UON5H1`uFtGS1)JtiC2rJ(8~P6f>?Y)q2)8Az_g9cF`$xn$y0PAc z^PNy>0*ppc7)mOWUTwra@CF6h@Sp_I8#jwk=mWo$!AVgyIE3Nx29irtqUvx|w#WNo z-44Av6kpT1rn%fw<3}-_^}P+&GHr>?X>*$$Hod0I$UVXC^*Vy3^ zU2PUS52ihK3safOLGsV|DvP-sWdXyj?Y)`!YQCm@J&IZz|PB zLdl?4qgk#qm9f6A)|l6AGFiJnu~x6ca52d9|AuS49B~oEp?m<8BZPwv(*wUMYL}zH z;F4^O%3DjUrCs+I{o(HYcA6-v$UA>%dc?S zOCvoa(VM0^I-cAT4u(Se-^^s*xOa5&(>+rjv%&NDq)Tr#>s_q!?GsKtK>2#->A>jN zV279QdG)osxqd)*6!=1ZbkpRg?;MruP2xZ}P**+-APU_jpWIH^d`g0V!w2{RTnYKS zId<;1znx)J%9#+n(-RZZ5mutymVv$t>@G;$-bv0#Q~~9~0eKHs9LoAZ8-SC9=84vZ zY}ZJ6Sxn~V(IrL=5`n*TeozmPdr#Xj7IG9R_RxJrBfg0VWSYGwdyru-pP|~)NYHs5 zcXSz2{sk_uvr3FEHL650Ju~B>#z`0Yl&XPWi)(!qu64?EMg}PjP8PPt1w~nA{xm_m+71ISmiCL@&!++2ZrLL#^J8-qudO{J1l!4{!4;)nCha zH-i7o>8>uRsKTy;7xj41vmgcfK@`z z+DKO6X(ab5#1d60kRL_h5!ba4TuF`~EgedJ36hSEV%Jb(kbIgF+#^g*AE?R8IvlnE zFR(vZZIPPra(&puQKGlPiBwpPL#=jJkA)r9Wooq=`QCcH%M@?{Kj3g%H)^f+WqQ3K z87>`4bTr#-{rz5)uzPdsc8`kdqWaO!o>Y03YjpPTOV^D0EfprKq0IOxPZRR5dr~9L z`;GQM*gtwhuvF*wcDA{j_ow=XIPdnjN?N@D9B3`R60<$>-1nJIZ*vFJnc=maDsHj6 zc}Al(*=klcG+As$qrqgcR99(hOchl%D{HH&Dr`o*u5M*jm8q&yZ!@iGsBJe^)taiS zYLvV5H5FW4p#$0+cm{RKrsqbj##C)lt4-QF)HgNMy-M54dSc^5z8bV z9w3uM;Sz}`CD^T%K*VuCg?VZoysC^1b#Hy(fvterg8n#PjYOI1+vDtao%+owSHBZj z6C67qq5gITYi9Uqgfp^1~8) z=Ck}3sEDFI8FGxEED;@!Krm^9U=l1SBKB@06pRSUv$blMh6geSu39_zm{zN?>$qP& zQER!>Px*{S6Y?(OnFE>8^q~ybYdnE6dN$U3sGoD?EHU41?xM9w*HOE`1fU|i9Znz+ zNh}9j$DX@ioe(!{|0(us(E6WJ{0tK-bd210R)XiS37cG0Y^~_F9qKK49;{xG0}RxF zUnO>8zt@-VK9p}cj!r{+AlhvY-+izq&~E6Qe`+$)bG}dTvUwFJYJ0?dwQRpH+!gbC zHn3m6t`7Usxo3)>o{iTc#UTGj=ji-7;3+pCPrIH_4xpH$PC@m7QcxcQWDF3-oHiZx zs0fyr1T;r#;#3V~&K}?=$Hoqx29P_lS6%x4%N|tSgGOZjVf-3{Y2z0^SGE_*amVRA zT{k~8rWwt2e5Rph9K6Ln4K;OjH4SW2s;T31HK~sAnueP@(w2tK2K>pnKaIIpleZoj zk|jb7p;hET4?r7qoMa90O?(WKiJ zz}d!eAiZ+-trZ!SxdON~lDBj`nTaZU*i^To=C0Ydc>_L`PQ~M39;bK>0=R@rlKiwf zfmuP!06e7FhU?=D1+x9%BcUYa62G`Iu(D9=#II^nrkuZ1TUwNtVtD+oQ*SsrE7sXr z#X&u=pxz3_@~7zm*0W+$m8FHPZTj#fcF&XlP+8eh*;!F#sH~}|s8NRB{}qLgh5aUT zUWo;jB4mZ8BSbH1A|n|-j?;zcHuT{?(Cw@VxX9jF(*y{j7K9Bm2ya0~79N*;m>3m{ z+vjmOi~OX-GYf)FLjmFjtme6vWUGjUj25D6$n*Y;cq?bS9-E-CKp$;~u1DNEIqo`f zx^k%)bFd#00;rqp1^*UeTW2N1nuPc;-I;Wje;w>z*@@nL#Jfc}rF%Ci_kkfIzh>6L zUXu2=h+VJ}RlFEJ1QmQDe%u%Pktbjyw=E#B{-#FN+SEi!Ihj?m&!$hM&jhvt0iZvn zH<&vz33W2lXJr2rVD7*NzdZ0OLo=|JV>ZC!rTI5SxcKb)HS7b{FNva|maV|y9W zpO8Md;{9H8Nz^B>>*)Y;KSD3WQX`OBk*w8=juQhF^$?V!I?=AyNjK zb2%q;d>gLdI@p~pSa(ZJ0Q?~HQvl<0(X2uC%-HN0Bx<%mrW+vxsL$)D&jsjeS;kOP14C7uOu_RZloBX7a^se$ zYCstm1EZC<3}3k83x>gWSvD}#bw}4wpi}7C%2eysSKo2<)vc1=ele_hcFiPWPhX;*r-y=^v;#EGQe)bVZuroD0{NV5~J2=lhVraX; zy^mefHE7&$_u;PIp~0R^3II|z!G|9n#@{Te1qc>dkgBkror$Ji!B6vD)${0EF=Cqm zXhm&Q*%^Wq?Z)T)=;#nK@TkTj6cKb;TqD5$CYh=+4mX8_S5hqnIfyyw#kW(Rg7Z`^ z%_2dt7kPooX8^P8Zu3X{dw*?kR1q?i1=WECh)i}J_42)W;#y>aAKl+O)Gbk>y5!}` z8zH}1$QB!Kk}D?%DaF-;JZj`P%6b8A%zF|X@qI5Hr zT*;E6D6%X|zLp(Xkri1{grdlbtT>8g<2c53UDs9B)VQfJZU_nCr746g4NjZVECfm+ zX_~S$V_C-h^(bXs#*bf0(iTQvNGVHAM_EhR#we80E^8U(+j;2n`#k5|D_zO9lK%Iz ztrtsII?s7~&hz?t@>}@+INasRz-a7kTpa2O_-swVHOnOXMtfIJM1GEXM4%rJ7f1U?ci4Z>A(3aJec!?v-5S>e> za$8BTue$2^BBYq#v$ip**)OhTy>{h4Y+?D!>~xRKr0ja?sV_~s8y}H8_3RCoC-2%#XrZUsl<#o#Y4}6G#|MOH^5{8W~Us&q4jC5YkC7^n}&~2g~f9{j>Rhoy^TnLIemZ3X`N4 zewP0=9JFr5H9I+tUvboPJ$4c}ew^#p3Sk3gdAJ*Ju;QMQL|RgmD}qf3h8yR@#m{PY zyp?1YcbpG=t64k*=)qwR29v8gA{JX+Q>)oxa|UW{7G?=9buG3G?LoPX2InHvK*VP= zU9%=sV=6)-Sc$?ez`y%}!S<-qd7_8w|$`S;*`~d^f1jMgP?r5-$8CvP0A3 zH$zX}DbxbKG@Zx@KBKv`4CKq+%HKT>OaJ7%Pm&L-AmbJB-Gbn4KuF}O09WgTnPYxC zN(t6iX^Q))c`Yo1lRw$J_b0P-H(5maUD)m-olvjFNAgatc~Mulf|?9FpzTb-e3=6Kz_~{w>+h^7}7Z{0?jNMXR;OVpEnmJSLRw<`Qh+dKAn>A>2p({NY)4GP-oB z!>f!(uWfX){-oc|PTFDQv?}9{W~<5Lw3(;k8&~5aXXAabSRVq~d*gVZ{y^_Q+{7`& zO=xpYx_1>Tn{@`QkU;OM`RuF~ns>?6zx!Wohyp4oOm3F{NKdX_p8w_Y)vK3FOP8fzqrcKzoif1s8Z0>Y~C1%EOyTY3O3LViQVFBT0GNc3*2t zbg6F>04I4^M&Lp^FVI?Nqklx!q_2RVXf4gWBq= ziDO{>0KE`FLCFA2zQrgjVBQZ>Bn&_j2@xMRN=%1kmW?5#v)E-m1iJx^$Z=x@6Dit^ zEI^=e;XGZ25fD2H5-%nChlHtvB0Z4AZKk7^1qLSu@pt(B_&LIC1Nb@0?EF9FZSmh& zoUR!B9{*2yYo04RfEY(RR5Br%%U`+GBPU- zGi!E+Oich#6LB!qe}PRv=$uhxpTXw{=?H=6kRlNCKsA*+88XB8vt(_dKp`U2MVEts zOoT8F3`6Mwi_fjJyM2~T9!CTz&2RIE{6nfi_V0v&Hve*l{V=20P}f#cT(ax}EG>tI z=5;gJ;FPFSChlj>p3T1klc2h8Z-5Mx1>bIj#?%Ei2$ zK->Wgak5|5F2sllseG0s=5W`N&4{^F?3pkMdaiK0b8eq$1Y-tR>bLpBh{<24w4)dK zCo=MiP&^o9uR^kphgKM}n9pbkDt{=NqtC8z&$`jW(@r2}L`JkHtgc zUR#Tz&aeSqDmUihgP049ZsD*gjCrLQn)@CqY7x&&1=>=67R<2SU0q^EluxQN^JgZ% z3z&$QIMK_K0P4n)`5C=@H*#G^`2TXf#o}|Z<}v8}-(;UUckUls+LteHZxQ$GqzgaP zQvg%1TuJvhPHv~TKYFpg-uZ}Sb-k-0dk&ptxCuW3)-B41h$Dj*E*$>?kpyvbv~e7C zW{~_rn}YUh;d4d#rXX{Ruc3WFrQi9D{LB}{2Bdr1U<^?Bij86waS)v3HS2lY4z;5k z0%L;76$_4d^D~BP5sPDk{lHHc+I8SRf>>fkf?P8oFasok5>zhKINXg$ Pzvhpd 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%0A~bdN|@(eD)(+XvR-;i@X!3K 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 nKMo62xBes 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%0D;_2!srI{Cbme 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%0D|Tfb@JOyNFCM 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%0AFu9=hl{z zNx#Dzv5D!$V!UF%!I2STf^WIoWy3-Xi(nc$(SDpy}2( zlMFhiCpL|zQ|+*l^|nsK9z0LXiHV$+y9x6~x%VXw>w-5|jUh+)aq+Z1u^%Grg)9_f zQyF20gK3-VY1B*z9-^aziOIE3MxI`6(TKZbG%8rt>`c=sPVTde)`PlD%^o~qdgQ)J zo={jMezntkPpoZzIzK09nEG7?yo$dgZXJ)7!zC zhm>SGGpn`Kn^{qLA375SHCBtJ6Us%2cKB(yk99D^tzb`ru``KSZ=2sJU+j+W*Z>_G zOB)H!LpZL`va&R!hZz*2{D?g7s|N7UHDkRYX=g3_;dkGO9wec_!rj0M=J;EzUyBqy zTeUi#*ja7u&}|#>xL}S9WDvx|XRTyj2y%^uA~>Br*Q43POb#rqY;tY>j$2LS!H*5=LmvL6JP=wz=RbC{EFhl z%HYtf3)c`ogD7HfvGFF1)@ctj+A)YluH151oVLb&Ak>COkGjD!z!L{Zs~kjfhiXOP zonvjHXf-0lNGNv~RgYdL`bAM{N|nqQ>qovJrca2eGskU1{D&KJb7X9$;!>SMB-WE_ zsj<&uc`nu_+CHEZhh$Gnu@*9WJvfbZNY4$&QOZWd)ysX3bu{Fv3=1}*jU~f6dMcQ4 zw;k6tew%_}dwlcWP)kC9WEY1^_}849LbrKRISV!g`5rglaY-a)_k;o0Dr z;kR7wP8H}EqTmGxe#M0r=<|vM43APMpAi+HrA15(D$bF*G(k;6XgR)*`1)W7!ml!T zYOsWNX<{@$?7Z>*3H;TTy1lq}FyC-q(O%0DWW{abmaI3WHL1~QL167ap)N6IO7GH) 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 literal 0 HcmV?d00001 diff --git a/napcat.webui/src/backend/githubApi.ts b/napcat.webui/src/backend/githubApi.ts new file mode 100644 index 00000000..3ce4d4e1 --- /dev/null +++ b/napcat.webui/src/backend/githubApi.ts @@ -0,0 +1,66 @@ +export class githubApiManager { + public async GetBaseData(): Promise { + try { + const ConfigResponse= await fetch('https://api.github.com/repos/NapNeko/NapCatQQ', { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + }, + }); + if (ConfigResponse.status == 200) { + return await ConfigResponse.json(); + } + } catch (error) { + console.error('Error getting github data :', error); + } + return null; + } + public async GetReleasesData(): Promise { + try { + const ConfigResponse = await fetch('https://api.github.com/repos/NapNeko/NapCatQQ/releases', { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + }, + }); + if (ConfigResponse.status == 200) { + return await ConfigResponse.json(); + } + } catch (error) { + console.error('Error getting releases data:', error); + } + return null; + } + public async GetPullsData(): Promise { + try { + const ConfigResponse = await fetch('https://api.github.com/repos/NapNeko/NapCatQQ/pulls', { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + }, + }); + if (ConfigResponse.status == 200) { + return await ConfigResponse.json(); + } + } catch (error) { + console.error('Error getting Pulls data:', error); + } + return null; + } + public async GetContributors(): Promise { + try { + const ConfigResponse = await fetch('https://api.github.com/repos/NapNeko/NapCatQQ/contributors', { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + }, + }); + if (ConfigResponse.status == 200) { + return await ConfigResponse.json(); + } + } catch (error) { + console.error('Error getting Pulls data:', error); + } + return null; + } +} diff --git a/napcat.webui/src/backend/log.ts b/napcat.webui/src/backend/log.ts new file mode 100644 index 00000000..32fdaac2 --- /dev/null +++ b/napcat.webui/src/backend/log.ts @@ -0,0 +1,72 @@ +import { EventSourcePolyfill } from 'event-source-polyfill'; +type LogListItem = string; +type LogListData = LogListItem[]; +let eventSourcePoly: EventSourcePolyfill | null = null; +export class LogManager { + private readonly retCredential: string; + private readonly apiPrefix: string; + + //调试时http://127.0.0.1:6099/api 打包时 ../api + constructor(retCredential: string, apiPrefix: string = '../api') { + this.retCredential = retCredential; + this.apiPrefix = apiPrefix; + } + public async GetLogList(): Promise { + try { + const ConfigResponse = await fetch(`${this.apiPrefix}/Log/GetLogList`, { + method: 'GET', + headers: { + Authorization: 'Bearer ' + this.retCredential, + 'Content-Type': 'application/json', + }, + }); + if (ConfigResponse.status == 200) { + const ConfigResponseJson = await ConfigResponse.json(); + if (ConfigResponseJson.code == 0) { + return ConfigResponseJson?.data as LogListData; + } + } + } catch (error) { + console.error('Error getting LogList:', error); + } + return [] as LogListData; + } + public async GetLog(FileName: string): Promise { + try { + const ConfigResponse = await fetch(`${this.apiPrefix}/Log/GetLog?id=${FileName}`, { + method: 'GET', + headers: { + Authorization: 'Bearer ' + this.retCredential, + 'Content-Type': 'application/json', + }, + }); + if (ConfigResponse.status == 200) { + const ConfigResponseJson = await ConfigResponse.json(); + if (ConfigResponseJson.code == 0) { + return ConfigResponseJson?.data; + } + } + } catch (error) { + console.error('Error getting LogData:', error); + } + return 'null'; + } + public async getRealTimeLogs(): Promise { + this.creatEventSource(); + return eventSourcePoly; + } + private creatEventSource() { + try { + eventSourcePoly = new EventSourcePolyfill(`${this.apiPrefix}/Log/GetLogRealTime`, { + heartbeatTimeout: 3 * 60 * 1000, + headers: { + Authorization: 'Bearer ' + this.retCredential, + Accept: 'text/event-stream', + }, + withCredentials: true, + }); + } catch (error) { + console.error('创建SSE连接出错:', error); + } + } +} diff --git a/napcat.webui/src/components/Dashboard.vue b/napcat.webui/src/components/Dashboard.vue index 8bd8a031..b46315e5 100644 --- a/napcat.webui/src/components/Dashboard.vue +++ b/napcat.webui/src/components/Dashboard.vue @@ -1,18 +1,28 @@ @@ -49,6 +64,12 @@ onMounted(() => { position: relative; z-index: 2; } +.bottom-menu { + position: fixed; + bottom: 0; + width: 100%; + z-index: 2; +} @media (max-width: 768px) { .content { @@ -56,3 +77,19 @@ onMounted(() => { } } + diff --git a/napcat.webui/src/components/QQLogin.vue b/napcat.webui/src/components/QQLogin.vue index a5e27c72..ee20d9a5 100644 --- a/napcat.webui/src/components/QQLogin.vue +++ b/napcat.webui/src/components/QQLogin.vue @@ -1,5 +1,5 @@

X0DG4=V)IhMZZ|3If_D@WM#CPM1 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