#ack Reaction

1 messages · Page 1 of 1 (latest)

hollow dune
#

I have ask reaction turned on but I see no emoji reactions:
"messages": {
"ackReactionScope": "group-mentions"

vestal viperBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> âś… Mark Solution

idle mossBOT
#

ackReactionScope: "group-mentions" only shows a reaction in guild channels when all of these are true:

  1. The message is actually being processed (i.e. it’s not dropped by mention-gating / allowlists)
  2. Your guild/channel is configured with requireMention: true
  3. The message mentions the bot (or a mention-bypass applies)

So if you’ve set your server to “respond without @mention” (requireMention: false), then group-mentions will never react (by design).

Fix (most common)

If you want ack reactions even when mention is not required, set:

{
  messages: {
    ackReactionScope: "group-all" // or "all"
  }
#
}

Also sanity-check

  • You didn’t disable it via messages.ackReaction: "" (empty string disables)
  • The bot has Discord perms in that channel/thread: View Channel, Add Reactions, (and typically) Read Message History
  • If you set messages.removeAckAfterReply: true, the reaction may appear briefly then disappear

If you paste your channels.discord.guilds.<YOUR_GUILD_ID> block (esp. requireMention) + openclaw --version, I can tell you exactly which branch you’re hitting.

hollow dune
#

I have :
"messages": {
"ackReactionScope": "all"

#

same results

idle mossBOT
#

If you set messages.ackReactionScope: "all" and still see zero reactions, it basically means one of these is happening:

1) ackReaction is actually disabled (empty string somewhere)

Even with scope "all", OpenClaw only reacts if the resolved emoji is non-empty.

Check the effective values (especially Discord overrides):

openclaw config get messages
openclaw config get channels.discord

Look for any of these being "":

  • messages.ackReaction
  • channels.discord.ackReaction
  • channels.discord.accounts.default.ackReaction (or your account id)
#

Quick fix (force it on globally):

openclaw config set messages.ackReaction "đź‘€"

2) Gateway didn’t reload your config yet

Discord handler config is read at startup, so after changing config, restart:

openclaw gateway restart

3) Bot lacks Discord permissions to add reactions

In that channel/thread, the bot needs Add Reactions (and of course must be able to view the channel). If it can reply but can’t react, this is the #1 cause.

4) The message is being dropped before processing

#

If the bot also sometimes doesn’t reply, preflight may be dropping messages (allowlist / channel not allowed / mention gating, etc.). Logs will say why.

Run:

openclaw logs --follow

and watch for errors like:

  • Missing Permissions / 403
  • discord ack cleanup failed ... (this is the log line used when reactions fail)

If you paste the output of openclaw config get messages (just that block) + whether the bot replies in that channel, I can narrow it down to the exact cause quickly.

#

If it’s still not reacting even with:

messages: { ackReactionScope: "all" }

then one of these is true:

A) The bot is not processing your message at all (most common in guilds)

Ack reactions only happen for messages that make it past Discord “preflight”. If your guild config has requireMention: true and you didn’t @mention the bot, the message is dropped early → no reply and no reaction.

So: try @mentioning the bot once and see if you get a reaction.

If you want it to respond/react to every message in that server, set:

#
channels: {
  discord: {
    guilds: {
      YOUR_GUILD_ID: { requireMention: false }
    }
  }
}

(then restart gateway)

B) Reactions are failing (permissions / bad emoji / config override)

Even with scope "all", OpenClaw won’t react if:

  • the resolved ackReaction is "" (disabled), or
  • the bot lacks Add Reactions permission in that channel/thread, or
#
  • you set a custom emoji the bot can’t use (test with plain unicode first)

Quick test: force a unicode ack reaction:

openclaw config set messages.ackReaction "đź‘€"
openclaw gateway restart

C) It reacts but gets removed quickly

If you set messages.removeAckAfterReply: true, the reaction only stays ~1–2s.


Fastest way to pinpoint it

Run:

#
openclaw logs --follow

Send one test message, and paste the log lines around it (look for “drop … mention required” or any 403/Missing Permissions / “ack … failed” type errors).

Also tell me: does the bot reply in that channel when you don’t mention it? That answer immediately tells us if we’re in case (A).

idle mossBOT
#

Those logs confirm the message is getting processed (model run starts/ends on messageChannel=discord), but they don’t show anything about reactions — and that’s expected, because ack reactions only log when they fail (or when Discord preflight drops the message).

At this point, there are only a couple realistic causes:

1) group-mentions won’t react unless mention-gating is enabled

For Discord, ackReactionScope: "group-mentions" only fires when the server/channel is configured with requireMention: true and your message is a real mention (detectable).

If your guild is set to requireMention: false (bot replies to everything), then group-mentions will never add reactions. Use:

  • messages.ackReactionScope: "group-all" (guild only)
  • or messages.ackReactionScope: "all" (DMs + guilds)

