CommunicationDocumentedScanned

telegram-compose

telegram-compose skill for OpenClaw agents

Share:

Installation

npx clawhub@latest install telegram-compose

View the full skill documentation and source below.

Documentation

Telegram Compose

Rich, scannable Telegram messages via direct API with HTML formatting.

Credentials

Bot tokens: Stored in Clawdbot config at channels.telegram.accounts..botToken

# Get token from config
BOT_TOKEN=$(jq -r '.channels.telegram.accounts.alerts.botToken' ~/.clawdbot/clawdbot.json)
# Or for main bot:
BOT_TOKEN=$(jq -r '.channels.telegram.accounts.main.botToken' ~/.clawdbot/clawdbot.json)

Chat IDs: See TOOLS.md → Telegram section for configured chat IDs.


Direct API Call

# Get token and send
BOT_TOKEN=$(jq -r '.channels.telegram.accounts.alerts.botToken' ~/.clawdbot/clawdbot.json)
CHAT_ID="TARGET_CHAT_ID"  # See TOOLS.md

curl -s -X POST "" \
  -H "Content-Type: application/json" \
  -d "$(jq -n --arg chat "$CHAT_ID" --arg text "$MESSAGE" '{
    chat_id: $chat,
    text: $text,
    parse_mode: "HTML"
  }')"

HTML Tags

<b>bold</b>  <i>italic</i>  <u>underline</u>  <s>strike</s>
<code>mono</code>  <pre>code block</pre>
<tg-spoiler>hidden until tapped</tg-spoiler>
<blockquote>quote</blockquote>
<blockquote expandable>collapsed by default</blockquote>
<a href="url">link</a>
<a href="tg://user?id=123">mention by ID</a>

Escape in text: << >> &&


Structure Pattern

EMOJI <b>HEADING IN CAPS</b>

<b>Label:</b> Value
<b>Label:</b> Value

<b>SECTION</b>

• Bullet point
• Another point

<blockquote>Key quote or summary</blockquote>

<blockquote expandable><b>Details</b>

Hidden content here...
Long details go in expandable blocks.</blockquote>

<a href="">Action Link →</a>

Examples

Status update:

📋 <b>TASK COMPLETE</b>

<b>Task:</b> Deploy v2.3
<b>Status:</b> ✅ Done
<b>Duration:</b> 12 min

<blockquote>All health checks passing.</blockquote>

Alert:

⚠️ <b>ATTENTION NEEDED</b>

<b>Issue:</b> API rate limit at 90%
<b>Action:</b> Review usage

<a href="">View Dashboard →</a>

List:

✅ <b>PRIORITIES</b>

• <s>Review PR #234</s> — done
• <b>Finish docs</b> — in progress
• Deploy staging

<i>2 of 3 complete</i>


Style Rules

  • Faux headings: EMOJI CAPS TITLE with blank line after

  • Emojis: 1-3 per message as visual anchors, not decoration

  • Whitespace: Blank lines between sections

  • Long content: Use

  • Links: Own line, with arrow: Link Text →

  • Avoid Markdown Tables

    Markdown tables render too wide on mobile — often unreadable. Use these alternatives:

    Vertical key-value (best for 2-3 columns):

    <pre>
    hzl-cli: 1.11.1 → 1.12.0
    skill:   1.0.5 → 1.0.6
    </pre>

    Compact list with separators:

    <pre>
    ▸ hzl-cli │ 1.12.0 ✓
    ▸ skill   │ 1.0.6 ✓
    </pre>

    Record cards (multi-field rows):

    <b>Ruby</b>
    Birthday: Jun 16 · Age: 11
    
    <b>Rhodes</b>
    Birthday: Oct 1 · Age: 8

    Bullet lists (simplest):

    • <b>hzl-cli:</b> 1.12.0
    • <b>skill:</b> 1.0.6

    Rule: Reserve

     blocks for code/commands. For structured data, use bullets + bold or vertical key-value.


    Limits

    • Message: 4,096 chars
    • Caption: 1,024 chars

    When to Use Direct API vs Clawdbot

    Direct APIClawdbot message tool
    Structured messagesQuick acknowledgments
    Status/alerts/reportsSimple replies
    Need underline/spoiler/expandableBasic formatting sufficient
    Visual hierarchy mattersThrowaway messages