From 6542f2e63b3ea0646f5043e54aee03186088aa24 Mon Sep 17 00:00:00 2001 From: linyuchen Date: Sun, 24 Mar 2024 11:57:02 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20get=20group=20list=20fix:=20=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=20cc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/main.ts | 19 +++++++++++++------ src/ntqqapi/api/group.ts | 2 +- src/ntqqapi/hook.ts | 19 ++++++++++++++----- src/ntqqapi/ntcall.ts | 7 ++++++- src/onebot11/action/group/GetGroupList.ts | 6 ++++++ src/renderer/index.ts | 2 +- 6 files changed, 41 insertions(+), 14 deletions(-) diff --git a/src/main/main.ts b/src/main/main.ts index 6777540..40f6fff 100644 --- a/src/main/main.ts +++ b/src/main/main.ts @@ -18,7 +18,7 @@ import { friendRequests, getFriend, getGroup, - getGroupMember, + getGroupMember, groups, llonebotError, refreshGroupMembers, selfInfo, uidMaps @@ -107,8 +107,8 @@ function onLoad() { const config = getConfigUtil().getConfig() return config; }) - ipcMain.on(CHANNEL_SET_CONFIG, (event, ask:boolean, config: Config) => { - if (!ask){ + ipcMain.on(CHANNEL_SET_CONFIG, (event, ask: boolean, config: Config) => { + if (!ask) { setConfig(config).then(); return } @@ -358,13 +358,19 @@ function onLoad() { log("llonebot pid", process.pid) llonebotError.otherError = ""; startTime = Date.now(); - dbUtil.getReceivedTempUinMap().then(m=>{ + dbUtil.getReceivedTempUinMap().then(m => { for (const [key, value] of Object.entries(m)) { uidMaps[value] = key; } }) startReceiveHook().then(); - NTQQGroupApi.getGroups(true).then() + // NTQQGroupApi.getGroups(true).then(_groups => { + // _groups.map(group => { + // if (!groups.find(g => g.groupCode == group.groupCode)) { + // groups.push(group) + // } + // }) + // }) const config = getConfigUtil().getConfig() if (config.ob11.enableHttp) { ob11HTTPServer.start(config.ob11.httpPort) @@ -397,7 +403,7 @@ function onLoad() { } log("self info", selfInfo, globalThis.authData); if (selfInfo.uin) { - async function getUserNick(){ + async function getUserNick() { try { getSelfNickCount++; const userInfo = (await NTQQUserApi.getUserDetailInfo(selfInfo.uid)); @@ -413,6 +419,7 @@ function onLoad() { return setTimeout(getUserNick, 1000); } } + getUserNick().then() start().then(); } else { diff --git a/src/ntqqapi/api/group.ts b/src/ntqqapi/api/group.ts index f23836a..2e1bd2b 100644 --- a/src/ntqqapi/api/group.ts +++ b/src/ntqqapi/api/group.ts @@ -10,7 +10,7 @@ export class NTQQGroupApi{ static async getGroups(forced = false) { let cbCmd = ReceiveCmdS.GROUPS if (process.platform != "win32") { - cbCmd = ReceiveCmdS.GROUPS_UNIX + cbCmd = ReceiveCmdS.GROUPS_STORE } const result = await callNTQQApi<{ updateType: number, diff --git a/src/ntqqapi/hook.ts b/src/ntqqapi/hook.ts index bc6f29e..b13e353 100644 --- a/src/ntqqapi/hook.ts +++ b/src/ntqqapi/hook.ts @@ -25,7 +25,7 @@ export let ReceiveCmdS = { USER_INFO: "nodeIKernelProfileListener/onProfileSimpleChanged", USER_DETAIL_INFO: "nodeIKernelProfileListener/onProfileDetailInfoChanged", GROUPS: "nodeIKernelGroupListener/onGroupListUpdate", - GROUPS_UNIX: "onGroupListUpdate", + GROUPS_STORE: "onGroupListUpdate", GROUP_MEMBER_INFO_UPDATE: "nodeIKernelGroupListener/onMemberInfoChange", FRIENDS: "onBuddyListChange", MEDIA_DOWNLOAD_COMPLETE: "nodeIKernelMsgListener/onRichMediaDownloadComplete", @@ -229,7 +229,6 @@ async function processGroupEvent(payload: {groupList: Group[]}) { for (const group of newGroupList) { let existGroup = groups.find(g => g.groupCode == group.groupCode); if (existGroup) { - if (existGroup.memberCount > group.memberCount) { log(`群(${group.groupCode})成员数量减少${existGroup.memberCount} -> ${group.memberCount}`); const oldMembers = existGroup.members; @@ -263,12 +262,22 @@ async function processGroupEvent(payload: {groupList: Group[]}) { } // 群列表变动 -registerReceiveHook<{ groupList: Group[], updateType: number }>(process.platform == "win32" ? ReceiveCmdS.GROUPS : ReceiveCmdS.GROUPS_UNIX, (payload) => { - log("群列表变动", payload) +registerReceiveHook<{ groupList: Group[], updateType: number }>(ReceiveCmdS.GROUPS, (payload) => { if (payload.updateType != 2) { updateGroups(payload.groupList).then(); } else { - processGroupEvent(payload).then(); + if (process.platform == "win32") { + processGroupEvent(payload).then(); + } + } +}) +registerReceiveHook<{ groupList: Group[], updateType: number }>(ReceiveCmdS.GROUPS_STORE, (payload) => { + if (payload.updateType != 2) { + updateGroups(payload.groupList).then(); + } else { + if (process.platform != "win32") { + processGroupEvent(payload).then(); + } } }) diff --git a/src/ntqqapi/ntcall.ts b/src/ntqqapi/ntcall.ts index b7efc15..480921d 100644 --- a/src/ntqqapi/ntcall.ts +++ b/src/ntqqapi/ntcall.ts @@ -162,7 +162,12 @@ export function callNTQQApi(params: NTQQApiParams) { ipcMain.emit( channel, - {}, + { + sender: { + send: (..._args: unknown[]) => { + }, + }, + }, {type: 'request', callbackId: uuid, eventName}, apiArgs ) diff --git a/src/onebot11/action/group/GetGroupList.ts b/src/onebot11/action/group/GetGroupList.ts index 5c3eb49..f48aff2 100644 --- a/src/onebot11/action/group/GetGroupList.ts +++ b/src/onebot11/action/group/GetGroupList.ts @@ -3,12 +3,18 @@ import {OB11Constructor} from "../../constructor"; import {groups} from "../../../common/data"; import BaseAction from "../BaseAction"; import {ActionName} from "../types"; +import {NTQQGroupApi} from "../../../ntqqapi/api"; +import {log} from "../../../common/utils"; class GetGroupList extends BaseAction { actionName = ActionName.GetGroupList protected async _handle(payload: null) { + // if (groups.length === 0) { + // const groups = await NTQQGroupApi.getGroups(true) + // log("get groups", groups) + // } return OB11Constructor.groups(groups); } } diff --git a/src/renderer/index.ts b/src/renderer/index.ts index 17a6ae3..9453a24 100644 --- a/src/renderer/index.ts +++ b/src/renderer/index.ts @@ -150,7 +150,7 @@ async function onSettingWindowCreated(view: Element) { ), SettingItem( '日志文件目录', - `${window.LiteLoader.plugins['LLOneBot'].path.data}`, + `${window.LiteLoader.plugins['LLOneBot'].path.data}/logs`, SettingButton('打开', 'config-open-log-path'), ), ]),