Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Telegram Direct Send

v1.0.0

Send images to Telegram via direct Bot API using curl. Works around OpenClaw's broken image delivery pipeline (issue

0· 84· 1 versions· 0 current· 0 all-time· Updated 5h ago· MIT-0

Install

openclaw skills install telegram-direct-send

Telegram Direct Send

Send images to Telegram using direct HTTP API calls. Bypasses OpenClaw's native Telegram channel which fails silently for images.

Quick Start

# 1. Copy example env file and edit
cp .env.example .env
# Edit .env with your tokens

# 2. Source the env file (or add to ~/.bashrc for auto-load)
source .env

# 3. Send an image
curl -s -X POST \
  -F "chat_id=${TELEGRAM_CHAT_ID}" \
  -F "photo=@/path/to/image.png" \
  -F "caption=My screenshot" \
  "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendPhoto"

Setup

1. Get Telegram Bot Token

  1. Message @BotFather on Telegram
  2. Send /newbot or /mybots for existing
  3. Copy the API token (format: 123456789:ABC...)

2. Get Chat ID

For personal messages:

For groups:

  • Add @RawDataBot to your group
  • It will reply with the chat ID (starts with -100)

3. Configure Environment

# Option A: Export in shell (temporary)
export TELEGRAM_BOT_TOKEN="your_token"
export TELEGRAM_CHAT_ID="your_chat_id"

# Option B: Create .env file (recommended)
cp .env.example .env
# Edit .env with your values
source .env

Security: .env is gitignored — never commit secrets!

4. Auto-Load .env (Optional but Recommended)

For OpenClaw sessions: Add to your ~/.bashrc or ~/.zshrc:

# Auto-load telegram-direct-send env vars
if [ -f "$HOME/.openclaw/workspace/skills/telegram-direct-send/.env" ]; then
    source "$HOME/.openclaw/workspace/skills/telegram-direct-send/.env"
fi

For skill directory only: Create a wrapper script send-image.sh:

#!/bin/bash
# Load env vars from skill directory
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
if [ -f "$SCRIPT_DIR/.env" ]; then
    source "$SCRIPT_DIR/.env"
fi

# Now use the vars
curl -s -X POST \
  -F "chat_id=${TELEGRAM_CHAT_ID}" \
  -F "photo=@$1" \
  -F "caption=${2:-Image}" \
  "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendPhoto"

Then: chmod +x send-image.sh && ./send-image.sh ./photo.png "My caption"

Usage Examples

Send image with caption

curl -s -X POST \
  -F "chat_id=${TELEGRAM_CHAT_ID}" \
  -F "photo=@./screenshot.png" \
  -F "caption=Screenshot from $(date)" \
  "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendPhoto"

Send as document (no compression)

curl -s -X POST \
  -F "chat_id=${TELEGRAM_CHAT_ID}" \
  -F "document=@/path/to/image.png" \
  -F "caption=Original quality" \
  "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendDocument"

Send with inline keyboard

curl -s -X POST \
  -F "chat_id=${TELEGRAM_CHAT_ID}" \
  -F "photo=@./image.png" \
  -F "caption=Choose:" \
  -F "reply_markup={\"inline_keyboard\":[[{\"text\":\"Yes\",\"callback_data\":\"yes\"},{\"text\":\"No\",\"callback_data\":\"no\"}]]}" \
  "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendPhoto"

API Reference

EndpointPurpose
sendPhotoSend image (compressed)
sendDocumentSend file (no compression)
sendMessageText only
sendMediaGroupMultiple images

Troubleshooting

ErrorSolution
chat not foundCheck TELEGRAM_CHAT_ID
bot was blockedUser must /start the bot
file too largeUse sendDocument

Why This Skill Exists

OpenClaw issue #63137: Images sent via read tool render in agent context but never reach Telegram mobile clients. This skill bypasses OpenClaw's gateway entirely.

Publishing Notes

  • .env.example shows required variables
  • .gitignore excludes .env
  • No hardcoded secrets
  • Users configure via env or .env file

Version tags

latestvk974vg3rjp4s8mp8ar1qvfdfy584e0rh

Runtime requirements

Binscurl