🧪 Skills

Telegram Ops

Telegram Bot API operations for forum management. Use for creating/editing/archiving forum topics, setting topic icons, managing Telegram groups via Bot API. Use when archiving channels/topics. Requir

v1.0.0
❤️ 0
⬇️ 1.4k
👁 1
Share

Description


name: telegram-ops description: Telegram Bot API operations for forum management. Use for creating/editing/archiving forum topics, setting topic icons, managing Telegram groups via Bot API. Use when archiving channels/topics. Requires bot token from OpenClaw config.

Telegram Ops

Manage Telegram forum topics and Bot API operations.

Prerequisites

  • Bot must be admin in the group with can_manage_topics permission
  • Get the bot token from OpenClaw config:
    gateway action=config.get | jq -r '.result.parsed.channels.telegram.botToken'
    

Creating a Topic

When creating a topic, follow all of these steps:

  1. Create the topic via Telegram Bot API (returns message_thread_id)
  2. Set the icon -- pick one that matches the topic's purpose (see Icon Reference)
  3. Choose relevant skills -- run openclaw skills list, pick only ready skills that fit the topic's purpose
  4. Write a system prompt -- give the agent context for what this topic is about
  5. Patch the OpenClaw config -- register the topic with its skills and system prompt

Step 1: Create via Bot API

curl -X POST "https://api.telegram.org/bot<TOKEN>/createForumTopic" \
  -H "Content-Type: application/json" \
  -d '{
    "chat_id": <GROUP_ID>,
    "name": "topic name"
  }'

Returns message_thread_id (the topic ID) -- you need this for all subsequent steps.

Step 2: Set the Icon

curl -X POST "https://api.telegram.org/bot<TOKEN>/editForumTopic" \
  -H "Content-Type: application/json" \
  -d '{
    "chat_id": <GROUP_ID>,
    "message_thread_id": <TOPIC_ID>,
    "name": "topic name",
    "icon_custom_emoji_id": "<EMOJI_ID>"
  }'

Step 3-5: Configure OpenClaw

Patch the config to register the topic with a system prompt:

gateway action=config.patch raw='{"channels":{"telegram":{"groups":{"<GROUP_ID>":{"topics":{"<TOPIC_ID>":{"systemPrompt":"Topic-specific instructions"}}}}}}}'

Topic configs inherit from the parent group -- only specify overrides.

Do NOT add a skills key -- omitting it means all skills are available. Only restrict skills if you have a specific reason to limit the topic's capabilities.

Session Keys

Each topic gets its own isolated OpenClaw session:

agent:main:telegram:group:<GROUP_ID>:topic:<TOPIC_ID>

Each session has independent conversation history, context window, and compaction.

Topic Icons

Emoji ID Use Case
5312016608254762256 Ops, speed, alerts
💡 5312536423851630001 Ideas, suggestions
📰 5434144690511290129 News, announcements
🔥 5312241539987020022 Hot topics, urgent
❤️ 5312138559556164615 Community, love
📝 5373251851074415873 Notes, documentation
🤖 5309832892262654231 Bots, automation
💬 5417915203100613993 Chat, discussion
📊 5350305691942788490 Stats, analytics
🎯 5418085807791545980 Goals, targets

See references/emoji-ids.md for complete list.

To fetch all valid icon sticker IDs:

curl -X POST "https://api.telegram.org/bot<TOKEN>/getForumTopicIconStickers"

Archiving a Topic

Archive workflow: rename with [ARCHIVED] prefix, set folder icon, close topic, then handle the OpenClaw session.

Step 1: Archive in Telegram

Use the archive script:

scripts/archive_topic.sh <TOKEN> <GROUP_ID> <TOPIC_ID> "Current Topic Name"

This will:

  • Rename to [ARCHIVED] Current Topic Name
  • Set the 📁 folder icon (5357315181649076022)
  • Close the topic (locks it from new messages)

Step 2: Export and Delete OpenClaw Session

# Export session history to the sessions archive folder
openclaw sessions history 'agent:main:telegram:group:<GROUP_ID>:topic:<TOPIC_ID>' > ~/.openclaw/agents/main/sessions/archive/<topic-name>-<date>.md

# Delete the session (manual - remove from sessions.json and delete transcript)
# Session key: agent:main:telegram:group:<GROUP_ID>:topic:<TOPIC_ID>

Step 3: Clean Up Config (Optional)

Remove the topic from OpenClaw config if it had custom settings:

gateway action=config.patch raw='{"channels":{"telegram":{"groups":{"<GROUP_ID>":{"topics":{"<TOPIC_ID>":null}}}}}}'

Limitations

No getForumTopicInfo method exists. Cannot query topic name by thread ID.

Workarounds:

  1. Cache names from forum_topic_created events
  2. Store mapping in local config
  3. Monitor topic creation service messages

Reviews (0)

Sign in to write a review.

No reviews yet. Be the first to review!

Comments (0)

Sign in to join the discussion.

No comments yet. Be the first to share your thoughts!

Compatible Platforms

Pricing

Free

Related Configs