chenhg5/cc-connect · error
%s: get message api call: %w
Error message
%s: get message api call: %w
What it means
Feishu message-recall check wraps the lark SDK Im.Message.Get transport error inside the transient-retry and fresh-token retry layers; fires when the API call keeps failing at transport level (network or token problems).
Source
Thrown at platform/feishu/feishu.go:1145
if p.isMessageRecalled(messageID) {
return true, nil
}
if p.client == nil {
return false, fmt.Errorf("%s: client not initialized", p.tag())
}
req := larkim.NewGetMessageReqBuilder().
MessageId(messageID).
UserIdType(larkim.UserIdTypeGetMessageOpenId).
Build()
var resp *larkim.GetMessageResp
if err := p.withTransientRetry(ctx, "get message", func() error {
return p.withFreshTenantAccessTokenRetry(ctx, "get message", func(client *lark.Client, options ...larkcore.RequestOptionFunc) error {
var err error
resp, err = client.Im.Message.Get(ctx, req, options...)
if err != nil {
return fmt.Errorf("%s: get message api call: %w", p.tag(), err)
}
if !resp.Success() {
return fmt.Errorf("%s: get message failed code=%d msg=%s", p.tag(), resp.Code, resp.Msg)
}
return nil
})
}); err != nil {
if resp != nil && isMessageWithdrawnCode(resp.Code, resp.Msg) {
p.markMessageRecalled(messageID)
return true, nil
}
if isMessageWithdrawnError(err) {
p.markMessageRecalled(messageID)
return true, nil
}
return false, err
}
View on GitHub (pinned to 4000b2338a)
Solutions
- Wait for the built-in retries to absorb transient errors
- Verify app credentials if token refresh keeps failing
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at platform/feishu/feishu.go:1145 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/7fce9c4f501b9fef.
Report an issue: GitHub.