#can not sent msg with out mention bot

1 messages · Page 1 of 1 (latest)

honest grail
#

🦞 OpenClaw 2026.3.28 (f9b1079)
🧠 Model: ollama/gemma4:e2b · 🔑 api-key (ollama:default)
🧮 Tokens: 21k in / 135 out · 💵 Cost: $0.0000
📚 Context: 21k/131k (16%) · 🧹 Compactions: 0
🧵 Session: agent:main:discord:channel:1491136159990939708 • updated just now
⚙️ Runtime: direct · Think: off
👥 Activation: always · 🪢 Queue: collect (depth 0)

slow pilotBOT
faint runeBOT
#

Let me check the docs and the current config behavior around Discord activation/mentions.

#

If your Discord bot only answers when you @mention it, the usual fix is:

  1. Allow the guild/channel in config
  2. Set requireMention: false
  3. Make sure Message Content Intent is enabled
  4. Restart the gateway

Minimal example:

{
  channels: {
    discord: {
      enabled: true,
      guilds: {
        "YOUR_SERVER_ID": {
#
          requireMention: false,
          channels: {
            "YOUR_CHANNEL_ID": { allow: true }
          }
        }
      }
    }
  }
}

A quick session-level test is:

/activation always
#

If you want, paste your channels.discord config block plus openclaw channels status --probe, and I’ll point to the exact problem.

honest grail
#

gateway connect failed: GatewayClientRequestError: pairing required
o
Gateway not reachable: Error: gateway closed (1008): pairing required
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: C:\Users\SECOND.openclaw\openclaw.json
Bind: lan
Gateway not reachable; showing config-only status.
Config: C:\Users\SECOND.openclaw\openclaw.json
Mode: local

  • Discord default: enabled, configured, token:config
faint runeBOT
#

That error is the real clue. I’m checking the docs for the exact 1008: pairing required fix path so I don’t guess.

#

Yep, this is a pairing problem, not a Discord mention-setting problem.

gateway closed (1008): pairing required means your local client/device is not approved to talk to the Gateway yet.

Run this on the Windows machine:

openclaw devices list
openclaw devices approve --latest
openclaw gateway restart
openclaw status

If --latest doesn’t work, use the exact request id from devices list:

#
openclaw devices approve <requestId>

A couple of gotchas:

  • If the client retried with different auth/scopes, the old request ID is stale, so run openclaw devices list again right before approving
  • If there’s no pending request, do openclaw gateway restart first, then openclaw devices list

Docs:

Once openclaw status stops showing pairing required, then we can check the Discord requireMention part if it still only replies on @mention. Paste the output if you want and I’ll check it.

honest grail
#

gateway connect failed: GatewayClientRequestError: pairing required
o
Direct scope access failed; using local fallback.
|
gateway connect failed: GatewayClientRequestError: pairing required
o
Direct scope access failed; using local fallback.
Approved 5c0e86c448de36369afaf94dd22c8389607c4fcad6e5cde352e409d52cd4f34b (c5928d0f-9690-48fe-b0e5-859a5b7668c9)

faint runeBOT
#

Nice, that pairing request was approved. 🎉

Next do:

openclaw gateway restart
openclaw status

If pairing required is gone, then the gateway-side problem is fixed.

After that, for the original Discord issue (replying without @mention), the reliable fix is still config, not just the session toggle:

{
  channels: {
#
    discord: {
      guilds: {
        "YOUR_SERVER_ID": {
          requireMention: false,
          channels: {
            "YOUR_CHANNEL_ID": { allow: true }
          }
        }
      }
    }
  }
}

Two important notes:

#
  • /activation always is useful for testing, but I would still set requireMention: false in config
  • if a channels map exists, only those listed channels are allowed

If openclaw status is clean now, paste your channels.discord.guilds block and I’ll sanity-check it.

honest grail
#

"channels": {
"discord": {
"enabled": true,
"commands": {
"native": true,
"nativeSkills": true
},
"token": "MTQ4NzQ1NDY1NjY4OTg2NDgyNQ.GpqcJq.oHBIF45armvyDSZHHJfQXOehKvcMFdpWlDIMUg",
"allowBots": false,
"groupPolicy": "allowlist",
"chunkMode": "newline",
"streaming": "off",
"dmPolicy": "allowlist",
"allowFrom": [
"1097940895006998569"
],
"defaultTo": "1487454900903350403",
"dm": {
"enabled": true,
"policy": "allowlist",
"allowFrom": [
"1097940895006998569"
],
"groupEnabled": true,
"groupChannels": [
"1491136159990939708"
]
},
"guilds": {
"*": {}
},
"agentComponents": {
"enabled": true
},
"accounts": {},
"defaultAccount": "1491136159990939708"
}
},

