🦞 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)
#can not sent msg with out mention bot
1 messages · Page 1 of 1 (latest)
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:
- Allow the guild/channel in config
- Set
requireMention: false - Make sure Message Content Intent is enabled
- 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
A couple gotchas from the docs:
- If a
channelsmap exists, only listed channels are allowed requireMentionmust be underchannels.discord.guilds...- You also need Message Content Intent enabled in the Discord developer portal
Useful checks:
openclaw channels status --probe
openclaw logs --follow
openclaw doctor
Docs:
If you want, paste your channels.discord config block plus openclaw channels status --probe, and I’ll point to the exact problem.
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
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 listagain right before approving - If there’s no pending request, do
openclaw gateway restartfirst, thenopenclaw devices list
Docs:
- https://docs.openclaw.ai/cli/devices
- https://docs.openclaw.ai/web/control-ui
- https://docs.openclaw.ai/gateway/troubleshooting
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.
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)
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 alwaysis useful for testing, but I would still setrequireMention: falsein config- if a
channelsmap 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.
"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 ?
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 }
}
}
}
}
}
}
A few important bits:
requireMentiongoes underchannels.discord.guilds.<serverId>- if you define
channels, only those channels are allowed - with
groupPolicy: "allowlist", use the real server ID, not just*
After saving config, run:
openclaw gateway restart
openclaw status
Docs:
If you want, paste the config again without the token, and I’ll rewrite the exact block for you.
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 }
}
}
}
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_IDmust be the guild/server IDYOUR_CHANNEL_IDmust 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.
can you give me full config ?
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
dmPolicyat the top level, you do not need legacydm.policy - you can remove
accounts: {} - you can remove
defaultAccountunless 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.
"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
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.
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
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.
done it working