mirror of
https://github.com/LLOneBot/LLOneBot.git
synced 2024-11-22 01:56:33 +00:00
fix
This commit is contained in:
parent
58817d1c02
commit
73a2b4e35f
@ -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',
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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可获取具体消息
|
||||
}
|
||||
|
@ -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
|
||||
}
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
export const version = '3.33.0'
|
||||
export const version = '3.33.1'
|
||||
|
Loading…
x
Reference in New Issue
Block a user