mirror of
https://github.com/LLOneBot/LLOneBot.git
synced 2024-11-22 01:56:33 +00:00
chore: v3.28.7
fix: CPU占用过高 fix: 好友列表变动hook失败
This commit is contained in:
parent
a0f5cc0e36
commit
f8e231b8b8
@ -4,7 +4,7 @@
|
||||
"name": "LLOneBot",
|
||||
"slug": "LLOneBot",
|
||||
"description": "实现 OneBot 11 协议,用以 QQ 机器人开发",
|
||||
"version": "3.28.6",
|
||||
"version": "3.28.7",
|
||||
"icon": "./icon.webp",
|
||||
"authors": [
|
||||
{
|
||||
|
@ -127,4 +127,4 @@ export function getSelfUid() {
|
||||
|
||||
export function getSelfUin() {
|
||||
return selfInfo['uin']
|
||||
}
|
||||
}
|
||||
|
@ -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()
|
||||
}
|
||||
|
||||
// 创建窗口时触发
|
||||
|
@ -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 })
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -340,4 +340,4 @@ export interface UserDetailInfoByUin {
|
||||
pendantId: string
|
||||
vipNameColorId: string
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
export const version = '3.28.6'
|
||||
export const version = '3.28.7'
|
||||
|
Loading…
x
Reference in New Issue
Block a user