where i have to put ?

faint runeBOT
#

Please rotate that Discord bot token right away. You posted a live secret in chat, and it should be treated as compromised now. I’m checking the exact Discord config shape so I can show you the right place to put requireMention: false.

#

First, delete that message and reset your Discord bot token now. You pasted a live secret in chat, so treat it as compromised.

Then, for your actual question:

Put requireMention: false inside the guild entry under channels.discord.guilds.

Replace this:

guilds: {
  "*": {}
}

with something like this:

#
guilds: {
  "YOUR_SERVER_ID": {
    requireMention: false,
    channels: {
      "YOUR_CHANNEL_ID": { allow: true }
    }
  }
}

So your shape becomes:

{
  channels: {
#
    discord: {
      enabled: true,
      groupPolicy: "allowlist",
      guilds: {
        "YOUR_SERVER_ID": {
          requireMention: false,
          channels: {
            "YOUR_CHANNEL_ID": { allow: true }
          }
        }
      }
    }
  }
}
#

If you want, paste the config again without the token, and I’ll rewrite the exact block for you.

honest grail
#

like this ?
"channels": {
"discord": {
"enabled": true,
"commands": {
"native": true,
"nativeSkills": true
},
"token": "MTQ4NzQ1NDY1NjY4OTg2NDgyNQ.GpqcJq.oHBIF45armvyDSZHHJfQXOehKvcMFdpWlDIMUg",
"allowBots": false,
"groupPolicy": "allowlist",
"chunkMode": "newline",
"streaming": "off",
"dmPolicy": "allowlist",
"allowFrom": [
"1097940895006998569"
],
"defaultTo": "1487454900903350403",
"dm": {
"enabled": true,
"policy": "allowlist",
"allowFrom": [
"1097940895006998569"
],
"groupEnabled": true,
"groupChannels": [
"1491136159990939708"
]
},
guilds: {
"1487454900903350403": {
requireMention: false,
channels: {
"1491136159990939708": { allow: true }
}
}
}

faint runeBOT
#

Yes, that structure is basically right 👍

Use it like this, with quotes so it matches the rest of your config:

"channels": {
  "discord": {
    "enabled": true,
    "commands": {
      "native": true,
      "nativeSkills": true
    },
    "groupPolicy": "allowlist",
    "guilds": {
      "YOUR_SERVER_ID": {
        "requireMention": false,
#
        "channels": {
          "YOUR_CHANNEL_ID": { "allow": true }
        }
      }
    }
  }
}

For your full config, the important part is just this section:

"guilds": {
  "YOUR_SERVER_ID": {
    "requireMention": false,
#
    "channels": {
      "YOUR_CHANNEL_ID": { "allow": true }
    }
  }
}

Two checks:

  • YOUR_SERVER_ID must be the guild/server ID
  • YOUR_CHANNEL_ID must be the channel ID (or thread ID, if you want it in that thread)

So: yes, but only if those IDs are the correct server + channel IDs.
Do not just reuse defaultTo unless that really is your guild ID.

Then run:

#
openclaw gateway restart
openclaw status

Also, seriously, reset that Discord bot token now. You’ve posted it multiple times, so it should be treated as leaked.

honest grail
#

can you give me full config ?

faint runeBOT
#

Yep, I can give you a clean full Discord block, but I want to verify the supported keys first so I don’t hand you a bogus config.

#

Yep. Use a clean block like this. Also, please reset the bot token first and do not paste it again.

{
  channels: {
    discord: {
      enabled: true,

      commands: {
        native: true,
        nativeSkills: true,
      },

      // safer than putting the bot token directly in config
      token: {
        source: "env",
#
        provider: "default",
        id: "DISCORD_BOT_TOKEN",
      },

      allowBots: false,
      groupPolicy: "allowlist",
      dmPolicy: "allowlist",
      allowFrom: ["1097940895006998569"],

      dm: {
        enabled: true,
        groupEnabled: true,
        groupChannels: ["YOUR_DM_CHANNEL_ID"],
      },
#
      guilds: {
        "YOUR_SERVER_ID": {
          requireMention: false,
          channels: {
            "YOUR_CHANNEL_OR_THREAD_ID": { allow: true },
          },
        },
      },

      chunkMode: "newline",
      streaming: "off",
    },
  },
}
#

A few small corrections from your pasted config:

  • keep dmPolicy at the top level, you do not need legacy dm.policy
  • you can remove accounts: {}
  • you can remove defaultAccount unless you actually use multiple Discord accounts
  • use the real server ID under guilds
  • use the real channel ID or thread ID under channels

If you want it active for the whole server, use this instead:

guilds: {
  "YOUR_SERVER_ID": {
    requireMention: false,
  },
},
#

Then restart:

openclaw gateway restart
openclaw status

If you paste just the server ID and channel/thread ID next, I can fill this in exactly for you, no guesswork.

honest grail
#

"channels": {
"discord": {
"enabled": true,
"commands": {
"native": true,
"nativeSkills": true
},
"token": "MTQ4NzQ1NDY1NjY4OTg2NDgyNQ.GpqcJq.oHBIF45armvyDSZHHJfQXOehKvcMFdpWlDIMUg",

  },
  "defaultTo": "1487454900903350403",
  
    allowBots: false,
    "groupPolicy": "allowlist",
    "dmPolicy": "allowlist",
    "allowFrom": ["1097940895006998569"],

    "dm": {
    "enabled": true,
    "groupEnabled": true,
    "groupChannels": [
      "1491136159990939708"
    ]
  },
  guilds: {
   "1487454900903350403": {
    requireMention: false,
    channels: {
      "1491136159990939708": { allow: true }
     },
   },
 },

  chunkMode: "newline",
  streaming: "off",
},

},
}

