diff --git a/src/core/apis/group.ts b/src/core/apis/group.ts index 4ac216b7..b6d06f5d 100644 --- a/src/core/apis/group.ts +++ b/src/core/apis/group.ts @@ -165,7 +165,13 @@ export class NTQQGroupApi { return this.groupMemberCache.get(groupCode); } - + async refreshGroupMemberCachePartial(groupCode: string, uid: string) { + const member = await this.getGroupMemberEx(groupCode, uid, true); + if (member) { + this.groupMemberCache.get(groupCode)?.set(uid, member); + } + return member; + } async getGroupMember(groupCode: string | number, memberUinOrUid: string | number) { const groupCodeStr = groupCode.toString(); const memberUinOrUidStr = memberUinOrUid.toString(); diff --git a/src/onebot/api/group.ts b/src/onebot/api/group.ts index 0018e05f..243bcc21 100644 --- a/src/onebot/api/group.ts +++ b/src/onebot/api/group.ts @@ -49,6 +49,7 @@ export class OneBotGroupApi { duration = -1; } } + await this.core.apis.GroupApi.refreshGroupMemberCachePartial(GroupCode, memberUid); const adminUin = (await this.core.apis.GroupApi.getGroupMember(GroupCode, adminUid))?.uin; if (memberUin && adminUin) { return new OB11GroupBanEvent( @@ -113,6 +114,7 @@ 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); + await this.core.apis.GroupApi.refreshGroupMemberCachePartial(msg.peerUid, msg.senderUid); if (member && member.cardName !== msg.sendMemberName) { const newCardName = msg.sendMemberName ?? ''; const event = new OB11GroupCardEvent(this.core, parseInt(msg.peerUid), parseInt(msg.senderUin), newCardName, member.cardName); diff --git a/src/onebot/event/notice/OB11GroupAdminNoticeEvent.ts b/src/onebot/event/notice/OB11GroupAdminNoticeEvent.ts index b64e5c7f..a5b58c5d 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'; + sub_type: 'set' | 'unset'; constructor(core: NapCatCore, group_id: number, user_id: number, sub_type: 'set' | 'unset') { super(core, group_id, user_id);