Telegram Auto-Topic
Add /topic to the start of any message in a Telegram forum group โ a new topic is created from it. The title is figured out from your message automatically โ no need to think of one yourself.
Example
1. You send a message starting with /topic:
/topic @your_bot I need to look into renewing my passport before March
2. A new forum topic "Passport Renewal Before March" is created with your message quoted inside it. You get a reply linking directly to the new topic.
Prerequisites
- The group must be configured in OpenClaw (
channels.telegram.groups.<CHAT_ID>) โ this is how OpenClaw knows to process messages from it. - The group must have forum/topics enabled.
- Your bot must be an admin in the group with Manage Topics permission.
Handling /topic
When a message starts with /topic:
- Generate a concise 3-7 word title summarising the message.
- Run the script โ replace placeholders with actual values from the message context:
Pass an empty string for the text arg if there's no text (e.g. media-only). Use the path relative to this skill's directory.scripts/telegram-auto-topic.sh <chat_id> <message_id> "<sender name>" "<title>" "<text after /topic>" - The script returns JSON with
topic_id,title, andlink. - Reply to the original message with:
Topic created โ [<title>](<link>) - Then send a response to the actual message content in the NEW topic (use message tool with
threadIdfrom the returnedtopic_id). Respond naturally as you would to any message. - After both replies are sent, respond with NO_REPLY.
How It Works
- You send a message starting with
/topic - A new forum topic is created โ titled from your message automatically
- Your message is quoted in the new topic with your name
- You get a reply with a clickable link to the new topic
- The bot responds to your message in the new topic
Works with media too โ photos, videos, or documents with /topic in the caption get forwarded into the new topic.
Script Reference
scripts/telegram-auto-topic.sh <chat_id> <message_id> <sender> [title] [text]
| Parameter | Type | Required | Description |
|---|---|---|---|
chat_id |
arg | yes | Supergroup chat ID (negative number) |
message_id |
arg | yes | Original message to quote |
sender |
arg | yes | Display name of original sender |
title |
arg | no | Topic title. Falls back to first ~50 chars of text if omitted |
text |
arg | no | Message body after /topic. If empty, forwards as media |
Returns JSON: {"topic_id": 123, "title": "Used title", "link": "https://t.me/c/..."}
Optional configuration
Skip the @bot mention โ by default, the bot only responds when mentioned. To use /topic without mentioning the bot:
"channels.telegram.groups.<CHAT_ID>": {
"requireMention": false
}
Telegram autocomplete โ to get /topic in Telegram's command menu, add under channels.telegram:
{
"customCommands": [
{
"command": "topic",
"description": "Create a new forum topic from a message"
}
]
}
Limitations
- Attribution: Quoted messages appear as sent by the bot (Telegram API limitation). Sender name is included as attribution text below the quote.
- Media: Forwarded media shows a "Forwarded from" header โ best available but not native.
- Forum groups only: Won't work in regular groups or DMs.
- Permissions: Bot needs admin with Manage Topics.
- Title length: Telegram caps topic names at 128 characters.