How to Connect OpenClaw to Telegram with Bot API 9.5 Streaming
Set up OpenClaw as a Telegram chatbot with native streaming responses using Bot API 9.5. Step-by-step guide covering bot creation, plugin setup, and streaming modes.
Telegram is one of the most popular ways to interact with an OpenClaw agent on the go. With the release of Telegram Bot API 9.5 in March 2026, you can now get real-time streaming responses — the "typing bubble" experience where you see the agent's reply appear word by word, just like ChatGPT. OpenClaw was the first framework to ship full Bot API 9.5 support, and this guide shows you how to set it up from scratch.
Prerequisites
- A running OpenClaw instance (version 2026.3.7 or later for Bot API 9.5 support)
- A Telegram account
- About 15 minutes of setup time
- No programming experience required
If you are new to OpenClaw, start with our Installation and Setup guide first.
Step 1: Create a Telegram Bot
Before connecting OpenClaw, you need a Telegram bot token:
- Open Telegram and search for @BotFather
- Send
/newbot - Choose a display name for your bot (e.g., "My OpenClaw Assistant")
- Choose a username ending in
bot(e.g.,my_openclaw_bot) - BotFather will reply with your bot token — a long string that looks like
123456789:ABCdef.... Copy this and keep it safe.
/revokenewtoken with BotFather to generate a new one.
Step 2: Install the Telegram Skill
In your OpenClaw dashboard or CLI, install the official Telegram skill:
openclaw plugin install telegram-skill
You can also find it in the plugin browser under Messaging > Telegram Skill.
Step 3: Configure the Connection
Add your bot token to the Telegram skill configuration:
# ~/.openclaw/plugins/telegram-skill/config.yaml
telegram:
botToken: "YOUR_BOT_TOKEN_HERE"
streaming:
enabled: true
mode: partial # Options: partial, block, progress
Let us break down the streaming modes:
- partial: Words appear one at a time as they are generated. This feels the most natural and responsive — like watching someone type. Recommended for most users.
- block: The response is sent in larger chunks (every few sentences). Less fluid but uses fewer API calls, which matters if you are on a metered connection.
- progress: A progress indicator shows while the full response generates, then the complete message appears at once. Best for agents that do heavy processing before responding.
Step 4: Start the Telegram Listener
Activate the Telegram connection:
openclaw plugin start telegram-skill
You should see a confirmation message like:
[telegram-skill] Connected to Telegram Bot API 9.5
[telegram-skill] Streaming mode: partial
[telegram-skill] Listening for messages...
Now open Telegram, find your bot by its username, and send a message. You should see the streaming response appear in real time.
Step 5: Configure Group Chat Support
By default, the bot only responds in private (direct) messages. To enable it in group chats:
telegram:
groups:
enabled: true
respondToMentions: true # Only respond when @mentioned
respondToReplies: true # Also respond to direct replies to the bot
respondToAll: false # Don't respond to every message (noisy!)
Add the bot to a Telegram group and give it the "Read Messages" permission. In groups, streaming works slightly differently — the bot uses sendMessage followed by editMessageText for real-time updates, since sendMessageDraft is optimized for private chats.
Step 6: Customize Bot Behavior
You can fine-tune how the bot presents itself:
telegram:
persona:
name: "Claw"
greeting: "Hey! I'm your OpenClaw assistant. How can I help?"
maxResponseLength: 4000 # Telegram's message limit is 4096 chars
splitLongMessages: true # Auto-split if response exceeds limit
You can also add keyboard buttons for common actions:
telegram:
keyboard:
enabled: true
buttons:
- text: "Summarize my day"
command: "/summarize"
- text: "Check my tasks"
command: "/tasks"
- text: "Search the web"
command: "/search"
Step 7: Verify Streaming Is Working
To confirm you are getting true Bot API 9.5 streaming (not the legacy edit-based fallback):
- Send a message that requires a long response, like "Explain quantum computing in detail"
- Watch for the typing indicator — you should see the text appear progressively in the chat bubble
- Check the plugin logs for
[telegram-skill] Using sendMessageDraft (Bot API 9.5)— this confirms native streaming is active
If you see [telegram-skill] Falling back to editMessageText, your Telegram client or bot may not have Bot API 9.5 enabled yet. Update your Telegram app and verify your OpenClaw version is 2026.3.7+.
Tips and Common Mistakes
Common mistake: SettingrespondToAll: true in a busy group chat. Your bot will try to respond to every message, which burns through your AI model's API credits fast and annoys other group members. Use respondToMentions: true instead.
Pro tip: Use Telegram's built-in bot commands feature. Send /setcommands to BotFather and register your custom commands so users get autocomplete suggestions when they type /.
Watch out: If you are running OpenClaw on a cheap VPS, Telegram's webhook delivery can timeout if your agent takes more than 60 seconds to start responding. For complex queries, consider setting the streaming mode to progress so Telegram sees an immediate acknowledgment.
Common mistake: Forgetting to restart the Telegram skill after config changes:
openclaw plugin restart telegram-skill
Summary and Next Steps
You now have an OpenClaw agent accessible through Telegram with real-time streaming responses. The setup is straightforward: create a bot with BotFather, install the Telegram skill, add your token, and configure streaming mode.
To take your Telegram bot further:
- Connecting to Messaging Platforms covers Discord, Slack, and other integrations
- Social Media Automation for using your agent to manage social media through Telegram commands
- Memory Management with Lossless-Claw for persistent per-chat memory across Telegram conversations
Related Resources
- Telegram Skill in the directory
- Telegram Bot API 9.5 Streaming — news coverage
- OpenClaw v2026.3.7 ContextEngine Release