error

faint runeBOT
#

Yep, the error is just broken JSON syntax. You closed the discord block too early, right after token.

Also, please rotate that token now. Don’t reuse the one you pasted here.

Use this exact valid JSON shape instead:

{
  "channels": {
    "discord": {
      "enabled": true,
      "commands": {
        "native": true,
        "nativeSkills": true
      },
      "token": "PASTE_YOUR_NEW_TOKEN_HERE",
#
      "allowBots": false,
      "groupPolicy": "allowlist",
      "dmPolicy": "allowlist",
      "allowFrom": [
        "1097940895006998569"
      ],
      "dm": {
        "enabled": true,
        "groupEnabled": true,
        "groupChannels": [
          "1491136159990939708"
        ]
      },
      "guilds": {
        "1487454900903350403": {
#
          "requireMention": false,
          "channels": {
            "1491136159990939708": {
              "allow": true
            }
          }
        }
      },
      "chunkMode": "newline",
      "streaming": "off"
    }
  }
}

The main fixes were:

#
  • removed the stray }, after "token"
  • fixed missing quotes on some keys
  • fixed the closing braces

Then run:

openclaw gateway restart
openclaw status

If it still errors, paste the new error only and I’ll fix it.

honest grail
#

03:36:33+07:00 Config observe anomaly: C:\Users\SECOND.openclaw\openclaw.json (missing-meta-vs-last-good, gateway-mode-missing-vs-last-good)
03:36:33+07:00 [reload] config reload skipped (invalid config): : JSON5 parse failed: SyntaxError: JSON5: invalid character '{' at 191:1

faint runeBOT
#

I think you pasted a whole top-level object into the middle of an existing config, and you probably also dropped gateway.mode. I’m checking the exact minimal top-level shape so I can give you a copy-pasteable fix.

#

That parse error usually means you added a new top-level { ... } block inside an existing { ... } file.

And the gateway-mode-missing warning means your file also needs:

gateway: { mode: "local" }

Use this shape for the whole file

If you want a minimal working file, it should look like this:

{
  gateway: {
    mode: "local",
#
  },

  channels: {
    discord: {
      enabled: true,

      commands: {
        native: true,
        nativeSkills: true,
      },

      token: "PASTE_YOUR_NEW_TOKEN_HERE",

      allowBots: false,
      groupPolicy: "allowlist",
#
      dmPolicy: "allowlist",
      allowFrom: ["1097940895006998569"],

      dm: {
        enabled: true,
        groupEnabled: true,
        groupChannels: ["1491136159990939708"],
      },

      guilds: {
        "1487454900903350403": {
          requireMention: false,
          channels: {
            "1491136159990939708": { allow: true },
          },
#
        },
      },

      chunkMode: "newline",
      streaming: "off",
    },
  },
}

Important

  • only one outer { at the top of the file
  • only one final } at the end
  • keep gateway.mode: "local"
  • reset the Discord token first, then paste the new one, not the leaked one
#

If you already have other config sections like models, agents, etc., don’t paste a second full object. Merge this into the existing file.

If you want, paste lines 180-195 from openclaw.json and I’ll point to the exact bad character.

honest grail
#

done it working