openclaw - 💡(How to fix) Fix Feishu channel: missing automatic mark-read (已读) on inbound messages

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…

The Feishu/Lark channel plugin (@openclaw/feishu v2026.5.4) does not automatically mark inbound messages as read (已读 / read receipt). When the bot receives a message, the sender does not see the "已读" indicator on the message bottom-left corner — it stays as "unread".

This is a UX issue for users who expect the standard Feishu bot behavior: when a bot processes a message, the sender should see it as "read".

Root Cause

The Feishu/Lark channel plugin (@openclaw/feishu v2026.5.4) does not automatically mark inbound messages as read (已读 / read receipt). When the bot receives a message, the sender does not see the "已读" indicator on the message bottom-left corner — it stays as "unread".

This is a UX issue for users who expect the standard Feishu bot behavior: when a bot processes a message, the sender should see it as "read".

Code Example

// Mark message as read so sender sees the "已读" indicator
await client.im.message.readUsers({
  path: { message_id: ctx.messageId },
  data: { read_users: [...] }
}).catch((err) => {
  log(`feishu[${account.accountId}]: mark-read failed: ${String(err)}`);
});

---

{
  "channels": {
    "feishu": {
      "markReadOnReceive": true
    }
  }
}
RAW_BUFFERClick to expand / collapse

Summary

The Feishu/Lark channel plugin (@openclaw/feishu v2026.5.4) does not automatically mark inbound messages as read (已读 / read receipt). When the bot receives a message, the sender does not see the "已读" indicator on the message bottom-left corner — it stays as "unread".

This is a UX issue for users who expect the standard Feishu bot behavior: when a bot processes a message, the sender should see it as "read".

Expected Behavior

When the bot receives an inbound message via Feishu WebSocket, it should call the Feishu mark-read API (e.g. POST /open-apis/im/v1/messages/{message_id}/read_users or the equivalent SDK method client.im.message.readUsers()) to mark the message as read.

Current Behavior

The message stays "unread" from the sender's perspective, even though the bot has processed it.

Investigation

I dug into the Feishu plugin source code (~/.openclaw/npm/node_modules/@openclaw/feishu/dist/):

  1. Ack reaction (emoji 👀 on received messages) is NOT implemented in the Feishu monitor code — unlike Telegram/Slack/Matrix which all have shouldAckReaction + ackReactionPromise logic.
  2. Mark-read (已读) is also NOT implemented. The only message_read reference is the event handler at im.message.message_read_v1 which is an empty stub: "im.message.message_read_v1": async () => {} — this handles incoming read-receipt events but does NOT mark messages as read.
  3. The Feishu SDK provides client.im.message.readUsers() (or similar) for marking messages as read, but it is never called in the monitor code.

Suggested Fix

In handleFeishuMessage (in monitor.account-DoDo7TZX.js), after successfully parsing and processing the inbound message, add a call to mark it as read:

// Mark message as read so sender sees the "已读" indicator
await client.im.message.readUsers({
  path: { message_id: ctx.messageId },
  data: { read_users: [...] }
}).catch((err) => {
  log(`feishu[${account.accountId}]: mark-read failed: ${String(err)}`);
});

Or add a config option:

{
  "channels": {
    "feishu": {
      "markReadOnReceive": true
    }
  }
}

Impact

  • Affects all Feishu users who expect standard bot read-receipt behavior
  • Low complexity fix — just needs an API call after message processing
  • Should be added alongside the ack-reaction feature (they serve similar UX purposes)

Related

  • Ack reaction (emoji 👀) is also missing for Feishu — both are UX feedback features
  • Other channels (Telegram, Slack, Matrix) have ack-reaction support
  • Feishu plugin has addReactionFeishu API but no automatic ack-reaction on inbound messages

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