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] =?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