From d335c7d9b8601f66efe5d7b9a3f1fdd90babf7a0 Mon Sep 17 00:00:00 2001 From: Il Harper Date: Sat, 9 Dec 2023 01:50:43 +0800 Subject: [PATCH 1/3] feat(qq): support `passive` element --- adapters/qq/src/message.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/adapters/qq/src/message.ts b/adapters/qq/src/message.ts index 64fb6c82..6b388579 100644 --- a/adapters/qq/src/message.ts +++ b/adapters/qq/src/message.ts @@ -14,6 +14,7 @@ export class QQGuildMessageEncoder extends MessageE private file: Buffer private filename: string fileUrl: string + private passiveId: string reference: string private retry = false private resource: Dict @@ -31,6 +32,7 @@ export class QQGuildMessageEncoder extends MessageE if (this.options?.session && (Date.now() - this.options?.session?.timestamp) > MSG_TIMEOUT) { msg_id = null } + if (this.passiveId) msg_id = this.passiveId let r: Partial this.bot.logger.debug('use form data %s', useFormData) @@ -165,6 +167,8 @@ export class QQGuildMessageEncoder extends MessageE } else if (type === 'quote') { this.reference = attrs.id await this.flush() + } else if (type === 'passive') { + this.passiveId = attrs.id } else if (type === 'image' && attrs.url) { await this.flush() await this.resolveFile(attrs) @@ -183,6 +187,8 @@ const MSG_TIMEOUT = 5 * 60 * 1000 - 2000// 5 mins export class QQMessageEncoder extends MessageEncoder> { private content: string = '' + private passiveId: string + private passiveSeq: number private useMarkdown = false private rows: QQ.Button[][] = [] private attachedFile: QQ.Message.File.Response @@ -197,6 +203,8 @@ export class QQMessageEncoder extends MessageEncode msg_id = this.options.session.messageId msg_seq = ++this.options.session['seq'] } + if (this.passiveId) msg_id = this.passiveId + if (this.passiveSeq) msg_seq = this.passiveSeq const data: QQ.Message.Request = { content: this.content, msg_type: QQ.Message.Type.TEXT, @@ -361,6 +369,9 @@ export class QQMessageEncoder extends MessageEncode const { type, attrs, children } = element if (type === 'text') { this.content += attrs.content + } else if (type === 'passive') { + this.passiveId = attrs.id + this.passiveSeq = Number(attrs.seq) } else if (type === 'image' && attrs.url) { await this.flush() const data = await this.sendFile(type, attrs) From e5777cc89b621a74a2f6a1d8d8906e3ba27c329a Mon Sep 17 00:00:00 2001 From: Il Harper Date: Thu, 21 Dec 2023 23:51:21 +0800 Subject: [PATCH 2/3] feat(qq): reset `passive` state --- adapters/qq/src/message.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/adapters/qq/src/message.ts b/adapters/qq/src/message.ts index 6b388579..9dc55146 100644 --- a/adapters/qq/src/message.ts +++ b/adapters/qq/src/message.ts @@ -110,6 +110,7 @@ export class QQGuildMessageEncoder extends MessageE this.file = null this.filename = null this.fileUrl = null + this.passiveId = null this.resource = null this.retry = false } @@ -264,6 +265,8 @@ export class QQMessageEncoder extends MessageEncode // this.results.push(session.event.message) // session.app.emit(session, 'send', session) this.content = '' + this.passiveId = null + this.passiveSeq = null this.attachedFile = null this.rows = [] } From bb0f8bdf9798900b1fbf9302118bc537099f46a6 Mon Sep 17 00:00:00 2001 From: Il Harper Date: Fri, 22 Dec 2023 00:16:27 +0800 Subject: [PATCH 3/3] fix(qq): revert "feat(qq): reset `passive` state" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit e5777cc89b621a74a2f6a1d8d8906e3ba27c329a. 如果拆分消息,那么每条消息都应该附带 passive。不应该去掉。 --- adapters/qq/src/message.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/adapters/qq/src/message.ts b/adapters/qq/src/message.ts index 9dc55146..6b388579 100644 --- a/adapters/qq/src/message.ts +++ b/adapters/qq/src/message.ts @@ -110,7 +110,6 @@ export class QQGuildMessageEncoder extends MessageE this.file = null this.filename = null this.fileUrl = null - this.passiveId = null this.resource = null this.retry = false } @@ -265,8 +264,6 @@ export class QQMessageEncoder extends MessageEncode // this.results.push(session.event.message) // session.app.emit(session, 'send', session) this.content = '' - this.passiveId = null - this.passiveSeq = null this.attachedFile = null this.rows = [] }