Skip to content

Discord ack reactions not firing (ackReaction config ignored) #28268

@hdw1219

Description

@hdw1219

Bug Description

Discord ack reactions (ackReaction) are configured but never sent. No reaction appears on inbound messages, and no log entry is emitted (not even an error).

Environment

  • OpenClaw version: 2026.2.26
  • OS: Linux 6.8.0-101-generic (x64)
  • Node: v22.22.0
  • Channel: Discord (multi-account setup with 5 bot accounts)

Configuration

ackReaction is set at all resolution levels:

{
  "messages": {
    "ackReaction": "👀",
    "ackReactionScope": "all"
  },
  "channels": {
    "discord": {
      "accounts": {
        "deelia": { "ackReaction": "👀" },
        "div": { "ackReaction": "👀" },
        "chief": { "ackReaction": "👀" },
        "einstein": { "ackReaction": "👀" },
        "gabibou": { "ackReaction": "👀" }
      }
    }
  }
}

What works

  • Discord bot has Add Reactions permission (confirmed in Discord Developer Portal)
  • Manual reactions via message(action="react") tool work perfectly
  • Config is validated and shows no issues (config.get confirms all values)
  • Hot reload logs confirm the ackReaction config was applied

What does not work

  • No 👀 reaction appears on any inbound Discord DM
  • No log entries related to ack reaction attempts or failures (grep for "react", "ack" returns nothing relevant)
  • Full gateway restart (openclaw gateway restart) did not fix it
  • SIGUSR1 restart did not fix it

Steps to Reproduce

  1. Set messages.ackReaction to "👀" and messages.ackReactionScope to "all"
  2. Set channels.discord.accounts.<id>.ackReaction to "👀" for each account
  3. Restart gateway
  4. Send a DM to the Discord bot
  5. Expected: 👀 reaction appears on the message while processing
  6. Actual: No reaction, no log output

Code Analysis

Traced through the minified source. The pipeline looks correct:

  • resolveAckReaction() should return "👀" (account-level config present)
  • shouldAckReaction() with scope: "all" returns true
  • createStatusReactionController() should be enabled
  • setQueued() is called which enqueues applyEmoji("👀")
  • reactMessageDiscord() calls Discord REST API

Yet nothing fires. The onError handler uses logVerbose which should still write to log files. The complete absence of any log suggests the code path is never reached, possibly a stale config reference in the Discord message handler instance.

Workaround

None found. Manual reactions via the message tool work as expected.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions