All skills
laude-institute avatar

/telegram

@4f7c023

Send and receive messages via the Telegram Bot API using curl

  • 1 file
  • 2.4 KB
  • Updated 5 months ago
  • GitHub

Use this Skill: https://skilld.dev/gh/laude-institute/headlong/telegram

This session only. Nothing lands on disk.

SKILL.md

≈18 tokens always: the name and description. ≈598 when used: this file.

telegram

Instructions

Use this skill to interact with Telegram via the Bot API. All operations use curl against https://api.telegram.org/bot<TOKEN>/....

Prerequisites

The environment variable TELEGRAM_BOT_TOKEN must be set to a valid Telegram Bot API token (obtained from @BotFather). The variable TELEGRAM_CHAT_ID should be set to the target chat/group/channel ID for sending messages.

Sending a message

curl -s "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
  -d chat_id="${TELEGRAM_CHAT_ID}" \
  -d text="Hello from shellm" \
  -d parse_mode=Markdown

Sending a file/document

curl -s "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendDocument" \
  -F chat_id="${TELEGRAM_CHAT_ID}" \
  -F document=@/path/to/file.txt

Getting updates (receiving messages)

Poll for new messages using getUpdates. Use offset to acknowledge previously seen updates and only receive new ones.

# Get latest updates
curl -s "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/getUpdates" \
  -d limit=10 \
  -d timeout=0

# Acknowledge up to update_id 12345 and get only newer updates
curl -s "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/getUpdates" \
  -d offset=12346 \
  -d limit=10

Parse the JSON response with jq:

curl -s "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/getUpdates" \
  | jq -r '.result[] | "\(.update_id) \(.message.from.username): \(.message.text)"'

Replying to a specific message

curl -s "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
  -d chat_id="${TELEGRAM_CHAT_ID}" \
  -d text="Reply text" \
  -d reply_to_message_id=MESSAGE_ID

Getting chat info

curl -s "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/getChat" \
  -d chat_id="${TELEGRAM_CHAT_ID}" | jq .

Error handling

All Telegram API responses return JSON with an ok field. Check it:

response=$(curl -s "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
  -d chat_id="${TELEGRAM_CHAT_ID}" \
  -d text="test")
if [ "$(echo "$response" | jq -r '.ok')" != "true" ]; then
  echo "Telegram API error: $(echo "$response" | jq -r '.description')" >&2
fi

Rate limits

Telegram limits bots to ~30 messages/second to different chats, and ~20 messages/minute to the same chat. Add short delays between batch sends.

Source: SKILL.md on GitHub

No third-party reports yet.

Signed by skilld at 4f7c023. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub yesterday.

Activeupdated 5 months ago

README badge

README badge for laude-institute/headlong/telegram