diff --git a/src/common/utils/MessageUnique.ts b/src/common/utils/MessageUnique.ts index 30c4d09d..430ec621 100644 --- a/src/common/utils/MessageUnique.ts +++ b/src/common/utils/MessageUnique.ts @@ -61,6 +61,10 @@ class LimitedHashTable { this.valueToKey.delete(value); } } + + getKeyList(): K[] { + return Array.from(this.keyToValue.keys()); + } } class MessageUniqueWrapper { diff --git a/src/core/src/apis/group.ts b/src/core/src/apis/group.ts index 2a47a1a0..3163344a 100644 --- a/src/core/src/apis/group.ts +++ b/src/core/src/apis/group.ts @@ -1,4 +1,4 @@ -import { GroupMember, GroupRequestOperateTypes, GroupMemberRole, GroupNotify, Group, MemberExtSourceType, GroupNotifyTypes, ChatType } from '../entities'; +import { GroupMember, GroupRequestOperateTypes, GroupMemberRole, GroupNotify, Group, MemberExtSourceType, GroupNotifyTypes, ChatType, Peer } from '../entities'; import { GeneralCallResult, NTQQUserApi, napCatCore } from '@/core'; import { NTEventDispatch } from '@/common/utils/EventTask'; import { log } from '@/common/utils/log'; @@ -84,14 +84,9 @@ export class NTQQGroupApi { static async getLastestMsg(GroupCode: string, uins: string[]) { let uids: Array = []; for (let uin of uins) { - try { - let uid = await NTQQUserApi.getUidByUin(uin) - if (uid) { - uids.push(uid); - } - } catch (error) { - log("getLastestMsg--->", error); - return undefined; + let uid = await NTQQUserApi.getUidByUin(uin) + if (uid) { + uids.push(uid); } } let ret = await napCatCore.session.getMsgService().queryMsgsWithFilterEx('0', '0', '0', { diff --git a/src/core/src/apis/msg.ts b/src/core/src/apis/msg.ts index 06032df9..137d8faf 100644 --- a/src/core/src/apis/msg.ts +++ b/src/core/src/apis/msg.ts @@ -63,7 +63,19 @@ export class NTQQMsgApi { } | undefined> { return napCatCore.session.getMsgService().getMultiMsg(peer, rootMsgId, parentMsgId); } - + static async getLastestMsgByUids(peer: Peer) { + let ret = await napCatCore.session.getMsgService().queryMsgsWithFilterEx('0', '0', '0', { + chatInfo: peer, + filterMsgType: [], + filterSendersUid: [], + filterMsgToTime: '0', + filterMsgFromTime: '0', + isReverseOrder: false, + isIncludeCurrent: true, + pageLimit: 1, + }); + return ret; + } static async getMsgsByMsgId(peer: Peer, msgIds: string[]) { return await napCatCore.session.getMsgService().getMsgsByMsgId(peer, msgIds); } diff --git a/src/core/src/services/NodeIKernelMsgService.ts b/src/core/src/services/NodeIKernelMsgService.ts index 80e74a11..da8e5a76 100644 --- a/src/core/src/services/NodeIKernelMsgService.ts +++ b/src/core/src/services/NodeIKernelMsgService.ts @@ -141,7 +141,7 @@ export interface NodeIKernelMsgService { getLastMessageList(peer: Peer[]): Promise; - getAioFirstViewLatestMsgs(peer: Peer, unknown: number): unknown; + getAioFirstViewLatestMsgs(peer: Peer, num: number): unknown; getMsgs(peer: Peer, msgId: string, count: unknown, queryOrder: boolean): Promise; diff --git a/src/onebot11/action/go-cqhttp/GetGroupMsgHistory.ts b/src/onebot11/action/go-cqhttp/GetGroupMsgHistory.ts index c1f43021..b6660efb 100644 --- a/src/onebot11/action/go-cqhttp/GetGroupMsgHistory.ts +++ b/src/onebot11/action/go-cqhttp/GetGroupMsgHistory.ts @@ -18,7 +18,7 @@ const SchemaData = { message_seq: { type: 'number' }, count: { type: 'number' } }, - required: ['group_id', 'count'] + required: ['group_id'] } as const satisfies JSONSchema; type Payload = FromSchema; @@ -31,13 +31,17 @@ export default class GoCQHTTPGetGroupMsgHistory extends BaseAction { msg.id = await MessageUnique.createMsg({ guildId: '', chatType: msg.chatType, peerUid: msg.peerUid }, msg.msgId); diff --git a/src/onebot11/main.ts b/src/onebot11/main.ts index 156cf867..80b621f3 100644 --- a/src/onebot11/main.ts +++ b/src/onebot11/main.ts @@ -323,11 +323,12 @@ export class NapCatOnebot11 { const isPrivilege = role === 3 || role === 4; for (const member of members.values()) { //console.log(member?.isDelete, role, isPrivilege); - if (member?.isDelete && !isPrivilege && selfInfo.uin !== member.uin) { - log('[群聊] 群组 ', groupCode, ' 成员' + member.uin + '退出'); - const groupDecreaseEvent = new OB11GroupDecreaseEvent(parseInt(groupCode), parseInt(member.uin), 0, 'leave');// 不知道怎么出去的 - postOB11Event(groupDecreaseEvent, true); - } + // Develop Mlikiowa Taged: 暂时屏蔽这个方案 考虑onMemberListChange + // if (member?.isDelete && !isPrivilege && selfInfo.uin !== member.uin) { + // log('[群聊] 群组 ', groupCode, ' 成员' + member.uin + '退出'); + // const groupDecreaseEvent = new OB11GroupDecreaseEvent(parseInt(groupCode), parseInt(member.uin), 0, 'leave');// 不知道怎么出去的 + // postOB11Event(groupDecreaseEvent, true); + // } } }; groupListener.onJoinGroupNotify = (...notify) => {