From e086b8707f9e5ee8a9e81480b33ac7394c3ec878 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, 22 Aug 2024 15:53:27 +0800 Subject: [PATCH] refactor: chattype --- src/common/utils/log.ts | 6 +++--- src/core/apis/file.ts | 4 ++-- src/core/apis/group.ts | 4 ++-- src/core/apis/msg.ts | 4 ++-- src/core/entities/msg.ts | 11 +---------- src/onebot/action/extends/SetInputStatus.ts | 4 ++-- src/onebot/action/file/GetFile.ts | 10 +++++----- src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts | 2 +- src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts | 2 +- src/onebot/action/go-cqhttp/UploadGroupFile.ts | 2 +- src/onebot/action/go-cqhttp/UploadPrivareFile.ts | 2 +- src/onebot/action/msg/ForwardSingleMsg.ts | 4 ++-- src/onebot/action/msg/MarkMsgAsRead.ts | 4 ++-- src/onebot/action/msg/SendMsg/create-send-elements.ts | 2 +- src/onebot/action/msg/SendMsg/handle-forward-node.ts | 4 ++-- src/onebot/action/msg/SendMsg/index.ts | 4 ++-- src/onebot/api/group.ts | 2 +- src/onebot/helper/event.ts | 6 +++--- src/onebot/helper/parseMessage.ts | 10 +++++----- src/onebot/helper/quick.ts | 6 +++--- src/onebot/index.ts | 4 ++-- 21 files changed, 44 insertions(+), 53 deletions(-) diff --git a/src/common/utils/log.ts b/src/common/utils/log.ts index a8a8b11f..e137e027 100644 --- a/src/common/utils/log.ts +++ b/src/common/utils/log.ts @@ -152,11 +152,11 @@ export function rawMessageToText(msg: RawMessage, recursiveLevel = 0): string { const tokens: string[] = []; - if (msg.chatType == ChatType.friend) { + if (msg.chatType == ChatType.KCHATTYPEC2C) { tokens.push(`私聊 (${msg.peerUin})`); - } else if (msg.chatType == ChatType.group) { + } else if (msg.chatType == ChatType.KCHATTYPEGROUP) { tokens.push(`群聊 (群 ${msg.peerUin} 的 ${msg.senderUin})`); - } else if (msg.chatType == ChatType.chatDevice) { + } else if (msg.chatType == ChatType.KCHATTYPEDATALINE) { tokens.push('移动设备'); } else /* temp */ { tokens.push(`临时消息 (${msg.peerUin})`); diff --git a/src/core/apis/file.ts b/src/core/apis/file.ts index aa9948d3..e327522e 100644 --- a/src/core/apis/file.ts +++ b/src/core/apis/file.ts @@ -179,7 +179,7 @@ export class NTQQFileApi { async addFileCache(peer: Peer, msgId: string, msgSeq: string, senderUid: string, elemId: string, elemType: string, fileSize: string, fileName: string) { let GroupData; let BuddyData; - if (peer.chatType === ChatType.group) { + if (peer.chatType === ChatType.KCHATTYPEGROUP) { GroupData = [{ groupCode: peer.peerUid, @@ -189,7 +189,7 @@ export class NTQQFileApi { groupName: 'NapCat.Cached', remark: 'NapCat.Cached', }]; - } else if (peer.chatType === ChatType.friend) { + } else if (peer.chatType === ChatType.KCHATTYPEC2C) { BuddyData = [{ category_name: 'NapCat.Cached', peerUid: peer.peerUid, diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index b37f0ff7..abe05b67 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -114,7 +114,7 @@ export class NTQQGroupApi { return await this.context.session.getMsgService().queryMsgsWithFilterEx('0', '0', '0', { chatInfo: { peerUid: GroupCode, - chatType: ChatType.group, + chatType: ChatType.KCHATTYPEGROUP, }, filterMsgType: [], filterSendersUid: uids, @@ -175,7 +175,7 @@ export class NTQQGroupApi { return await this.context.session.getMsgService().queryMsgsWithFilterEx('0', '0', '0', { chatInfo: { peerUid: GroupCode, - chatType: ChatType.group, + chatType: ChatType.KCHATTYPEGROUP, }, filterMsgType: [], filterSendersUid: uids, diff --git a/src/core/apis/msg.ts b/src/core/apis/msg.ts index aecf5570..67279708 100644 --- a/src/core/apis/msg.ts +++ b/src/core/apis/msg.ts @@ -156,7 +156,7 @@ export class NTQQMsgApi { peerOpenId: "", }; return this.context.session.getMsgService().prepareTempChat({ - chatType: ChatType.temp, + chatType: ChatType.KCHATTYPETEMPC2CFROMGROUP, peerUid: toUserUid, peerNickname: nickname, fromGroupCode: GroupCode, @@ -171,7 +171,7 @@ export class NTQQMsgApi { } async sendMsg(peer: Peer, msgElements: SendMessageElement[], waitComplete = true, timeout = 10000) { //唉? !我有个想法 - if (peer.chatType === ChatType.temp && peer.guildId && peer.guildId !== '') { + if (peer.chatType === ChatType.KCHATTYPETEMPC2CFROMGROUP && peer.guildId && peer.guildId !== '') { const member = await this.core.apis.GroupApi.getGroupMember(peer.guildId, peer.peerUid!); if (member) { await this.PrepareTempChat(peer.peerUid, peer.guildId, member.nick); diff --git a/src/core/entities/msg.ts b/src/core/entities/msg.ts index dffe6644..1c1ed936 100644 --- a/src/core/entities/msg.ts +++ b/src/core/entities/msg.ts @@ -511,17 +511,8 @@ export enum AtType { atAll = 1, atUser = 2 } - -export enum ChatType { - friend = 1, - group = 2, - chatDevice = 8, //移动设备? - temp = 100 - -} - // 来自Android分析 -export enum ChatType2 { +export enum ChatType { KCHATTYPEADELIE = 42, KCHATTYPEBUDDYNOTIFY = 5, KCHATTYPEC2C = 1, diff --git a/src/onebot/action/extends/SetInputStatus.ts b/src/onebot/action/extends/SetInputStatus.ts index 6c17f8d2..fccea293 100644 --- a/src/onebot/action/extends/SetInputStatus.ts +++ b/src/onebot/action/extends/SetInputStatus.ts @@ -24,14 +24,14 @@ export class SetInputStatus extends BaseAction { let peer: Peer; if (payload.group_id) { peer = { - chatType: ChatType.group, + chatType: ChatType.KCHATTYPEGROUP, peerUid: payload.group_id }; } else if (payload.user_id) { const uid = await NTQQUserApi.getUidByUinV2(payload.user_id); if (!uid) throw new Error('uid is empty'); peer = { - chatType: ChatType.friend, + chatType: ChatType.KCHATTYPEC2C, peerUid: uid }; } else { diff --git a/src/onebot/action/file/GetFile.ts b/src/onebot/action/file/GetFile.ts index 5d5a3cd9..428b648a 100644 --- a/src/onebot/action/file/GetFile.ts +++ b/src/onebot/action/file/GetFile.ts @@ -47,15 +47,15 @@ export class GetFileBase extends BaseAction { let peer: Peer | undefined; //识别Peer if (isGroup) { - peer = { chatType: ChatType.group, peerUid: peerUin }; + peer = { chatType: ChatType.KCHATTYPEGROUP, peerUid: peerUin }; } const PeerUid = await NTQQUserApi.getUidByUinV2(peerUin); if (PeerUid) { const isBuddy = await NTQQFriendApi.isBuddy(PeerUid); if (isBuddy) { - peer = { chatType: ChatType.friend, peerUid: PeerUid }; + peer = { chatType: ChatType.KCHATTYPEC2C, peerUid: PeerUid }; } else { - peer = { chatType: ChatType.temp, peerUid: PeerUid }; + peer = { chatType: ChatType.KCHATTYPETEMPC2CFROMGROUP, peerUid: PeerUid }; } } if (!peer) { @@ -97,8 +97,8 @@ export class GetFileBase extends BaseAction { if (NTSearchNameResult.length !== 0) { const MsgId = NTSearchNameResult[0].msgId; let peer: Peer | undefined = undefined; - if (NTSearchNameResult[0].chatType == ChatType.group) { - peer = { chatType: ChatType.group, peerUid: NTSearchNameResult[0].groupChatInfo[0].groupCode }; + if (NTSearchNameResult[0].chatType == ChatType.KCHATTYPEGROUP) { + peer = { chatType: ChatType.KCHATTYPEGROUP, peerUid: NTSearchNameResult[0].groupChatInfo[0].groupCode }; } if (!peer) { throw new Error('chattype not support'); diff --git a/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts b/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts index 31eac531..83759ab3 100644 --- a/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts +++ b/src/onebot/action/go-cqhttp/GetFriendMsgHistory.ts @@ -38,7 +38,7 @@ export default class GetFriendMsgHistory extends BaseAction { const isReverseOrder = payload.reverseOrder || true; if (!uid) throw `记录${payload.user_id}不存在`; const friend = await NTQQFriendApi.isBuddy(uid); - const peer = { chatType: friend ? ChatType.friend : ChatType.temp, peerUid: uid }; + const peer = { chatType: friend ? ChatType.KCHATTYPEC2C : ChatType.KCHATTYPETEMPC2CFROMGROUP, peerUid: uid }; //拉取消息 let msgList: RawMessage[]; diff --git a/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts b/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts index 008e2a8a..d714f8ea 100644 --- a/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts +++ b/src/onebot/action/go-cqhttp/GetGroupMsgHistory.ts @@ -33,7 +33,7 @@ export default class GoCQHTTPGetGroupMsgHistory extends BaseAction { } const sendFileEle: SendFileElement = await SendMsgElementConstructor.file(this.CoreContext, downloadResult.path, payload.name, payload.folder_id); await sendMsg(this.CoreContext, { - chatType: ChatType.group, + chatType: ChatType.KCHATTYPEGROUP, peerUid: payload.group_id.toString(), }, [sendFileEle], [], true); return null; diff --git a/src/onebot/action/go-cqhttp/UploadPrivareFile.ts b/src/onebot/action/go-cqhttp/UploadPrivareFile.ts index cef525c3..70800939 100644 --- a/src/onebot/action/go-cqhttp/UploadPrivareFile.ts +++ b/src/onebot/action/go-cqhttp/UploadPrivareFile.ts @@ -32,7 +32,7 @@ export default class GoCQHTTPUploadPrivateFile extends BaseAction throw `私聊${payload.user_id}不存在`; } const isBuddy = await NTQQFriendApi.isBuddy(peerUid); - return { chatType: isBuddy ? ChatType.friend : ChatType.temp, peerUid }; + return { chatType: isBuddy ? ChatType.KCHATTYPEC2C : ChatType.KCHATTYPETEMPC2CFROMGROUP, peerUid }; } throw '缺少参数 user_id'; } diff --git a/src/onebot/action/msg/ForwardSingleMsg.ts b/src/onebot/action/msg/ForwardSingleMsg.ts index fb8ac5a7..048470bb 100644 --- a/src/onebot/action/msg/ForwardSingleMsg.ts +++ b/src/onebot/action/msg/ForwardSingleMsg.ts @@ -24,9 +24,9 @@ class ForwardSingleMsg extends BaseAction { if (!peerUid) { throw new Error(`无法找到私聊对象${payload.user_id}`); } - return { chatType: ChatType.friend, peerUid }; + return { chatType: ChatType.KCHATTYPEC2C, peerUid }; } - return { chatType: ChatType.group, peerUid: payload.group_id!.toString() }; + return { chatType: ChatType.KCHATTYPEGROUP, peerUid: payload.group_id!.toString() }; } async _handle(payload: Payload): Promise { diff --git a/src/onebot/action/msg/MarkMsgAsRead.ts b/src/onebot/action/msg/MarkMsgAsRead.ts index ab7f6ddf..9ded2027 100644 --- a/src/onebot/action/msg/MarkMsgAsRead.ts +++ b/src/onebot/action/msg/MarkMsgAsRead.ts @@ -23,12 +23,12 @@ class MarkMsgAsRead extends BaseAction { throw `私聊${payload.user_id}不存在`; } const isBuddy = await NTQQFriendApi.isBuddy(peerUid); - return { chatType: isBuddy ? ChatType.friend : ChatType.temp, peerUid }; + return { chatType: isBuddy ? ChatType.KCHATTYPEC2C : ChatType.KCHATTYPETEMPC2CFROMGROUP, peerUid }; } if (!payload.group_id) { throw '缺少参数 group_id 或 user_id'; } - return { chatType: ChatType.group, peerUid: payload.group_id.toString() }; + return { chatType: ChatType.KCHATTYPEGROUP, peerUid: payload.group_id.toString() }; } async _handle(payload: PlayloadType): Promise { diff --git a/src/onebot/action/msg/SendMsg/create-send-elements.ts b/src/onebot/action/msg/SendMsg/create-send-elements.ts index 8732d589..0b0137f3 100644 --- a/src/onebot/action/msg/SendMsg/create-send-elements.ts +++ b/src/onebot/action/msg/SendMsg/create-send-elements.ts @@ -58,7 +58,7 @@ const _handlers: { [OB11MessageDataType.text]: async (coreContext, obContext: NapCatOneBot11Adapter, { data: { text } }) => SendMsgElementConstructor.text(coreContext, text), [OB11MessageDataType.at]: async (coreContext, obContext: NapCatOneBot11Adapter, { data: { qq: atQQ } }, context) => { - if (!context.peer || context.peer.chatType == ChatType.friend) return undefined; + if (!context.peer || context.peer.chatType == ChatType.KCHATTYPEGROUP) return undefined; if (atQQ === 'all') return SendMsgElementConstructor.at(coreContext, atQQ, atQQ, AtType.atAll, '全体成员'); const NTQQGroupApi = coreContext.apis.GroupApi; const NTQQUserApi = coreContext.apis.UserApi; diff --git a/src/onebot/action/msg/SendMsg/handle-forward-node.ts b/src/onebot/action/msg/SendMsg/handle-forward-node.ts index f4cb1fb4..05818893 100644 --- a/src/onebot/action/msg/SendMsg/handle-forward-node.ts +++ b/src/onebot/action/msg/SendMsg/handle-forward-node.ts @@ -7,7 +7,7 @@ import { NapCatOneBot11Adapter } from '@/onebot'; async function cloneMsg(coreContext: NapCatCore, msg: RawMessage): Promise { const selfPeer = { - chatType: ChatType.friend, + chatType: ChatType.KCHATTYPEC2C, peerUid: coreContext.selfInfo.uid, }; const logger = coreContext.context.logger; @@ -34,7 +34,7 @@ async function cloneMsg(coreContext: NapCatCore, msg: RawMessage): Promise { const NTQQMsgApi = coreContext.apis.MsgApi; const selfPeer = { - chatType: ChatType.friend, + chatType: ChatType.KCHATTYPEC2C, peerUid: coreContext.selfInfo.uid, }; let nodeMsgIds: string[] = []; diff --git a/src/onebot/action/msg/SendMsg/index.ts b/src/onebot/action/msg/SendMsg/index.ts index cc01814a..eba0ef0e 100644 --- a/src/onebot/action/msg/SendMsg/index.ts +++ b/src/onebot/action/msg/SendMsg/index.ts @@ -92,7 +92,7 @@ async function createContext(coreContext: NapCatCore, payload: OB11PostSendMsg, const NTQQUserApi = coreContext.apis.UserApi; if ((contextMode === ContextMode.Group || contextMode === ContextMode.Normal) && payload.group_id) { return { - chatType: ChatType.group, + chatType: ChatType.KCHATTYPEGROUP, peerUid: payload.group_id.toString(), }; } @@ -101,7 +101,7 @@ async function createContext(coreContext: NapCatCore, payload: OB11PostSendMsg, const isBuddy = await NTQQFriendApi.isBuddy(Uid!); //console.log("[调试代码] UIN:", payload.user_id, " UID:", Uid, " IsBuddy:", isBuddy); return { - chatType: isBuddy ? ChatType.friend : ChatType.temp, + chatType: isBuddy ? ChatType.KCHATTYPEC2C : ChatType.KCHATTYPETEMPC2CFROMGROUP, peerUid: Uid!, guildId: payload.group_id?.toString() || '', }; diff --git a/src/onebot/api/group.ts b/src/onebot/api/group.ts index 52dc83bd..e3a02571 100644 --- a/src/onebot/api/group.ts +++ b/src/onebot/api/group.ts @@ -118,7 +118,7 @@ export class OneBotGroupApi { const msgSeq = emojiLikeData.gtip.url.msgseq; const emojiId = emojiLikeData.gtip.face.id; const peer = { - chatType: ChatType.group, + chatType: ChatType.KCHATTYPEGROUP, guildId: '', peerUid: GroupCode }; diff --git a/src/onebot/helper/event.ts b/src/onebot/helper/event.ts index f2f8853a..730b21b3 100644 --- a/src/onebot/helper/event.ts +++ b/src/onebot/helper/event.ts @@ -12,7 +12,7 @@ import { OB11GroupTitleEvent } from "../event/notice/OB11GroupTitleEvent"; import { NapCatCore, RawMessage, ChatType, NTGrayTipElementSubTypeV2, TipGroupElementType, Peer } from '@/core'; export async function NT2PrivateEvent(core: NapCatCore, obContext: NapCatOneBot11Adapter, msg: RawMessage): Promise { - if (msg.chatType !== ChatType.friend) { + if (msg.chatType !== ChatType.KCHATTYPEC2C) { return; } for (const element of msg.elements) { @@ -38,7 +38,7 @@ export async function NT2GroupEvent(core: NapCatCore, obContext: NapCatOneBot11A const NTQQUserApi = core.apis.UserApi; const NTQQMsgApi = core.apis.MsgApi; const logger = core.context.logger; - if (msg.chatType !== ChatType.group) { + if (msg.chatType !== ChatType.KCHATTYPEGROUP) { return; } //log("group msg", msg); @@ -124,7 +124,7 @@ export async function NT2GroupEvent(core: NapCatCore, obContext: NapCatOneBot11A // const businessId = searchParams.get('businessid'); const Peer: Peer = { guildId: '', - chatType: ChatType.group, + chatType: ChatType.KCHATTYPEGROUP, peerUid: Group!, }; const msgData = await NTQQMsgApi.getMsgsBySeqAndCount(Peer, msgSeq.toString(), 1, true, true); diff --git a/src/onebot/helper/parseMessage.ts b/src/onebot/helper/parseMessage.ts index c0baacdd..ce8bf9c2 100644 --- a/src/onebot/helper/parseMessage.ts +++ b/src/onebot/helper/parseMessage.ts @@ -28,7 +28,7 @@ export async function RawNTMsg2Onebot( message_id: msg.id!, message_seq: msg.id!, real_id: msg.id!, - message_type: msg.chatType == ChatType.group ? 'group' : 'private', + message_type: msg.chatType == ChatType.KCHATTYPEGROUP ? 'group' : 'private', sender: { user_id: parseInt(msg.senderUin || '0'), nickname: msg.sendNickName, @@ -41,7 +41,7 @@ export async function RawNTMsg2Onebot( message_format: messagePostFormat === 'string' ? 'string' : 'array', post_type: core.selfInfo.uin == msg.senderUin ? EventType.MESSAGE_SENT : EventType.MESSAGE, }; - if (msg.chatType == ChatType.group) { + if (msg.chatType == ChatType.KCHATTYPEGROUP) { resMsg.sub_type = 'normal'; // 这里go-cqhttp是group,而onebot11标准是normal, 蛋疼 resMsg.group_id = parseInt(msg.peerUin); //直接去QQNative取 @@ -51,14 +51,14 @@ export async function RawNTMsg2Onebot( resMsg.sender.role = OB11Constructor.groupMemberRole(member.role); resMsg.sender.nickname = member.nick; } - } else if (msg.chatType == ChatType.friend) { + } else if (msg.chatType == ChatType.KCHATTYPEC2C) { resMsg.sub_type = 'friend'; resMsg.sender.nickname = (await NTQQUserApi.getUserDetailInfo(msg.senderUid)).nick; //const user = await NTQQUserApi.getUserDetailInfoByUin(msg.senderUin!); //resMsg.sender.nickname = user.info.nick; - } else if (msg.chatType == ChatType.temp) { + } else if (msg.chatType == ChatType.KCHATTYPETEMPC2CFROMGROUP) { resMsg.sub_type = 'group'; - const ret = await NTQQMsgApi.getTempChatInfo(ChatType.temp, msg.senderUid); + const ret = await NTQQMsgApi.getTempChatInfo(ChatType.KCHATTYPETEMPC2CFROMGROUP, msg.senderUid); if (ret.result === 0) { resMsg.group_id = parseInt(ret.tmpChatInfo!.groupCode); resMsg.sender.nickname = ret.tmpChatInfo!.fromNick; diff --git a/src/onebot/helper/quick.ts b/src/onebot/helper/quick.ts index c6ccc9ba..d228290e 100644 --- a/src/onebot/helper/quick.ts +++ b/src/onebot/helper/quick.ts @@ -20,15 +20,15 @@ async function handleMsg(coreContext: NapCatCore, obContext: NapCatOneBot11Adapt msg = msg as OB11Message; const reply = quickAction.reply; const peer: Peer = { - chatType: ChatType.friend, + chatType: ChatType.KCHATTYPEC2C, peerUid: await coreContext.apis.UserApi.getUidByUinV2(msg.user_id.toString()) as string, }; if (msg.message_type == 'private') { if (msg.sub_type === 'group') { - peer.chatType = ChatType.temp; + peer.chatType = ChatType.KCHATTYPETEMPC2CFROMGROUP; } } else { - peer.chatType = ChatType.group; + peer.chatType = ChatType.KCHATTYPETEMPC2CFROMGROUP; peer.peerUid = msg.group_id!.toString(); } if (reply) { diff --git a/src/onebot/index.ts b/src/onebot/index.ts index b4e51a01..ff5b77b7 100644 --- a/src/onebot/index.ts +++ b/src/onebot/index.ts @@ -492,7 +492,7 @@ export class NapCatOneBot11Adapter { if (!oriMessageId) { continue; } - if (message.chatType == ChatType.friend) { + if (message.chatType == ChatType.KCHATTYPEC2C) { const friendRecallEvent = new OB11FriendRecallNoticeEvent( this.core, parseInt(message!.senderUin), @@ -500,7 +500,7 @@ export class NapCatOneBot11Adapter { ); this.networkManager.emitEvent(friendRecallEvent) .catch(e => this.context.logger.logError('处理好友消息撤回失败', e)); - } else if (message.chatType == ChatType.group) { + } else if (message.chatType == ChatType.KCHATTYPETEMPC2CFROMGROUP) { let operatorId = message.senderUin; for (const element of message.elements) { const operatorUid = element.grayTipElement?.revokeElement.operatorUid;