Telegram
Configure a Telegram bot for OpenClaw, run the gateway in a sandbox, and approve pairing
After onboarding succeeds, configure the Telegram bot.
OpenClaw Telegram does not use a separate login command. You configure the bot token in config or env, then start the gateway.
1. Create the Bot
In Telegram:
- Open
@BotFather. - Run
/newbot. - Pick a display name and username.
- Copy the bot token.
Treat the bot token like a password.
2. Add the Telegram Config
For a DM-first sandbox test, use pairing for DMs and disable groups at first:
openclaw config set channels.telegram.enabled true --json
openclaw config set channels.telegram.botToken '"<TELEGRAM_BOT_TOKEN>"' --json
openclaw config set channels.telegram.dmPolicy '"pairing"' --json
openclaw config set channels.telegram.groupPolicy '"disabled"' --json
openclaw config set channels.telegram.streaming '"off"' --jsonWhy this shape:
dmPolicy: "pairing"gives you the shortest first test pathgroupPolicy: "disabled"removes the noisy doctor warning about empty group allowlistsstreaming: "off"keeps Telegram replies simple and final-only during setup
3. Start the Gateway
In the sandbox container, you do not need to fix background service mode first.
This warning is expected:
Gateway service disabled.
Start with: openclaw gatewayThat just means no systemd user service is installed in the container.
Recommended first-run path:
openclaw gatewayLeave that running in one terminal.
If you want the gateway to keep running while you get your shell prompt back, use this detached form:
mkdir -p ~/.openclaw/logs
nohup openclaw gateway > ~/.openclaw/logs/gateway-sandbox.log 2>&1 & echo $! > ~/.openclaw/gateway-sandbox.pid
sleep 4That means:
- the gateway keeps running in the background
- you can keep using the same terminal for the next setup commands
- logs are written to
~/.openclaw/logs/gateway-sandbox.log
Verify the gateway:
openclaw gateway status
tail -n 60 ~/.openclaw/logs/gateway-sandbox.logWhat you want to see:
RPC probe: ok- a log line showing Telegram started successfully
4. Pair the First DM
Telegram bots cannot message you first.
Open the bot chat:
https://t.me/<bot_username>Then:
- Tap
Start - Send
hello
Approve the pairing in the sandbox.
If you started the gateway with plain openclaw gateway, leave that running and open a second terminal for the pairing commands.
If you started the gateway with the detached nohup ... & command above, you can run the pairing commands in the same terminal:
openclaw pairing list telegram
openclaw pairing approve telegram <PAIRING_CODE>Then send another DM to the bot.
OpenClaw channel auth and model auth are separate. If Telegram connects but the bot does not produce real replies, finish the model-auth step next.
5. Safer Owner-Only DM Setup
After the first test works, you can switch from pairing to an explicit allowlist.
Find your Telegram user ID:
- DM the bot
- Run
openclaw logs --follow - Read
from.id
Or use the official Bot API:
curl "https://api.telegram.org/bot<TELEGRAM_BOT_TOKEN>/getUpdates"Then update config:
openclaw config set channels.telegram.dmPolicy '"allowlist"' --json
openclaw config set channels.telegram.allowFrom '["<YOUR_TELEGRAM_USER_ID>"]' --strict-json6. Group Setup Later
Only do this after DMs work.
If you want group support:
openclaw config set channels.telegram.groupPolicy '"allowlist"' --json
openclaw config set channels.telegram.groupAllowFrom '["<YOUR_TELEGRAM_USER_ID>"]' --strict-json
openclaw config set channels.telegram.groups '{"*":{"requireMention":true}}' --strict-jsonAlso check Telegram-side settings in BotFather:
/setjoingroups/setprivacy
If the bot must see all group messages, disable privacy mode or make the bot a group admin.
Troubleshooting
openclaw gateway restartsays the gateway service is disabled: That is expected in the sandbox container. Useopenclaw gatewayin the foreground instead.- Telegram config is saved but no replies arrive: Make sure the gateway process is actually running and that you approved the pairing code.
- Group warnings mention empty allowlists:
For DM-first setup, set
channels.telegram.groupPolicyto"disabled". - The bot exists but you cannot message it:
Open the direct
https://t.me/<bot_username>link and tapStart.
Next: continue to /openclaw/setup/auth.