telegram
Send and receive messages via the Telegram Bot API using curl
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Send and receive messages via the Telegram Bot API using curl
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | telegram |
| description | Send and receive messages via the Telegram Bot API using curl |
Use this skill to interact with Telegram via the Bot API. All operations use
curl against https://api.telegram.org/bot<TOKEN>/....
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.
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
curl -s "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendDocument" \
-F chat_id="${TELEGRAM_CHAT_ID}" \
-F document=@/path/to/file.txt
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)"'
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
curl -s "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/getChat" \
-d chat_id="${TELEGRAM_CHAT_ID}" | jq .
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
Telegram limits bots to ~30 messages/second to different chats, and ~20 messages/minute to the same chat. Add short delays between batch sends.
Goals, todos, and intentions tracking
Reply to humans who are chatting with me
Reference for the shellm system — recursive LLM shell, identity management, memory, skills, trajectory, and all CLI tools. Use when working on shellm itself, debugging agent behavior, or understanding how the pieces fit together.
Life context and memory system
Manage Google Drive, Gmail, Calendar, Sheets, Docs, and Chat via the gws CLI
Read, write, edit, and search files using view, put, sub, and glob