From 8417450c3c0e28577bf68c40c27ea7236fa77f0e Mon Sep 17 00:00:00 2001 From: linyuchen Date: Mon, 4 Mar 2024 22:58:25 +0800 Subject: [PATCH] fix: group member role change not sync group member list --- src/common/data.ts | 37 ++++++++++++++++++++++--------------- src/main/main.ts | 6 +++++- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/common/data.ts b/src/common/data.ts index f65271a..d4f771f 100644 --- a/src/common/data.ts +++ b/src/common/data.ts @@ -16,11 +16,11 @@ export const selfInfo: SelfInfo = { nick: '', online: true } -export const groups: Group[] = [] -export const friends: Friend[] = [] -export const msgHistory: Record = {} // msgId: RawMessage -export const groupNotifies: Map = new Map() -export const friendRequests: Map = new Map() +export let groups: Group[] = [] +export let friends: Friend[] = [] +export let msgHistory: Record = {} // msgId: RawMessage +export let groupNotifies: Map = new Map() +export let friendRequests: Map = new Map() export const llonebotError: LLOneBotError = { ffmpegError: '', otherError: '' @@ -47,20 +47,20 @@ export function getHistoryMsgByShortId(shortId: number | string) { } export async function getFriend(qq: string): Promise { - const friend = friends.find(friend => friend.uin === qq) - // if (!friend){ - // friends = (await NTQQApi.getFriends(true)) - // friend = friends.find(friend => friend.uin === qq) - // } + let friend = friends.find(friend => friend.uin === qq) + if (!friend){ + friends = (await NTQQApi.getFriends(true)) + friend = friends.find(friend => friend.uin === qq) + } return friend } export async function getGroup(qq: string): Promise { - const group = groups.find(group => group.groupCode === qq) - // if (!group){ - // groups = await NTQQApi.getGroups(true); - // group = groups.find(group => group.groupCode === qq) - // } + let group = groups.find(group => group.groupCode === qq) + if (!group){ + groups = await NTQQApi.getGroups(true); + group = groups.find(group => group.groupCode === qq) + } return group } @@ -89,6 +89,13 @@ export async function getGroupMember(groupQQ: string | number, memberQQ: string } } +export async function refreshGroupMembers(groupQQ: string) { + const group = groups.find(group => group.groupCode === groupQQ) + if (group) { + group.members = await NTQQApi.getGroupMembers(groupQQ) + } +} + export function getHistoryMsgBySeq(seq: string) { return Object.values(msgHistory).find(msg => msg.msgSeq === seq) } diff --git a/src/main/main.ts b/src/main/main.ts index 164b4ef..8e020c4 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -19,7 +19,7 @@ import { getGroupMember, groupNotifies, llonebotError, - msgHistory, + msgHistory, refreshGroupMembers, selfInfo } from "../common/data"; import {hookNTQQApiCall, hookNTQQApiReceive, ReceiveCmd, registerReceiveHook} from "../ntqqapi/hook"; @@ -262,6 +262,7 @@ function onLoad() { log("收到群通知", notify); groupNotifies[notify.seq] = notify; const member1 = await getGroupMember(notify.group.groupCode, null, notify.user1.uid); + refreshGroupMembers(notify.group.groupCode).then() let member2: GroupMember; if (notify.user2.uid) { member2 = await getGroupMember(notify.group.groupCode, null, notify.user2.uid); @@ -312,6 +313,9 @@ function onLoad() { log("解析群通知失败", e.stack); } } + else if (payload.doubt){ + // 可能有群管理员变动 + } }) registerReceiveHook(ReceiveCmd.FRIEND_REQUEST, async (payload) => {