mirror of
https://github.com/LLOneBot/LLOneBot.git
synced 2024-11-22 01:56:33 +00:00
make ts happy
This commit is contained in:
@@ -22,7 +22,7 @@ import { Peer } from '@/ntqqapi/types/msg'
|
||||
export class NTQQFileApi {
|
||||
static async getVideoUrl(peer: Peer, msgId: string, elementId: string): Promise<string> {
|
||||
const session = wrapperApi.NodeIQQNTWrapperSession
|
||||
return (await session.getRichMediaService().getVideoPlayUrlV2(peer,
|
||||
return (await session?.getRichMediaService().getVideoPlayUrlV2(peer,
|
||||
msgId,
|
||||
elementId,
|
||||
0,
|
||||
|
@@ -70,9 +70,9 @@ export class NTQQFriendApi {
|
||||
static async getBuddyV2(refresh = false): Promise<FriendV2[]> {
|
||||
const uids: string[] = []
|
||||
const session = wrapperApi.NodeIQQNTWrapperSession
|
||||
const buddyService = session.getBuddyService()
|
||||
const buddyListV2 = refresh ? await buddyService.getBuddyListV2('0', BuddyListReqType.KNOMAL) : await buddyService.getBuddyListV2('0', BuddyListReqType.KNOMAL)
|
||||
uids.push(...buddyListV2.data.flatMap(item => item.buddyUids))
|
||||
const buddyService = session?.getBuddyService()
|
||||
const buddyListV2 = refresh ? await buddyService?.getBuddyListV2('0', BuddyListReqType.KNOMAL) : await buddyService?.getBuddyListV2('0', BuddyListReqType.KNOMAL)
|
||||
uids.push(...buddyListV2?.data.flatMap(item => item.buddyUids)!)
|
||||
const data = await NTEventDispatch.CallNoListenerEvent<NodeIKernelProfileService['getCoreAndBaseInfo']>(
|
||||
'NodeIKernelProfileService/getCoreAndBaseInfo', 5000, 'nodeStore', uids
|
||||
)
|
||||
|
@@ -135,7 +135,7 @@ export class NTQQGroupApi {
|
||||
}
|
||||
|
||||
static async handleGroupRequest(seq: string, operateType: GroupRequestOperateTypes, reason?: string) {
|
||||
const notify: GroupNotify = await dbUtil.getGroupNotify(seq)
|
||||
const notify = await dbUtil.getGroupNotify(seq)
|
||||
if (!notify) {
|
||||
throw `${seq}对应的加群通知不存在`
|
||||
}
|
||||
@@ -303,27 +303,27 @@ export class NTQQGroupApi {
|
||||
const session = wrapperApi.NodeIQQNTWrapperSession
|
||||
// 代码没测过
|
||||
// 需要 ob11msgid->msgId + (peer) -> msgSeq + msgRandom
|
||||
let MsgData = await session.getMsgService().getMsgsIncludeSelf({ chatType: 2, guildId: '', peerUid: GroupCode }, msgId, 1, false)
|
||||
let MsgData = await session?.getMsgService().getMsgsIncludeSelf({ chatType: 2, guildId: '', peerUid: GroupCode }, msgId, 1, false)
|
||||
let param = {
|
||||
groupCode: GroupCode,
|
||||
msgRandom: parseInt(MsgData.msgList[0].msgRandom),
|
||||
msgSeq: parseInt(MsgData.msgList[0].msgSeq)
|
||||
}
|
||||
// GetMsgByShoretID(ShoretID) -> MsgService.getMsgs(Peer,MsgId,1,false) -> 组出参数
|
||||
return session.getGroupService().removeGroupEssence(param)
|
||||
return session?.getGroupService().removeGroupEssence(param)
|
||||
}
|
||||
|
||||
static async addGroupEssence(GroupCode: string, msgId: string) {
|
||||
const session = wrapperApi.NodeIQQNTWrapperSession
|
||||
// 代码没测过
|
||||
// 需要 ob11msgid->msgId + (peer) -> msgSeq + msgRandom
|
||||
let MsgData = await session.getMsgService().getMsgsIncludeSelf({ chatType: 2, guildId: '', peerUid: GroupCode }, msgId, 1, false)
|
||||
let MsgData = await session?.getMsgService().getMsgsIncludeSelf({ chatType: 2, guildId: '', peerUid: GroupCode }, msgId, 1, false)
|
||||
let param = {
|
||||
groupCode: GroupCode,
|
||||
msgRandom: parseInt(MsgData.msgList[0].msgRandom),
|
||||
msgSeq: parseInt(MsgData.msgList[0].msgSeq)
|
||||
}
|
||||
// GetMsgByShoretID(ShoretID) -> MsgService.getMsgs(Peer,MsgId,1,false) -> 组出参数
|
||||
return session.getGroupService().addGroupEssence(param)
|
||||
return session?.getGroupService().addGroupEssence(param)
|
||||
}
|
||||
}
|
||||
|
@@ -33,7 +33,7 @@ async function sendWaiter(peer: Peer, waitComplete = true, timeout: number = 100
|
||||
}
|
||||
await waitLastSend()
|
||||
|
||||
let sentMessage: RawMessage = null
|
||||
let sentMessage: RawMessage | null = null
|
||||
sendMessagePool[peerUid] = async (rawMessage: RawMessage) => {
|
||||
delete sendMessagePool[peerUid]
|
||||
sentMessage = rawMessage
|
||||
@@ -290,6 +290,6 @@ export class NTQQMsgApi {
|
||||
}
|
||||
static async getMsgsBySeqAndCount(peer: Peer, seq: string, count: number, desc: boolean, z: boolean) {
|
||||
const session = wrapperApi.NodeIQQNTWrapperSession
|
||||
return await session.getMsgService().getMsgsBySeqAndCount(peer, seq, count, desc, z);
|
||||
return await session?.getMsgService().getMsgsBySeqAndCount(peer, seq, count, desc, z);
|
||||
}
|
||||
}
|
||||
|
@@ -196,7 +196,7 @@ export class NTQQUserApi {
|
||||
|
||||
static async getPSkey(domains: string[]): Promise<Map<string, string>> {
|
||||
const session = wrapperApi.NodeIQQNTWrapperSession
|
||||
const res = await session.getTipOffService().getPskey(domains, true)
|
||||
const res = await session?.getTipOffService().getPskey(domains, true)
|
||||
if (res.result !== 0) {
|
||||
throw new Error(`获取Pskey失败: ${res.errMsg}`)
|
||||
}
|
||||
@@ -205,6 +205,6 @@ export class NTQQUserApi {
|
||||
|
||||
static async getClientKey(): Promise<ClientKeyData> {
|
||||
const session = wrapperApi.NodeIQQNTWrapperSession
|
||||
return await session.getTicketService().forceFetchClientKey('')
|
||||
return await session?.getTicketService().forceFetchClientKey('')
|
||||
}
|
||||
}
|
||||
|
@@ -121,20 +121,20 @@ export interface GroupEssenceMsgRet {
|
||||
}
|
||||
|
||||
export class WebApi {
|
||||
static async getGroupEssenceMsg(GroupCode: string, page_start: string): Promise<GroupEssenceMsgRet> {
|
||||
static async getGroupEssenceMsg(GroupCode: string, page_start: string): Promise<GroupEssenceMsgRet | undefined> {
|
||||
const { cookies: CookieValue, bkn: Bkn } = (await NTQQUserApi.getCookies('qun.qq.com'))
|
||||
const url = 'https://qun.qq.com/cgi-bin/group_digest/digest_list?bkn=' + Bkn + '&group_code=' + GroupCode + '&page_start=' + page_start + '&page_limit=20';
|
||||
let ret;
|
||||
const url = 'https://qun.qq.com/cgi-bin/group_digest/digest_list?bkn=' + Bkn + '&group_code=' + GroupCode + '&page_start=' + page_start + '&page_limit=20'
|
||||
let ret: GroupEssenceMsgRet
|
||||
try {
|
||||
ret = await RequestUtil.HttpGetJson<GroupEssenceMsgRet>(url, 'GET', '', { 'Cookie': CookieValue });
|
||||
ret = await RequestUtil.HttpGetJson<GroupEssenceMsgRet>(url, 'GET', '', { 'Cookie': CookieValue })
|
||||
} catch {
|
||||
return undefined;
|
||||
return undefined
|
||||
}
|
||||
//console.log(url, CookieValue);
|
||||
//console.log(url, CookieValue)
|
||||
if (ret.retcode !== 0) {
|
||||
return undefined;
|
||||
return undefined
|
||||
}
|
||||
return ret;
|
||||
return ret
|
||||
}
|
||||
|
||||
static async getGroupMembers(GroupCode: string, cached: boolean = true): Promise<WebApiGroupMember[]> {
|
||||
|
@@ -27,7 +27,7 @@ export class NTQQWindowApi {
|
||||
static async openWindow<R = GeneralCallResult>(
|
||||
ntQQWindow: NTQQWindow,
|
||||
args: any[],
|
||||
cbCmd: ReceiveCmd = null,
|
||||
cbCmd: ReceiveCmd | null = null,
|
||||
autoCloseSeconds: number = 2,
|
||||
) {
|
||||
const result = await callNTQQApi<R>({
|
||||
|
@@ -283,7 +283,7 @@ export class SendMsgElementConstructor {
|
||||
if (faceId >= 222){
|
||||
faceType = 2
|
||||
}
|
||||
if (face.AniStickerType){
|
||||
if (face?.AniStickerType){
|
||||
faceType = 3;
|
||||
}
|
||||
return {
|
||||
@@ -292,10 +292,10 @@ export class SendMsgElementConstructor {
|
||||
faceElement: {
|
||||
faceIndex: faceId,
|
||||
faceType,
|
||||
faceText: face.QDes,
|
||||
stickerId: face.AniStickerId,
|
||||
stickerType: face.AniStickerType,
|
||||
packId: face.AniStickerPackId,
|
||||
faceText: face?.QDes,
|
||||
stickerId: face?.AniStickerId,
|
||||
stickerType: face?.AniStickerType,
|
||||
packId: face?.AniStickerPackId,
|
||||
sourceType: 1,
|
||||
},
|
||||
}
|
||||
@@ -329,7 +329,7 @@ export class SendMsgElementConstructor {
|
||||
stickerId: '33',
|
||||
sourceType: 1,
|
||||
stickerType: 2,
|
||||
resultId: resultId.toString(),
|
||||
resultId: resultId?.toString(),
|
||||
surpriseId: '',
|
||||
// "randomType": 1,
|
||||
},
|
||||
@@ -351,7 +351,7 @@ export class SendMsgElementConstructor {
|
||||
stickerId: '34',
|
||||
sourceType: 1,
|
||||
stickerType: 2,
|
||||
resultId: resultId.toString(),
|
||||
resultId: resultId?.toString(),
|
||||
surpriseId: '',
|
||||
// "randomType": 1,
|
||||
},
|
||||
|
@@ -83,7 +83,7 @@ export function hookNTQQApiReceive(window: BrowserWindow) {
|
||||
let isLogger = false
|
||||
try {
|
||||
isLogger = args[0]?.eventName?.startsWith('ns-LoggerApi')
|
||||
} catch (e) {}
|
||||
} catch (e) { }
|
||||
if (!isLogger) {
|
||||
try {
|
||||
HOOK_LOG && log(`received ntqq api message: ${channel}`, args)
|
||||
@@ -102,7 +102,7 @@ export function hookNTQQApiReceive(window: BrowserWindow) {
|
||||
try {
|
||||
let _ = hook.hookFunc(receiveData.payload)
|
||||
if (hook.hookFunc.constructor.name === 'AsyncFunction') {
|
||||
;(_ as Promise<void>).then()
|
||||
; (_ as Promise<void>).then()
|
||||
}
|
||||
} catch (e) {
|
||||
log('hook error', e, receiveData.payload)
|
||||
@@ -123,7 +123,7 @@ export function hookNTQQApiReceive(window: BrowserWindow) {
|
||||
delete hookApiCallbacks[callbackId]
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
} catch (e: any) {
|
||||
log('hookNTQQApiReceive error', e.stack.toString(), args)
|
||||
}
|
||||
originalSend.call(window.webContents, channel, ...args)
|
||||
@@ -142,11 +142,11 @@ export function hookNTQQApiCall(window: BrowserWindow) {
|
||||
let isLogger = false
|
||||
try {
|
||||
isLogger = args[3][0].eventName.startsWith('ns-LoggerApi')
|
||||
} catch (e) {}
|
||||
} catch (e) { }
|
||||
if (!isLogger) {
|
||||
try {
|
||||
HOOK_LOG && log('call NTQQ api', thisArg, args)
|
||||
} catch (e) {}
|
||||
} catch (e) { }
|
||||
try {
|
||||
const _args: unknown[] = args[3][1]
|
||||
const cmdName: NTQQApiMethod = _args[0] as NTQQApiMethod
|
||||
@@ -157,7 +157,7 @@ export function hookNTQQApiCall(window: BrowserWindow) {
|
||||
try {
|
||||
let _ = hook.hookFunc(callParams)
|
||||
if (hook.hookFunc.constructor.name === 'AsyncFunction') {
|
||||
;(_ as Promise<void>).then()
|
||||
(_ as Promise<void>).then()
|
||||
}
|
||||
} catch (e) {
|
||||
log('hook call error', e, _args)
|
||||
@@ -165,7 +165,7 @@ export function hookNTQQApiCall(window: BrowserWindow) {
|
||||
}).then()
|
||||
}
|
||||
})
|
||||
} catch (e) {}
|
||||
} catch (e) { }
|
||||
}
|
||||
return target.apply(thisArg, args)
|
||||
},
|
||||
@@ -189,7 +189,7 @@ export function hookNTQQApiCall(window: BrowserWindow) {
|
||||
let ret = target.apply(thisArg, args)
|
||||
try {
|
||||
HOOK_LOG && log('call NTQQ invoke api return', ret)
|
||||
} catch (e) {}
|
||||
} catch (e) { }
|
||||
return ret
|
||||
},
|
||||
})
|
||||
@@ -296,7 +296,7 @@ async function processGroupEvent(payload: { groupList: Group[] }) {
|
||||
|
||||
// 判断bot是否是管理员,如果是管理员不需要从这里得知有人退群,这里的退群无法得知是主动退群还是被踢
|
||||
let bot = await getGroupMember(group.groupCode, selfInfo.uin)
|
||||
if (bot.role == GroupMemberRole.admin || bot.role == GroupMemberRole.owner) {
|
||||
if (bot?.role == GroupMemberRole.admin || bot?.role == GroupMemberRole.owner) {
|
||||
continue
|
||||
}
|
||||
for (const member of oldMembers) {
|
||||
@@ -320,7 +320,7 @@ async function processGroupEvent(payload: { groupList: Group[] }) {
|
||||
}
|
||||
|
||||
updateGroups(newGroupList, false).then()
|
||||
} catch (e) {
|
||||
} catch (e: any) {
|
||||
updateGroups(payload.groupList).then()
|
||||
log('更新群信息错误', e.stack.toString())
|
||||
}
|
||||
@@ -328,7 +328,7 @@ async function processGroupEvent(payload: { groupList: Group[] }) {
|
||||
|
||||
export async function startHook() {
|
||||
|
||||
// 群列表变动
|
||||
// 群列表变动
|
||||
registerReceiveHook<{ groupList: Group[]; updateType: number }>(ReceiveCmdS.GROUPS, (payload) => {
|
||||
// updateType 3是群列表变动,2是群成员变动
|
||||
// log("群列表变动", payload.updateType, payload.groupList)
|
||||
@@ -372,10 +372,11 @@ export async function startHook() {
|
||||
)
|
||||
} else if (member.role != existMember.role) {
|
||||
log('有管理员变动通知')
|
||||
let groupAdminNoticeEvent = new OB11GroupAdminNoticeEvent()
|
||||
groupAdminNoticeEvent.group_id = parseInt(groupCode)
|
||||
groupAdminNoticeEvent.user_id = parseInt(member.uin)
|
||||
groupAdminNoticeEvent.sub_type = member.role == GroupMemberRole.admin ? 'set' : 'unset'
|
||||
const groupAdminNoticeEvent = new OB11GroupAdminNoticeEvent(
|
||||
member.role == GroupMemberRole.admin ? 'set' : 'unset',
|
||||
parseInt(groupCode),
|
||||
parseInt(member.uin)
|
||||
)
|
||||
postOb11Event(groupAdminNoticeEvent, true)
|
||||
}
|
||||
Object.assign(existMember, member)
|
||||
@@ -397,7 +398,7 @@ export async function startHook() {
|
||||
// }
|
||||
})
|
||||
|
||||
// 好友列表变动
|
||||
// 好友列表变动
|
||||
registerReceiveHook<{
|
||||
data: CategoryFriend[]
|
||||
}>(ReceiveCmdS.FRIENDS, (payload) => {
|
||||
@@ -453,7 +454,7 @@ export async function startHook() {
|
||||
const pttPath = msgElement.pttElement?.filePath
|
||||
const filePath = msgElement.fileElement?.filePath
|
||||
const videoPath = msgElement.videoElement?.filePath
|
||||
const videoThumbPath: string[] = [...msgElement.videoElement?.thumbPath.values()]
|
||||
const videoThumbPath: string[] = [...msgElement.videoElement.thumbPath?.values()!]
|
||||
const pathList = [picPath, ...picThumbPath, pttPath, filePath, videoPath, ...videoThumbPath]
|
||||
if (msgElement.picElement) {
|
||||
pathList.push(...Object.values(msgElement.picElement.thumbPath))
|
||||
@@ -471,7 +472,7 @@ export async function startHook() {
|
||||
})
|
||||
}
|
||||
}
|
||||
}, getConfigUtil().getConfig().autoDeleteFileSecond * 1000)
|
||||
}, getConfigUtil().getConfig().autoDeleteFileSecond! * 1000)
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -486,7 +487,7 @@ export async function startHook() {
|
||||
if (sendCallback) {
|
||||
try {
|
||||
sendCallback(message)
|
||||
} catch (e) {
|
||||
} catch (e: any) {
|
||||
log('receive self msg error', e.stack)
|
||||
}
|
||||
}
|
||||
@@ -518,8 +519,8 @@ export async function startHook() {
|
||||
NTQQMsgApi.getMsgHistory(peer, '', 20).then(({ msgList }) => {
|
||||
let lastTempMsg = msgList.pop()
|
||||
log('激活窗口之前的第一条临时会话消息:', lastTempMsg)
|
||||
if (Date.now() / 1000 - parseInt(lastTempMsg.msgTime) < 5) {
|
||||
OB11Constructor.message(lastTempMsg).then((r) => postOb11Event(r))
|
||||
if (Date.now() / 1000 - parseInt(lastTempMsg?.msgTime!) < 5) {
|
||||
OB11Constructor.message(lastTempMsg!).then((r) => postOb11Event(r))
|
||||
}
|
||||
})
|
||||
})
|
||||
@@ -550,5 +551,4 @@ export async function startHook() {
|
||||
log('重新激活聊天窗口', peer, { result: r.result, errMsg: r.errMsg })
|
||||
})
|
||||
})
|
||||
|
||||
}
|
@@ -1,7 +1,6 @@
|
||||
import { ipcMain } from 'electron'
|
||||
import { hookApiCallbacks, ReceiveCmd, ReceiveCmdS, registerReceiveHook, removeReceiveHook } from './hook'
|
||||
import { log } from '../common/utils/log'
|
||||
import { NTQQWindow, NTQQWindowApi, NTQQWindows } from './api/window'
|
||||
import { HOOK_LOG } from '../common/config'
|
||||
import { randomUUID } from 'node:crypto'
|
||||
|
||||
|
Reference in New Issue
Block a user