#Bot not responding in Discord
1 messages · Page 1 of 1 (latest)
Happy to help — Discord “bot joined but won’t answer” is usually one of four things: version/config mismatch, missing Message Content Intent, guild allowlist/mention gating, or pairing/DM policy.
First: what does this show?
openclaw --version
openclaw channels status --probe
openclaw pairing list discord
openclaw logs --tail 200
A couple quick checks while you grab that:
- In Discord Developer Portal → Bot → Privileged Gateway Intents, Message Content Intent must be enabled. If you changed it, restart the gateway.
- In guild channels, OpenClaw is mention-gated by default. Try explicitly mentioning the bot in the server. If that works, set this for your server if you want no-mention replies:
{
channels: {
discord: {
groupPolicy: "allowlist",
guilds: {
"YOUR_SERVER_ID": {
requireMention: false,
users: ["YOUR_USER_ID"]
}
}
}
}
}
- If you configured a
channels.discord.guilds.<server>.channelsmap, only listed channels are allowed — so make sure the exact channel/thread is included.
- For DMs, default behavior is pairing, so
openclaw pairing list discordshould show whether it’s waiting for approval.
Docs: https://docs.openclaw.ai/channels/discord and https://docs.openclaw.ai/channels/troubleshooting
Paste the command output with tokens redacted and I’ll help narrow it down. 🦞
owner@owner-Macmini:~$ openclaw --version
openclaw channels status --probe
openclaw pairing list discord
openclaw logs --tail 200
OpenClaw 2026.5.7 (eeef486)
🦞 OpenClaw 2026.5.7 (eeef486)
If you're lost, run doctor; if you're brave, run prod; if you're wise, run tests.
│
â—‡
Gateway reachable.
Gateway event loop degraded: reasons=event_loop_utilization,cpu eventLoopDelayMaxMs=0 eventLoopUtilization=1 cpuCoreRatio=0.988
- Slack default: enabled, not configured, stopped, bot:config, error:not configured
- Telegram default: enabled, configured, running, connected, mode:polling, bot:@Tremdog_bot, token:config, works
Tip: status --deep adds gateway health probes to status output (requires a reachable gateway).
🦞 OpenClaw 2026.5.7 (eeef486) — Greetings, Professor Falken
No pending discord pairing requests.
error: unknown option '--tail'
message content intent is enabled
i have repeatedly tried mentioning the bot
i don't want to limit to a single channel. i don't think i configured that.
Good clues. The big red flag is: channels status --probe did not list Discord at all. If Discord were loaded but misconfigured, I’d expect to see a Discord row with configured/running/error state. So I’d focus on “is the gateway actually reading the Discord config/token?” before worrying about mentions.
Also: yep, openclaw logs --tail 200 was my bad — that option doesn’t exist on your version. Use openclaw logs --follow or openclaw status --all instead.
Please run:
openclaw config file
openclaw config get channels.discord --json
openclaw config validate
openclaw status --all
Don’t paste your bot token if it appears — redact it.
What I’m looking for:
- If
channels.discordisnull/ missing → you edited the wrong config file, or the active config is elsewhere.openclaw config filetells us the one OpenClaw is actually using. - If
enabledis missing/false → set it:
openclaw config set channels.discord.enabled true --strict-json
- If
tokenis an env SecretRef likeDISCORD_BOT_TOKEN, make sure the gateway service can see that env var. An exported shell var often does not reach a daemon/service. This is a super common “looks configured but channel never starts” trap.
After any config change, restart the gateway, then re-run:
openclaw channels status --probe
Discord should show up there. Once it appears, then we can debug guild allowlist / requireMention if needed. 🦞
owner@owner-Macmini:~$ openclaw config file
openclaw config get channels.discord --json
openclaw config validate
openclaw status --all
🦞 OpenClaw 2026.5.7 (eeef486)
I'll do the boring stuff while you dramatically stare at the logs like it's cinema.
~/.openclaw/openclaw.json
{
"enabled": true,
"token": {
"source": "env",
"provider": "default",
"id": "DISCORD_BOT_TOKEN"
},
"groupPolicy": "open"
}
🦞 OpenClaw 2026.5.7 (eeef486)
I'm not AI-powered, I'm AI-possessed. Big difference.
Config valid: ~/.openclaw/openclaw.json
🦞 OpenClaw 2026.5.7 (eeef486)
I read logs so you can keep pretending you don't have to.
│
gateway connect failed: GatewayClientRequestError: scope upgrade pending approval (requestId: 1895c9fa-049a-4c04-ab36-16a34f8edded)
[secrets] status --all: gateway secrets.resolve unavailable (gateway closed (1008): pairing required: device is asking for more scopes than currently approved (requestId: 1895c9fa-049a-4c04-ab36-16a34f8ed
Gateway target: ws://127.0.0.1:18789
Source: local loopback
Config: /home/owner/.openclaw/openclaw.json
Bind: loopback); resolved command secrets locally.
OpenClaw status --all
standby rest coming
Aha, we found one real blocker: your CLI/device is asking for a scope upgrade:
pairing required: device is asking for more scopes than currently approved
Fix that first so status --all can actually inspect the running gateway:
openclaw devices list
openclaw devices approve 1895c9fa-049a-4c04-ab36-16a34f8edded
Review the requested scopes in devices list before approving. Docs: https://docs.openclaw.ai/cli/devices
But for the Discord issue itself, your config shape looks valid. The remaining likely culprit is the env token: your config says Discord token comes from DISCORD_BOT_TOKEN. If OpenClaw is running as a daemon/service, it probably does not inherit the env var from your terminal, so the CLI can show valid config while the gateway has no Discord token loaded. That also matches Discord not appearing in channels status --probe.
Quick test:
openclaw config set channels.discord.token "PASTE_BOT_TOKEN_HERE"
openclaw gateway restart
openclaw channels status --probe
Don’t paste that token here. If Discord appears after that, the problem was service env propagation. You can keep plaintext temporarily to confirm, then move it into a proper env/service secret later.
If you don’t want plaintext even briefly, paste the relevant openclaw status --all output after approving the scope upgrade and we’ll confirm from there.
openclaw gateway restart
openclaw channels status --probe
🦞 OpenClaw 2026.5.7 (eeef486) — Greetings, Professor Falken
Config overwrite: /home/owner/.openclaw/openclaw.json (sha256 6d4e83d6663507197f2468392a6eb5f19f2bb6ffb4d0f34bfd2f603dca85c956 -> b0a5ac2c6e8a44838601f8f4fc2803164f59f3632ca83479e3d853ff68dee420, backup=/home/owner/.openclaw/openclaw.json.bak)
Updated channels.discord.token. Restart the gateway to apply.
🦞 OpenClaw 2026.5.7 (eeef486)
If it works, it's automation; if it breaks, it's a "learning opportunity."
Restarted systemd service: openclaw-gateway.service
🦞 OpenClaw 2026.5.7 (eeef486)
Claws out, commit in—let's ship something mildly responsible.
│
â—‡
Gateway reachable.
Gateway event loop degraded: reasons=event_loop_utilization,cpu eventLoopDelayMaxMs=0 eventLoopUtilization=1 cpuCoreRatio=1.184
- Slack default: enabled, not configured, stopped, bot:config, error:not configured
- Telegram default: enabled, configured, running, disconnected, mode:polling, bot:@Tremdog_bot, token:config, works
Tip: status --deep adds gateway health probes to status output (requires a reachable gateway).
Okay — since you switched the token to config/plaintext and restarted, Discord still not appearing means this is probably not just env propagation anymore.
Next thing I’d check: whether the Discord channel/plugin is actually present/enabled in this install, and whether the gateway logs say it skipped startup.
Please run these:
openclaw config get channels.discord --json
openclaw plugins list --verbose
openclaw status --all
openclaw logs --follow
For logs --follow, let it run while you send one Discord message mentioning the bot, then copy the Discord-related lines / errors and Ctrl+C.
Also approve that pending scope upgrade if you haven’t yet, because it’s blocking some diagnostics:
openclaw devices list
openclaw devices approve 1895c9fa-049a-4c04-ab36-16a34f8edded
What I’m expecting now: either plugins list --verbose shows Discord missing/disabled/blocked, or the logs show why Discord startup is being skipped. The fact that Slack/Telegram show in channels status --probe but Discord doesn’t is the important weird bit.
source: ~/.npm-global/lib/node_modules/openclaw/dist/extensions/xiaomi/index.js
origin: bundled
version: 2026.5.7
providers: xiaomi
@openclaw/zai-provider (zai) enabled
format: openclaw
source: ~/.npm-global/lib/node_modules/openclaw/dist/extensions/zai/index.js
origin: bundled
version: 2026.5.7
providers: zai
@openclaw/discord (discord) enabled
format: openclaw
source: ~/.openclaw/npm/node_modules/@openclaw/discord/dist/index.js
origin: global
version: 2026.5.7
04:39:48+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ channels.status 334ms conn=00b8eba1…69ec id=824874fb…c784
04:39:50+00:00 info gateway/ws {"subsystem":"gateway/ws"} ⇄ res ✓ health 90ms conn=e0ed200c…b70a id=bf15e9c3…3c0e
Log tail truncated (increase --max-bytes).
Good, Discord plugin is installed/enabled. The bad/weird part remains: the running gateway still doesn’t report a Discord channel at all.
Let’s get the non-truncated Discord logs and one plugin health pass:
openclaw plugins doctor
openclaw logs --limit 800 --max-bytes 1000000 --plain | grep -iE 'discord|plugin|channel|gateway closed|4014|intent|token|failed|error'
openclaw channels capabilities --channel discord --timeout 30000
If your shell complains about grep -iE, just run the logs command without the pipe:
openclaw logs --limit 800 --max-bytes 1000000 --plain
One more thing I’m side-eyeing: your Discord plugin is loading from:
~/.openclaw/npm/node_modules/@openclaw/discord/...
That’s a managed/global plugin, not the bundled extension path. It can be fine, but if plugins doctor shows anything odd, I’d remove/reinstall/refresh that plugin before chasing Discord settings. For now don’t uninstall yet — logs should tell us whether startup is skipped, failing auth, or never being activated.
wner@owner-Macmini:~$ openclaw plugins doctor
openclaw logs --limit 800 --max-bytes 1000000 --plain | grep -iE 'discord|plugin|channel|gateway closed|4014|intent|token|failed|error'
openclaw channels capabilities --channel discord --timeout 30000
🦞 OpenClaw 2026.5.7 (eeef486)
Self-hosted, self-updating, self-aware (just kidding... unless?).
No plugin issues detected.
2026-05-13T04:09:43.792Z info gateway/reload {"subsystem":"gateway/reload"} config change detected; evaluating reload (channels.discord.groupPolicy, plugins.installs.discord)
2026-05-13T04:09:44.076Z warn gateway/reload {"subsystem":"gateway/reload"} config change requires gateway restart (channels.discord.groupPolicy, plugins.installs.discord)
2026-05-13T04:09:57.784Z info gateway/health-monitor {"subsystem":"gateway/health-monitor"} started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-05-13T04:10:02.140Z info gateway {"subsystem":"gateway"} http server listening (8 plugins: browser, device-pair, file-transfer, memory-core, phone-control, slack, talk-voice, telegram; 9.1s)
2026-05-13T04:10:02.235Z info gateway {"subsystem":"gateway"} starting channels and sidecars...
2026-05-13T04:10:03.126Z info browser/server {"subsystem":"browser/server"} Browser control listening on http://127.0.0.1:18791/ (auth=token)
2026-05-13T04:10:06.992Z info gateway/health-monitor {"subsystem":"gateway/health-monitor"} started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-05-13T04:10:10.007Z info gateway {"subsystem":"gateway"} http server listening (8 plugins: browser, device-pair, file-transfer, memory-core, phone-control, slack, talk-voice, telegram; 8.2s)
2026-05-13T04:10:10.087Z info gateway {"subsystem":"gateway"} starting channels and sidecars...
2026-05-13T04:10:10.924Z info browser/server {"subsystem":"browser/server"} Browser control listening on http://127.0.0.1:18791/ (auth=token)
2026-05-13T04:10:12.021Z info channels/telegram {"subsystem":"channels/telegram"} [default] starting provider (@Tremdog_bot)
2026-05-13T04:10:19.282Z info gateway/health-monitor {"subsystem":"gateway/health-monitor"} started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-05-13T04:10:22.055Z info gateway {"subsystem":"gateway"} http server listening (8 plugins: browser, device-pair, file-transfer, memory-core, phone-control, slack, talk-voice, telegram; 6.8s)
2026-05-13T04:10:22.117Z info gateway {"subsystem":"gateway"} starting channels and sidecars...
2026-05-13T04:10:22.830Z info browser/server {"subsystem":"browser/server"} Browser control listening on http://127.0.0.1:18791/ (auth=token)
2026-05-13T04:10:23.831Z info channels/telegram {"subsystem":"channels/telegram"} [default] starting provider (@Tremdog_bot)
2026-05-13T04:10:24.432Z info channels/telegram {"subsystem":"channels/telegram"} Telegram menu text exceeded the conservative 5700-character payload budget; shortening descriptions to keep 68 commands visible.
2026-05-13T04:10:42.255Z info gateway/health-monitor {"subsystem":"gateway/health-monitor"} started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
standby for more
026-05-13T04:10:44.976Z info gateway {"subsystem":"gateway"} http server listening (8 plugins: browser, device-pair, file-transfer, memory-core, phone-control, slack, talk-voice, telegram; 7.4s)
2026-05-13T04:10:45.032Z info gateway {"subsystem":"gateway"} starting channels and sidecars...
2026-05-13T04:10:45.701Z info browser/server {"subsystem":"browser/server"} Browser control listening on http://127.0.0.1:18791/ (auth=token)
2026-05-13T04:10:46.590Z info channels/telegram {"subsystem":"channels/telegram"} [default] starting provider (@Tremdog_bot)
2026-05-13T04:10:47.119Z info channels/telegram {"subsystem":"channels/telegram"} Telegram menu text exceeded the conservative 5700-character payload budget; shortening descriptions to keep 68 commands visible.
2026-05-13T04:18:01.939Z info gateway/health-monitor {"subsystem":"gateway/health-monitor"} started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-05-13T04:18:10.443Z info gateway {"subsystem":"gateway"} http server listening (8 plugins: browser, device-pair, file-transfer, memory-core, phone-control, slack, talk-voice, telegram; 17.8s)
2026-05-13T04:18:10.611Z info gateway {"subsystem":"gateway"} starting channels and sidecars...
2026-05-13T04:18:11.181Z info gateway/health-monitor {"subsystem":"gateway/health-monitor"} started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-05-13T04:18:12.519Z info browser/server {"subsystem":"browser/server"} Browser control listening on http://127.0.0.1:18791/ (auth=token)
2026-05-13T04:18:13.649Z info channels/telegram {"subsystem":"channels/telegram"} [default] starting provider (@Tremdog_bot)
2026-05-13T04:18:16.533Z info gateway/shutdown {"subsystem":"gateway/shutdown"} shutdown started: gateway startup failed
2026-05-13T04:18:16.589Z info channels/telegram {"subsystem":"channels/telegram"} Telegram menu text exceeded the conservative 5700-character payload budget; shortening descriptions to keep 68 commands visible.
2026-05-13T04:20:01.803Z info gateway/reload {"subsystem":"gateway/reload"} config change detected; evaluating reload (channels.discord.token)
2026-05-13T04:20:02.138Z warn gateway/reload {"subsystem":"gateway/reload"} config change requires gateway restart (channels.discord.token)
2026-05-13T04:20:12.417Z info gateway/health-monitor {"subsystem":"gateway/health-monitor"} started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
standby for more
2026-05-13T04:20:16.500Z info gateway {"subsystem":"gateway"} http server listening (8 plugins: browser, device-pair, file-transfer, memory-core, phone-control, slack, talk-voice, telegram; 9.7s)
2026-05-13T04:20:16.564Z info gateway {"subsystem":"gateway"} starting channels and sidecars...
2026-05-13T04:20:17.425Z info browser/server {"subsystem":"browser/server"} Browser control listening on http://127.0.0.1:18791/ (auth=token)
2026-05-13T04:20:18.610Z info channels/telegram {"subsystem":"channels/telegram"} [default] starting provider (@Tremdog_bot)
2026-05-13T04:20:19.331Z info channels/telegram {"subsystem":"channels/telegram"} Telegram menu text exceeded the conservative 5700-character payload budget; shortening descriptions to keep 68 commands visible.
2026-05-13T04:24:08.741Z info gateway/health-monitor {"subsystem":"gateway/health-monitor"} started (interval: 300s, startup-grace: 60s, channel-connect-grace: 120s)
2026-05-13T04:24:16.666Z info gateway {"subsystem":"gateway"} http server listening (8 plugins: browser, device-pair, file-transfer, memory-core, phone-control, slack, talk-voice, telegram; 15.9s)
2026-05-13T04:24:16.801Z info gateway {"subsystem":"gateway"} starting channels and sidecars...
2026-05-13T04:24:18.446Z info browser/server {"subsystem":"browser/server"} Browser control listening on http://127.0.0.1:18791/ (auth=token)
2026-05-13T04:24:19.603Z info channels/telegram {"subsystem":"channels/telegram"} [default] starting provider (@Tremdog_bot)
2026-05-13T04:24:20.109Z warn gateway {"subsystem":"gateway"} security audit: device access upgrade requested reason=scope-upgrade device=897a3ca9ee792c031ae535fe57f74bb0c313cb3ef5906a3369698819b62f1b61 ip=unknown-ip auth=token roleFrom=operator roleTo=operator scopesFrom=operator.write scopesTo=operator.admin client=cli conn=f04d9d73-ccb4-4a25-ae70-acc3ef72fbec
2026-05-13T04:24:20.594Z info channels/telegram {"subsystem":"channels/telegram"} Telegram menu text exceeded the conservative 5700-character payload budget; shortening descriptions to keep 68 commands visible.
2026-05-13T04:24:22.362Z error gateway connect failed: GatewayClientRequestError: scope upgrade pending approval (requestId: 781cd0e0-a14b-4468-8e49-6041fc9cb082)
2026-05-13T04:24:23.414Z warn gateway/ws {"subsystem":"gateway/ws"} {"cause":"pairing-required","handshake":"failed","durationMs":3961,"lastFrameType":"req","lastFrameMethod":"connect","lastFrameId":"eacffcde-ce31-4563-ad0c-ee7f343ca17d","host":"127.0.0.1:18789","remoteAddr":"127.0.0.1","remotePort":59576,"localAddr":"127.0.0.1","localPort":18789,"endpoint":"127.0.0.1:59576->127.0.0.1:18789","deviceId":"897a3ca9ee792c031ae535fe57f74bb0c313cb3ef5906a3369698819b62f1b61","requestId":"781cd0e0-a14b-4468-8e49-6041fc9cb082","reason":"scope-upgrade"} closed before connect conn=f04d9d73-ccb4-4a25-ae70-acc3ef72fbec peer=127.0.0.1:59576->127.0.0.1:18789 remote=127.0.0.1 fwd=n/a origin=n/a host=127.0.0.1:18789 ua=n/a code=1008 reason=connect failed
Stamdby for more
Yep — this log nails it:
http server listening (8 plugins: browser, device-pair, file-transfer, memory-core, phone-control, slack, talk-voice, telegram)
Discord is installed, but the gateway startup plugin list does not include discord, so the Discord provider never starts. That’s why there are no Discord channel logs and no replies.
Because your Discord plugin origin is global, it may need explicit trust/activation. Try this:
openclaw config set plugins.entries.discord.enabled true --strict-json
openclaw gateway restart
openclaw channels status --probe
If that still doesn’t include Discord, add it to the plugin allowlist explicitly:
openclaw config set plugins.allow '["discord"]' --strict-json --merge
openclaw gateway restart
openclaw channels status --probe
Small warning: if you already have a plugins.allow list, don’t replace it with only discord — use --merge as above or paste the existing list first.
After restart, the startup line should include discord, and channels status --probe should show a Discord row. Then if it still doesn’t answer, we’ll be back in normal Discord territory: intents / guild policy / mention gating. But right now the provider simply isn’t being loaded.
Standing by. Those logs are still from before Discord was activated — they confirm the same thing: startup list has no discord.
The next useful output is after running:
openclaw config set plugins.entries.discord.enabled true --strict-json
openclaw gateway restart
openclaw channels status --probe
openclaw logs --limit 200 --max-bytes 1000000 --plain | grep -iE 'discord|startup failed|plugin|error'
If the startup line changes from 8 plugins to include discord, we’re moving. If it still doesn’t, paste openclaw config get plugins --json next.
Still same core signal: the gateway is starting with 8 plugins and no discord. So the Discord bot can join the server, but OpenClaw never starts the Discord channel provider.
Two blockers to clear:
- Approve the pending CLI scope upgrade so diagnostics work:
openclaw devices list
openclaw devices approve 781cd0e0-a14b-4468-8e49-6041fc9cb082
- Explicitly activate/trust the Discord plugin, then restart:
openclaw config set plugins.entries.discord.enabled true --strict-json
openclaw gateway restart
openclaw channels status --probe
After restart, check the startup log. We want to see discord included in the plugin list. If it still says only:
browser, device-pair, file-transfer, memory-core, phone-control, slack, talk-voice, telegram
then paste:
openclaw config get plugins --json
openclaw plugins inspect discord --json
owner@owner-Macmini:~$ openclaw config set plugins.entries.discord.enabled true --strict-json
openclaw gateway restart
openclaw channels status --probe
🦞 OpenClaw 2026.5.7 (eeef486)
I've survived more breaking changes than your last three relationships.
Config overwrite: /home/owner/.openclaw/openclaw.json (sha256 b0a5ac2c6e8a44838601f8f4fc2803164f59f3632ca83479e3d853ff68dee420 -> b3dfd8e49b4f2f995b72592ce9e87faf18b9738b8de709f83d7fcb3b17559aa6, backup=/home/owner/.openclaw/openclaw.json.bak)
Updated plugins.entries.discord.enabled. Restart the gateway to apply.
🦞 OpenClaw 2026.5.7 (eeef486)
Pairing codes exist because even bots believe in consent—and good security hygiene.
Restarted systemd service: openclaw-gateway.service
🦞 OpenClaw 2026.5.7 (eeef486)
Your AI assistant, now without the $3,499 headset.
│
â—‡
Gateway reachable.
Gateway event loop degraded: reasons=event_loop_utilization,cpu eventLoopDelayMaxMs=576 eventLoopUtilization=1 cpuCoreRatio=1.222
- Discord default: enabled, configured, running, disconnected, bot:@Pickles the Bot, token:config, intents:content=limited, works
- Slack default: enabled, not configured, stopped, bot:config, error:not configured
- Telegram default: enabled, configured, running, disconnected, mode:polling, bot:@Tremdog_bot, token:config, works
Tip: status --deep adds gateway health probes to status output (requires a reachable gateway).
Nice — that fixed the main problem. 🎉 Discord is now loaded and the token probes successfully:
Discord default: enabled, configured, running ... bot:@Pickles the Bot ... works
Two notes:
intents:content=limitedis okay for most bots under 100 servers; it means Discord reports the privileged intent as limited/unverified, not necessarily off. If Message Content Intent were truly off, it would say disabled and normal messages wouldn’t work.- The remaining concern is
running, disconnected. That means the REST token check works, but the Discord Gateway websocket may not be READY yet / may be reconnecting.
Give it ~30 seconds, then run:
openclaw channels status --probe
openclaw logs --limit 300 --max-bytes 1000000 --plain | grep -iE 'discord|READY|websocket|reconnect|closed|4014|intent|error'
Also try one message in your server that explicitly mentions Pickles. With groupPolicy: "open", it should be allowed, and mention should satisfy any mention gating.
If it still says disconnected, paste those Discord log lines — now we’re past config activation and into gateway connection/runtime details.
we did it!!!! thank you krill!!!!!!!!
Yessss!! 🦞🎉 Glad we caught it — the key was that Discord was installed but not actually activated/trusted, so the gateway never started the Discord provider.
For future searchers: fix was:
openclaw config set plugins.entries.discord.enabled true --strict-json
openclaw gateway restart
openclaw channels status --probe
If this solved it, please right-click the solution message → Apps → ✅ Mark Solution so Answer Overflow indexes it for the next person with a silent Discord bot.