← Channels Overview

πŸ“± OpenClaw + Telegram

The recommended first channel. No public IP needed, supports voice notes, survives reboots, works on every platform. BotFather to chatting in under 5 minutes.

Easy Β· ~5 minBot API (long-polling)Best starter channel

πŸ† Why Telegram?

AdvantageDetails
No public IP neededUses long-polling β€” works behind NAT, firewalls, on local machines. No port forwarding required.
2-minute setupBotFather gives you a token instantly. No app review, no business verification, no OAuth dance.
Rich mediaVoice notes, images, files, stickers, location sharing, video β€” all supported natively.
Survives rebootsToken-based auth means you never need to re-scan QR codes (unlike WhatsApp).
Group supportAdd your bot to groups with mention-based activation and per-group policies.
Cross-platformWorks on iOS, Android, desktop, and web β€” same bot everywhere.
βœ… Community consensus: Telegram is the channel most OpenClaw users start with and many never leave. It's stable, fast, and feature-rich with the lowest setup friction of any channel.

πŸ€– Create a bot with BotFather

  1. Open Telegram and search for @BotFather (verify the blue checkmark)
  2. Send /newbot
  3. Choose a display name (e.g., β€œMy OpenClaw”)
  4. Choose a username ending in bot (e.g., my_openclaw_bot)
  5. Copy the token (looks like 123456789:ABCdefGHIjklMNOpqrsTUVwxyz)
⚠️ Treat this token like a password. Anyone with it has full control of your bot. Never commit it to version control or share it publicly. If compromised, regenerate via BotFather's /revoke command.

βš™οΈ Configure OpenClaw

Option A: During onboarding

Select β€œTelegram (Bot API)” when the wizard asks for a channel. Paste your token when prompted.

Option B: Manual config

// ~/.openclaw/openclaw.json
{
  "channels": {
    "telegram": {
      "enabled": true,
      "botToken": "123456789:ABCdefGHI...",
      "dmPolicy": "pairing"
    }
  }
}

Option C: Environment variable

export TELEGRAM_BOT_TOKEN="123456789:ABCdefGHI..."

Then restart the gateway: openclaw gateway restart

πŸ’‘ Note: Telegram does not use openclaw channels login telegram. Just configure the token and start the gateway β€” it connects automatically via long-polling.

πŸ” Pairing & allowlists

With dmPolicy: "pairing" (default), unknown users get a pairing code when they message your bot:

# Approve a pairing request
openclaw pairing approve telegram <code>

# List approved users
openclaw pairing list

# Revoke access
openclaw pairing revoke telegram <user-id>

Find your Telegram user ID

  • DM your bot β†’ check openclaw logs --follow β†’ look for from.id
  • Or message @userinfobot on Telegram

Switch to allowlist (skip pairing)

{
  "channels": {
    "telegram": {
      "dmPolicy": "allowlist",
      "allowFrom": ["123456789"]
    }
  }
}
⚠️ Never use dmPolicy: "open" unless you want anyone on Telegram to use your agent (and burn your API credits). See Security Guide.

πŸ‘₯ Group chats

Add your bot to a Telegram group, then configure access:

{
  "channels": {
    "telegram": {
      "groups": {
        "*": {
          "requireMention": true
        },
        "-1001234567890": {
          "requireMention": false,
          "activation": "always"
        }
      }
    }
  }
}

The * wildcard applies to all groups. Override specific groups by their numeric ID.

πŸ’‘ Privacy Mode: Telegram bots default to Privacy Mode β€” they only see messages that @mention them or start with /. If your bot must see all group messages, disable Privacy Mode via BotFather: /setprivacy β†’ OFF. OpenClaw expects full message access by default.

✨ Telegram-specific features

FeatureStatusNotes
Text messagesβœ… FullMarkdown formatting, code blocks
Voice notesβœ… FullSend and receive β€” great for hands-free use
Images / photosβœ… FullSend and receive with captions
Files / documentsβœ… FullPDFs, spreadsheets, code files
Stickersβœ… CachedDescribed once via vision, cached in sticker-cache.json
Video notesβœ… FullCircular video messages (no captions, text sent separately)
Location sharingβœ… FullShare and receive locations
Inline buttonsβœ… FullAgent can send interactive button responses
Reply threadingβœ… FullMaintains context in reply chains
Slash commandsβœ… Full/status, /model, /reset, etc.

πŸ“‹ Streaming & forum topics

v2026.3.2+: New Telegram setups default to live streaming (channels.telegram.streaming: "partial"). You see responses word-by-word in DMs and private chats without extra config.

Telegram forum-style private chats (Topics mode) also enable draft streaming β€” you see the agent's response appearing word by word instead of waiting for the full reply. This requires Bot API 9.3+ and a forum-enabled group.

For cron job delivery to forum topics, use the topic ID format:

--to "-100GROUPID:topic:TOPICID"

🎨 BotFather customization

Optional but recommended β€” makes your bot look professional:

/setuserpic    β€” Upload a profile picture
/setdescription β€” "AI assistant powered by OpenClaw"
/setabouttext   β€” Shown in the bot's profile
/setcommands    β€” Register slash commands for autocomplete:
  status - Show session status
  model - Switch AI model
  reset - Reset conversation
  help - Show available commands

πŸ”§ Troubleshooting

ProblemFix
Bot doesn't respondCheck token is correct. Run openclaw logs --follow and send a message β€” look for errors.
401 Unauthorized in logsToken is wrong or revoked. Regenerate via BotFather /revoke and update config.
β€œplugin not found” errorTelegram is a built-in channel, not a plugin. Put config under channels.telegram, NOT plugins.entries.telegram.
Bot ignores group messagesDisable Privacy Mode: BotFather β†’ /setprivacy β†’ OFF. Or ensure messages @mention the bot.
Connection issues in DockerSet env var OPENCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY=true (required for image v2026.2.17+).
Old Moltbot/Clawdbot conflictKill old processes: ps aux | grep -E '(moltbot|clawdbot).*gateway'. Only one gateway should run.
Pairing code expiredCodes expire after 1 hour. Generate a new one by messaging the bot again.