fix(feishu): early-return for non-reply messages, add cache and fetchMessageByID comment

This commit is contained in:
ywj 2026-03-31 17:05:42 +08:00
parent 9627846e5b
commit 245946f689
2 changed files with 9 additions and 1 deletions

View file

@ -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,

View file

@ -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