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",
"slug": "LLOneBot",
"description": "实现 OneBot 11 协议,用以 QQ 机器人开发",
"version": "3.28.6",
"version": "3.28.7",
"icon": "./icon.webp",
"authors": [
{

View File

@ -127,4 +127,4 @@ export function getSelfUid() {
export function getSelfUin() {
return selfInfo['uin']
}
}

View File

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

View File

@ -1,7 +1,16 @@
import type { BrowserWindow } from 'electron'
import { NTQQApiClass, NTQQApiMethod } from './ntcall'
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 {
deleteGroup,
friends,
@ -103,8 +112,8 @@ export function hookNTQQApiReceive(window: BrowserWindow) {
if (hook.hookFunc.constructor.name === 'AsyncFunction') {
; (_ as Promise<void>).then()
}
} catch (e) {
log('hook error', e, receiveData.payload)
} catch (e: any) {
log('hook error', ntQQApiMethodName, e.stack.toString())
}
}).then()
}
@ -332,7 +341,7 @@ export async function startHook() {
})
registerReceiveHook<{ groupList: Group[]; updateType: number }>(ReceiveCmdS.GROUPS_STORE, (payload) => {
// updateType 3是群列表变动2是群成员变动
// log("群列表变动", payload.updateType, payload.groupList)
// log("群列表变动, store", payload.updateType, payload.groupList)
if (payload.updateType != 2) {
updateGroups(payload.groupList).then()
}
@ -391,17 +400,32 @@ export async function startHook() {
registerReceiveHook<{
data: CategoryFriend[]
}>(ReceiveCmdS.FRIENDS, (payload) => {
for (const fData of payload.data) {
const _friends = fData.buddyList
for (let friend of _friends) {
NTQQMsgApi.activateChat({ peerUid: friend.uid, chatType: ChatType.friend }).then()
let existFriend = friends.find((f) => f.uin == friend.uin)
if (!existFriend) {
friends.push(friend)
}
else {
Object.assign(existFriend, friend)
// 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) {
friendList.push(...fData.buddyList)
}
}
log('好友列表变动', friendList)
for (let friend of friendList) {
NTQQMsgApi.activateChat({ peerUid: friend.uid, chatType: ChatType.friend }).then()
let existFriend = friends.find((f) => f.uin == friend.uin)
if (!existFriend) {
friends.push(friend)
}
else {
Object.assign(existFriend, friend)
}
}
})
@ -508,4 +532,4 @@ export async function startHook() {
log('重新激活聊天窗口', peer, { result: r.result, errMsg: r.errMsg })
})
})
}
}

View File

@ -340,4 +340,4 @@ export interface UserDetailInfoByUin {
pendantId: string
vipNameColorId: string
}
}
}

View File

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