From a1497610229798076e0ae8b7241665f754825d3e Mon Sep 17 00:00:00 2001 From: ywj <138745068+yangwenjie1231@users.noreply.github.com> Date: Tue, 31 Mar 2026 10:36:33 +0800 Subject: [PATCH] fix(feishu): skip API fallback for non-thread messages, prepend replied media refs - resolveReplyTargetMessageID: only call fetchMessageByID fallback when ThreadId is set, avoiding unnecessary API calls for non-reply messages - prependReplyContext: prepend replied media refs before current media refs to maintain correct ordering --- pkg/channels/feishu/feishu_reply.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/channels/feishu/feishu_reply.go b/pkg/channels/feishu/feishu_reply.go index 0a59bb2e6..febd6cd33 100644 --- a/pkg/channels/feishu/feishu_reply.go +++ b/pkg/channels/feishu/feishu_reply.go @@ -71,7 +71,7 @@ func (c *FeishuChannel) prependReplyContext( repliedContent := normalizeRepliedContent(messageType, rawContent, repliedMediaRefs) if len(repliedMediaRefs) > 0 { - mediaRefs = append(mediaRefs, repliedMediaRefs...) + mediaRefs = append(repliedMediaRefs, mediaRefs...) } return formatReplyContext(targetMessageID, repliedContent, content), mediaRefs @@ -93,6 +93,13 @@ func (c *FeishuChannel) resolveReplyTargetMessageID(ctx context.Context, message return "" } + if stringValue(message.ThreadId) == "" { + logger.DebugCF("feishu", "No reply target found; message is not in a thread", map[string]any{ + "message_id": stringValue(message.MessageId), + }) + return "" + } + msg, err := c.fetchMessageByID(ctx, currentMessageID) if err != nil { logger.DebugCF("feishu", "Failed to query current message detail for reply info", map[string]any{