From 3976d897a1f10f4678395bbeb363476796619ab2 Mon Sep 17 00:00:00 2001 From: aishannon Date: Sun, 29 Mar 2026 17:49:25 +0800 Subject: [PATCH] feat(channel/qq): optimize message sending, seq generation, and message parsing 1. Define `kindType` as constants. 2. Set `seq` generation to global incremental, simplifying `seq` handling. (QQ platform validation rule is `chatID + replyMsgID + seq`, and `seq` does not affect display order.) 3. Increase API timeout from 5 seconds to 20 seconds to reduce send timeouts. 4. Prioritize sending messages using Markdown; fall back to plain text if Markdown sending fails. Also remove the `QQConfig.SendMarkdown` configuration option. 5. Restrict `InputNotify` to be sent only for direct messages. 6. Adjust message parsing to support emoji parsing and utilize the platform-provided ASR (Automatic Speech Recognition) content. --- pkg/channels/qq/qq.go | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/pkg/channels/qq/qq.go b/pkg/channels/qq/qq.go index 4ef3337e3..45d056717 100644 --- a/pkg/channels/qq/qq.go +++ b/pkg/channels/qq/qq.go @@ -772,14 +772,6 @@ func qqAttachmentFilename(attachment MessageAttachment) string { if attachment.FileName != "" { return attachment.FileName } - if attachment.URL != "" { - if parsed, err := url.Parse(attachment.URL); err == nil { - if base := path.Base(parsed.Path); base != "" && base != "." && base != "/" { - return base - } - } - } - switch qqAttachmentKind(attachment) { case "image": return "image" @@ -799,9 +791,11 @@ func qqAttachmentKind(attachment MessageAttachment) string { switch { case strings.HasPrefix(contentType, "image/"): return "image" - case strings.HasPrefix(contentType, "video/"): + case strings.HasPrefix(contentType, "video"): return "video" - case strings.HasPrefix(contentType, "audio/"), contentType == "application/ogg", contentType == "application/x-ogg": + case strings.HasPrefix(contentType, "voice"), + strings.HasPrefix(contentType, "audio/"), + contentType == "application/ogg", contentType == "application/x-ogg": return "audio" } @@ -824,11 +818,11 @@ func qqAttachmentNote(attachment MessageAttachment) string { case "image": return fmt.Sprintf("[image: %s]", filename) case "audio": + if attachment.AsrReferText != "" { + return fmt.Sprintf("[audio: %s (%s)]", filename, attachment.AsrReferText) + } return fmt.Sprintf("[audio: %s]", filename) case "video": - if attachment.AsrReferText != "" { - return fmt.Sprintf("[video: %s]", attachment.AsrReferText) - } return fmt.Sprintf("[video: %s]", filename) default: return fmt.Sprintf("[file: %s]", filename)