This commit is contained in:
idranme 2024-09-19 18:29:12 +08:00
parent 58817d1c02
commit 73a2b4e35f
No known key found for this signature in database
GPG Key ID: 926F7B5B668E495F
6 changed files with 52 additions and 24 deletions

View File

@ -235,7 +235,7 @@ export class NTQQMsgApi extends Service {
}, null])
}
async queryMsgsWithFilterExBySeq(peer: Peer, msgSeq: string, filterMsgTime: string, filterSendersUid: string[]) {
async queryMsgsWithFilterExBySeq(peer: Peer, msgSeq: string, filterMsgTime: string, filterSendersUid: string[] = []) {
return await invoke('nodeIKernelMsgService/queryMsgsWithFilterEx', [{
msgId: '0',
msgTime: '0',

View File

@ -305,4 +305,34 @@ export class NTQQWebApi extends Service {
private cookieToString(cookieObject: Dict) {
return Object.entries(cookieObject).map(([key, value]) => `${key}=${value}`).join('; ')
}
async findGroupEssenceMsg(groupCode: string, msgSeq: number) {
for (let i = 0; i < 20; i++) {
const res = await this.getGroupEssenceMsgList(groupCode, i, 50)
if (!res) break
const msg = res.data.msg_list.find(e => e.msg_seq === msgSeq)
if (msg) return msg
if (res.data.is_end) break
}
}
async getGroupEssenceMsgList(groupCode: string, pageStart: number, pageLimit: number) {
const cookieObject = await this.ctx.ntUserApi.getCookies('qun.qq.com')
try {
const ret = await RequestUtil.HttpGetJson<GroupEssenceMsgRet>(
`https://qun.qq.com/cgi-bin/group_digest/digest_list?${new URLSearchParams({
bkn: this.genBkn(cookieObject.skey),
page_start: pageStart.toString(),
page_limit: pageLimit.toString(),
group_code: groupCode,
})}`,
'GET',
'',
{ 'Cookie': this.cookieToString(cookieObject) }
)
return ret.retcode === 0 ? ret : undefined
} catch {
return undefined
}
}
}

View File

@ -482,7 +482,7 @@ export interface RawMessage {
msgSeq: string
msgRandom: string
senderUid: string
senderUin?: string // 发送者QQ号
senderUin: string // 发送者QQ号
peerUid: string // 群号 或者 QQ uid
peerUin: string // 群号 或者 发送者QQ号
guildId: string

View File

@ -15,7 +15,6 @@ import {
FaceIndex,
GrayTipElementSubType,
Group,
Peer,
GroupMember,
RawMessage,
Sex,
@ -585,27 +584,22 @@ export namespace OB11Entities {
if (grayTipElement.jsonGrayTipElement?.busiId === '2401') {
ctx.logger.info('收到群精华消息', json)
const searchParams = new URL(json.items[0].jp).searchParams
const msgSeq = searchParams.get('msgSeq')!
const Group = searchParams.get('groupCode')
const Peer: Peer = {
const msgSeq = searchParams.get('msgSeq')
const groupCode = searchParams.get('groupCode')
if (!groupCode || !msgSeq) return
const peer = {
guildId: '',
chatType: ChatType.group,
peerUid: Group!
peerUid: groupCode
}
const msgList = (await ctx.ntMsgApi.getMsgsBySeqAndCount(Peer, msgSeq.toString(), 1, true, true))?.msgList
if (!msgList?.length) {
return
}
//const origMsg = await dbUtil.getMsgByLongId(msgList[0].msgId)
//const postMsg = await dbUtil.getMsgBySeqId(origMsg?.msgSeq!) ?? origMsg
// 如果 senderUin 为 0可能是 历史消息 或 自身消息
//if (msgList[0].senderUin === '0') {
//msgList[0].senderUin = postMsg?.senderUin ?? getSelfUin()
//}
const essence = await ctx.ntWebApi.findGroupEssenceMsg(groupCode, +msgSeq)
if (!essence) return
const { msgList } = await ctx.ntMsgApi.queryMsgsWithFilterExBySeq(peer, msgSeq, String(essence.sender_time))
return new OB11GroupEssenceEvent(
parseInt(msg.peerUid),
MessageUnique.getShortIdByMsgId(msgList[0].msgId)!,
parseInt(msgList[0].senderUin!)
parseInt(msgList[0].senderUin),
parseInt(essence.add_digest_uin),
)
// 获取MsgSeq+Peer可获取具体消息
}

View File

@ -1,16 +1,20 @@
import { OB11GroupNoticeEvent } from './OB11GroupNoticeEvent';
import { OB11GroupNoticeEvent } from './OB11GroupNoticeEvent'
export class OB11GroupEssenceEvent extends OB11GroupNoticeEvent {
notice_type = 'essence'
message_id: number
sender_id: number
sub_type: 'add' | 'delete' = 'add'
group_id: number
user_id: number = 0
user_id: number
operator_id: number
constructor(groupId: number, message_id: number, sender_id: number) {
constructor(groupId: number, messageId: number, senderId: number, operatorId: number) {
super()
this.group_id = groupId
this.message_id = message_id
this.sender_id = sender_id
this.user_id = senderId
this.message_id = messageId
this.sender_id = senderId
this.operator_id = operatorId
}
}

View File

@ -1 +1 @@
export const version = '3.33.0'
export const version = '3.33.1'