openclaw - 💡(How to fix) Fix Feishu: ackReaction removed before reply message is sent, causing user confusion [1 comments, 1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#58866Fetched 2026-04-08 02:31:46
View on GitHub
Comments
1
Participants
1
Timeline
0
Reactions
0
Author
Participants

Fix Action

Fix / Workaround

Current Workaround

RAW_BUFFERClick to expand / collapse

Bug Description

When using Feishu channel, the bot adds an ackReaction (e.g. 👀) to indicate "message received", then immediately removes it before the actual reply message is sent. This creates a confusing user experience:

  1. User sends a message
  2. Bot adds 👀 reaction
  3. Bot removes 👀 reaction ← User sees "reaction disappeared"
  4. Bot sends reply message ← May take several seconds

During step 3-4, the user sees the 👀 disappear and may think the bot has crashed or disconnected, especially when the reply takes time to generate.

Expected Behavior

The ackReaction should be removed after the reply message has been successfully sent to the user, not before. This ensures the user always sees the 👀 reaction until the actual reply arrives.

Current Workaround

Setting messages.ackReaction: "" in openclaw.json disables the feature entirely, but users lose the useful "message received" visual confirmation.

Additional Context

  • This bug affects Feishu channel
  • Similar issue may exist on other channels that don't support removeAckAfterReply: true
  • The problematic code flow is in ack-reactions.tsremoveAckReactionAfterReply() which is called in the message handling loop regardless of removeAckAfterReply flag support

extent analysis

TL;DR

Modify the removeAckReactionAfterReply() function in ack-reactions.ts to only remove the ackReaction after the reply message has been sent.

Guidance

  • Check the removeAckAfterReply flag support for each channel and only call removeAckReactionAfterReply() if the flag is supported and set to true.
  • Consider adding a delay between sending the reply message and removing the ackReaction to ensure the user sees the reaction until the reply arrives.
  • Review the message handling loop to ensure it correctly handles the timing of sending reply messages and removing ackReactions.
  • Investigate adding a try-catch block around the code that sends the reply message to handle any errors that may occur, preventing the ackReaction from being removed prematurely.

Example

if (channel.supportsRemoveAckAfterReply && removeAckAfterReply) {
  // Send reply message
  sendMessage(reply);
  // Remove ackReaction after reply message has been sent
  removeAckReactionAfterReply();
} else {
  // Handle channels that do not support removeAckAfterReply
  // ...
}

Notes

The provided solution assumes that the removeAckAfterReply flag is correctly set for each channel and that the removeAckReactionAfterReply() function is the only place where the ackReaction is removed. Additional debugging may be necessary to ensure the correct behavior.

Recommendation

Apply workaround: Modify the removeAckReactionAfterReply() function to correctly handle the timing of removing the ackReaction, as this will provide a more accurate "message received" visual confirmation to users.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING