From 245946f689092ce21353f35b1bf7dd273c1a676d Mon Sep 17 00:00:00 2001 From: ywj <138745068+yangwenjie1231@users.noreply.github.com> Date: Tue, 31 Mar 2026 17:05:42 +0800 Subject: [PATCH] fix(feishu): early-return for non-reply messages, add cache and fetchMessageByID comment --- pkg/channels/feishu/feishu_64.go | 7 +++++++ pkg/channels/feishu/feishu_reply.go | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/pkg/channels/feishu/feishu_64.go b/pkg/channels/feishu/feishu_64.go index ac10504ea..5be698cb5 100644 --- a/pkg/channels/feishu/feishu_64.go +++ b/pkg/channels/feishu/feishu_64.go @@ -469,6 +469,13 @@ func (c *FeishuChannel) handleMessageReceive(ctx context.Context, event *larkim. content = "[empty message]" } + if replyTargetID(message) != "" || stringValue(message.ThreadId) != "" { + content, mediaRefs = c.prependReplyContext(ctx, message, chatID, content, mediaRefs) + } + if content == "" { + content = "[empty message]" + } + logger.InfoCF("feishu", "Feishu message received", map[string]any{ "sender_id": senderID, "chat_id": chatID, diff --git a/pkg/channels/feishu/feishu_reply.go b/pkg/channels/feishu/feishu_reply.go index 98dd89690..22dfe3e87 100644 --- a/pkg/channels/feishu/feishu_reply.go +++ b/pkg/channels/feishu/feishu_reply.go @@ -147,7 +147,8 @@ func (c *FeishuChannel) fetchMessageByID(ctx context.Context, messageID string) if resp.Data == nil || len(resp.Data.Items) == 0 || resp.Data.Items[0] == nil { return nil, fmt.Errorf("feishu get message: empty response") } - + // Items[0] contains the target message - the Feishu API returns a list + // but we request a single message by ID, so the list always has at most one item. msg := resp.Data.Items[0] c.messageCache.Store(messageID, &cachedMessage{msg: msg, expiry: time.Now().Add(messageCacheTTL)}) return msg, nil