2) Reaction is disabled by override (empty string) or failing perms

Even with scope "all", OpenClaw won’t react if the resolved emoji is "", or if the bot lacks Add Reactions in that channel/thread.

Quick “can the bot react at all?” test (best next step)

Copy the message link in Discord (it contains the correct channelId + messageId), then run:

#
openclaw message react --channel discord \
  --target channel:<CHANNEL_ID_FROM_LINK> \
  --message-id <MESSAGE_ID_FROM_LINK> \
  --emoji "đź‘€"
  • If this fails (usually 403 Missing Permissions) → fix channel/thread permissions for the bot role (Add Reactions, plus view access).
  • If this succeeds → ack reactions should work too, and the issue is config/reload/gating.

3) Verify the effective config (common gotcha: override to empty)

Please paste these outputs:

openclaw --version
openclaw config get messages
#
openclaw config get channels.discord.ackReaction
openclaw config get channels.discord.accounts

With that, I can tell you exactly whether it’s (a) scope/gating, (b) an override disabling the emoji, or (c) permissions.

hollow dune
#

mousawm@mousawm:~$ openclaw --version
openclaw config get messages
2026.3.1

🦞 OpenClaw 2026.3.1 (2a8ac97) — Gateway online—please keep hands, feet, and appendages inside the shell at all times.

{
"ackReactionScope": "all"
}
mousawm@mousawm:~$ openclaw config get channels.discord.ackReaction
openclaw config get channels.discord.accounts

🦞 OpenClaw 2026.3.1 (2a8ac97) — Ah, the fruit tree company! 🍎

all

🦞 OpenClaw 2026.3.1 (2a8ac97) — I can grep it, git blame it, and gently roast it—pick your coping mechanism.

{
"medtec": {
"enabled": true,
"token": "xxxx",
"groupPolicy": "allowlist",
"streaming": "off",
"guilds": {
"1469379151281651946": {
"channels": {
"1472712814400372766": {
"allow": true
},
"1472713245096935505": {
"allow": true
},
"1472712778883137691": {
"allow": true
},
"1472712710385828075": {
"allow": true
},
"1469373707188306051": {
"allow": true
},
"1472850630061068441": {
"allow": true
},
"1473379816169275392": {
"allow": true
},
"1474723278948929673": {
"allow": true
},
"1474720029399449704": {
"allow": true,
"requireMention": false
}
}
}
},
"ackReaction": "all"
},
"proftec": {
"enabled": true,
"token": "xxxxxx",
"groupPolicy": "allowlist",
"streaming": "off",
"guilds": {
"1469379151281651946": {
"channels": {
"1471823108720562361": {
"allow": true
},
"1474723278948929673": {
"allow": true
},
"1474720029399449704": {
"allow": true,
"requireMention": false
}
}
}
}
},

#

"default": {
"groupPolicy": "allowlist",
"streaming": "off"
}
}

idle mossBOT
#

You found the culprit in your config output:

  • messages.ackReactionScope: "all" âś… (this is the scope)
  • but you also have ackReaction: "all" ❌ (this is the emoji to react with)

ackReaction must be an actual emoji (e.g. "👀"), not "all". Right now OpenClaw is literally trying to react with an emoji named all, which Discord rejects → so you see no reactions.

You have it set in two places:

  • global: channels.discord.ackReaction = "all"
  • per account: channels.discord.accounts.medtec.ackReaction = "all" (and likely the other account inherits the global one)

Fix

Pick an emoji and set it, or just unset the bad overrides.

Option A (recommended): set it explicitly

#
openclaw config set messages.ackReaction "đź‘€"
openclaw config set messages.ackReactionScope "all"
openclaw config unset channels.discord.ackReaction
openclaw config unset channels.discord.accounts.medtec.ackReaction
openclaw gateway restart

Option B: keep it per-account

openclaw config set channels.discord.accounts.medtec.ackReaction "đź‘€"
openclaw config set channels.discord.accounts.proftec.ackReaction "đź‘€"
openclaw gateway restart

After restart, send one message in the channel — you should immediately see the 👀 reaction while it processes.

#

Yep — that "default": { ... } block just means you have a default Discord account config present (in addition to medtec / proftec).

Key point: ackReaction and ackReactionScope are different things:

  • messages.ackReactionScope = "all" âś… (scope: when to react)
  • channels.discord.ackReaction = "all" ❌ (emoji: what to react with)

Because you currently have channels.discord.ackReaction set to the literal string "all", every Discord account (including default, unless overridden) inherits that and tries to react with an emoji named all, which Discord rejects.

What to do

If you want all accounts to use a normal ack emoji, simplest fix:

openclaw config set messages.ackReaction "đź‘€"
openclaw config set messages.ackReactionScope "all"