chenhg5/cc-connect · error
%s: send preview (reply) code=%d msg=%s
Error message
%s: send preview (reply) code=%d msg=%s
What it means
The Reply API call itself returned a Lark application error (non-zero code) while sending a preview card as a reply. The Lark code and message are embedded — typical causes are revoked message ids or missing im:message permissions.
Source
Thrown at platform/feishu/feishu.go:5108
sendContent = cardJSON
}
var msgID string
if p.shouldUseThreadOrReplyAPI(rc) {
req := larkim.NewReplyMessageReqBuilder().
MessageId(rc.messageID).
Body(p.buildReplyMessageReqBody(rc, larkim.MsgTypeInteractive, sendContent)).
Build()
var resp *larkim.ReplyMessageResp
if err := p.withTransientRetry(ctx, "send preview", func() error {
return p.withFreshTenantAccessTokenRetry(ctx, "send preview", func(client *lark.Client, options ...larkcore.RequestOptionFunc) error {
var err error
resp, err = client.Im.Message.Reply(ctx, req, options...)
if err != nil {
return fmt.Errorf("%s: send preview (reply): %w", p.tag(), err)
}
if !resp.Success() {
return fmt.Errorf("%s: send preview (reply) code=%d msg=%s", p.tag(), resp.Code, resp.Msg)
}
return nil
})
}); err != nil {
return nil, err
}
if resp.Data != nil && resp.Data.MessageId != nil {
msgID = *resp.Data.MessageId
}
} else {
req := larkim.NewCreateMessageReqBuilder().
ReceiveIdType(larkim.ReceiveIdTypeChatId).
Body(larkim.NewCreateMessageReqBodyBuilder().
ReceiveId(chatID).
MsgType(larkim.MsgTypeInteractive).
Content(sendContent).
Build()).
Build()View on GitHub (pinned to 4000b2338a)
Solutions
- Check bot permission to reply in that chat/thread
- Fall back to the new-message path if the parent message is gone
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at platform/feishu/feishu.go:5108 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of chenhg5/cc-connect@4000b2338a (2026-09-06).
Data as JSON: /api/errors/1f765c14d309e1a3.
Report an issue: GitHub.