chore: v3.28.7

fix: CPU占用过高
fix: 好友列表变动hook失败
This commit is contained in:
linyuchen
2024-08-13 19:09:13 +08:00
parent a0f5cc0e36
commit f8e231b8b8
6 changed files with 48 additions and 23 deletions

View File

@@ -4,7 +4,7 @@
"name": "LLOneBot", "name": "LLOneBot",
"slug": "LLOneBot", "slug": "LLOneBot",
"description": "实现 OneBot 11 协议,用以 QQ 机器人开发", "description": "实现 OneBot 11 协议,用以 QQ 机器人开发",
"version": "3.28.6", "version": "3.28.7",
"icon": "./icon.webp", "icon": "./icon.webp",
"authors": [ "authors": [
{ {

View File

@@ -401,8 +401,9 @@ function onLoad() {
dbUtil.init(uin) dbUtil.init(uin)
log('start activate group member info') log('start activate group member info')
NTQQGroupApi.activateMemberInfoChange().then().catch(log) // 下面两个会导致CPU占用过高QQ卡死
NTQQGroupApi.activateMemberListChange().then().catch(log) // NTQQGroupApi.activateMemberInfoChange().then().catch(log)
// NTQQGroupApi.activateMemberListChange().then().catch(log)
startReceiveHook().then() startReceiveHook().then()
if (config.ob11.enableHttp) { if (config.ob11.enableHttp) {
@@ -432,13 +433,13 @@ function onLoad() {
} }
//log('self info', selfInfo, globalThis.authData) //log('self info', selfInfo, globalThis.authData)
if (current.uin) { if (current.uin) {
start(current.uid, current.uin) await start(current.uid, current.uin)
} }
else { else {
setTimeout(init, 1000) setTimeout(init, 1000)
} }
} }
init() init().then()
} }
// 创建窗口时触发 // 创建窗口时触发

View File

@@ -1,7 +1,16 @@
import type { BrowserWindow } from 'electron' import type { BrowserWindow } from 'electron'
import { NTQQApiClass, NTQQApiMethod } from './ntcall' import { NTQQApiClass, NTQQApiMethod } from './ntcall'
import { NTQQMsgApi } from './api/msg' import { NTQQMsgApi } from './api/msg'
import { CategoryFriend, ChatType, Group, GroupMember, GroupMemberRole, RawMessage } from './types' import {
CategoryFriend,
ChatType,
FriendV2,
Group,
GroupMember,
GroupMemberRole,
RawMessage,
SimpleInfo, User,
} from './types'
import { import {
deleteGroup, deleteGroup,
friends, friends,
@@ -103,8 +112,8 @@ export function hookNTQQApiReceive(window: BrowserWindow) {
if (hook.hookFunc.constructor.name === 'AsyncFunction') { if (hook.hookFunc.constructor.name === 'AsyncFunction') {
; (_ as Promise<void>).then() ; (_ as Promise<void>).then()
} }
} catch (e) { } catch (e: any) {
log('hook error', e, receiveData.payload) log('hook error', ntQQApiMethodName, e.stack.toString())
} }
}).then() }).then()
} }
@@ -332,7 +341,7 @@ export async function startHook() {
}) })
registerReceiveHook<{ groupList: Group[]; updateType: number }>(ReceiveCmdS.GROUPS_STORE, (payload) => { registerReceiveHook<{ groupList: Group[]; updateType: number }>(ReceiveCmdS.GROUPS_STORE, (payload) => {
// updateType 3是群列表变动2是群成员变动 // updateType 3是群列表变动2是群成员变动
// log("群列表变动", payload.updateType, payload.groupList) // log("群列表变动, store", payload.updateType, payload.groupList)
if (payload.updateType != 2) { if (payload.updateType != 2) {
updateGroups(payload.groupList).then() updateGroups(payload.groupList).then()
} }
@@ -391,9 +400,25 @@ export async function startHook() {
registerReceiveHook<{ registerReceiveHook<{
data: CategoryFriend[] data: CategoryFriend[]
}>(ReceiveCmdS.FRIENDS, (payload) => { }>(ReceiveCmdS.FRIENDS, (payload) => {
// log("onBuddyListChange", payload)
// let friendListV2: {userSimpleInfos: Map<string, SimpleInfo>} = []
type V2data = {userSimpleInfos: Map<string, SimpleInfo>}
let friendList: User[] = [];
if ((payload as any).userSimpleInfos) {
// friendListV2 = payload as any
friendList = Object.values((payload as unknown as V2data).userSimpleInfos).map((v: SimpleInfo) => {
return {
...v.coreInfo,
}
})
}
else{
for (const fData of payload.data) { for (const fData of payload.data) {
const _friends = fData.buddyList friendList.push(...fData.buddyList)
for (let friend of _friends) { }
}
log('好友列表变动', friendList)
for (let friend of friendList) {
NTQQMsgApi.activateChat({ peerUid: friend.uid, chatType: ChatType.friend }).then() NTQQMsgApi.activateChat({ peerUid: friend.uid, chatType: ChatType.friend }).then()
let existFriend = friends.find((f) => f.uin == friend.uin) let existFriend = friends.find((f) => f.uin == friend.uin)
if (!existFriend) { if (!existFriend) {
@@ -403,7 +428,6 @@ export async function startHook() {
Object.assign(existFriend, friend) Object.assign(existFriend, friend)
} }
} }
}
}) })
registerReceiveHook<{ msgList: Array<RawMessage> }>([ReceiveCmdS.NEW_MSG, ReceiveCmdS.NEW_ACTIVE_MSG], (payload) => { registerReceiveHook<{ msgList: Array<RawMessage> }>([ReceiveCmdS.NEW_MSG, ReceiveCmdS.NEW_ACTIVE_MSG], (payload) => {

View File

@@ -1 +1 @@
export const version = '3.28.6' export const version = '3.28.7'