Telegram Bot API Skill
SkillCommunicationOperate Telegram Bot API through UXC with a curated OpenAPI schema, bot-token path auth, polling-based reads, and webhook management guardrails.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Telegram Bot API Skill skill
What this skill tells your AI
The instructions your AI receives, as published by holon-run/uxc in skills/telegram-openapi-skill/SKILL.md and read by ahel’s review.
Use this skill to run Telegram Bot API operations through uxc + OpenAPI.
Reuse the uxc skill for shared execution, auth, and error-handling guidance.
Prerequisites
uxcis installed and available inPATH.- Network access to
https://api.telegram.org. - Access to the curated OpenAPI schema URL:
https://raw.githubusercontent.com/holon-run/uxc/main/skills/telegram-openapi-skill/references/telegram-bot.openapi.json
- A Telegram bot token from BotFather.
Scope
This skill covers a lean bot core surface:
- bot identity and chat lookup
- text sends
- media sends by
file_id, HTTP URL, or local multipart upload - polling via
getUpdates - webhook setup/status/delete operations
This skill does not cover:
- multipart media groups with
attach://file arrays - generic webhook ingestion/runtime hosting
- the full Telegram Bot API surface
Authentication
Telegram Bot API requires the bot token in the request path: https://api.telegram.org/bot<TOKEN>/METHOD_NAME.
Configure the credential with a request path prefix template:
uxc auth credential set telegram-bot \
--auth-type api_key \
--secret-env TELEGRAM_BOT_TOKEN \
--path-prefix-template "/bot{{secret}}"
uxc auth binding add \
--id telegram-bot \
--host api.telegram.org \
--scheme https \
--credential telegram-bot \
--priority 100
Validate the local mapping when auth looks wrong:
uxc auth binding match https://api.telegram.org/getMe
Core Workflow
-
Use the fixed link command by default:
command -v telegram-openapi-cli- If missing, create it:
uxc link telegram-openapi-cli https://api.telegram.org --schema-url https://raw.githubusercontent.com/holon-run/uxc/main/skills/telegram-openapi-skill/references/telegram-bot.openapi.json telegram-openapi-cli -h
-
Inspect operation schema first:
telegram-openapi-cli get:/getMe -htelegram-openapi-cli post:/sendMessage -htelegram-openapi-cli post:/sendPhoto -htelegram-openapi-cli post:/sendDocument -htelegram-openapi-cli post:/getUpdates -h
-
Prefer read/setup validation before writes:
telegram-openapi-cli get:/getMetelegram-openapi-cli get:/getWebhookInfotelegram-openapi-cli get:/getChat chat_id=@channel_or_chat_id
-
Execute operations with key/value or positional JSON:
- key/value:
telegram-openapi-cli post:/sendMessage chat_id=CHAT_ID text="Hello from uxc" - multipart upload:
telegram-openapi-cli post:/sendPhoto chat_id=CHAT_ID photo=/tmp/photo.jpg caption="Uploaded by uxc" - positional JSON:
telegram-openapi-cli post:/sendMessage '{"chat_id":"CHAT_ID","text":"Hello from uxc"}' - daemon-backed polling subscribe:
uxc subscribe start https://api.telegram.org post:/getUpdates '{"timeout":5,"allowed_updates":["message","callback_query"]}' --mode poll --poll-config '{"interval_secs":2,"extract_items_pointer":"/result","request_cursor_arg":"offset","cursor_from_item_pointer":"/update_id","cursor_transform":"increment","checkpoint_strategy":{"type":"item_key","item_key_pointer":"/update_id"}}' --sink file:/tmp/telegram-updates.ndjson
- key/value:
Runtime Validation
The following Telegram polling flow has been validated against the real Bot API through uxc:
get:/getMeget:/getWebhookInfo- daemon-backed
uxc subscribe --mode pollonpost:/getUpdates - item-derived offset progression from
update_id + 1 - dedupe/checkpoint behavior for repeated polls
Observed runtime behavior:
dataevents are emitted for real Telegram updatespollevents record fetched/emitted/skipped countscheckpointevents are emitted after new updates are seen- repeated polls skip already-consumed updates after checkpoint advancement
Operation Groups
Read / Lookup
get:/getMeget:/getChatget:/getChatMemberget:/getWebhookInfo
Messaging
post:/sendMessagepost:/sendPhotopost:/sendDocumentpost:/sendMediaGroup
Update Delivery
post:/getUpdatespost:/setWebhookpost:/deleteWebhook
Guardrails
- Keep automation on the JSON output envelope; do not use
--text. - Parse stable fields first:
ok,kind,protocol,data,error. getUpdatesand webhook delivery are mutually exclusive:- if a webhook is configured, call
post:/deleteWebhookbefore polling withpost:/getUpdates - if polling is active, do not treat webhook operations as background subscription support
- if a webhook is configured, call
- Telegram allows only one active
getUpdatesconsumer per bot token:- if another bot process or script is polling at the same time, Telegram returns HTTP 409
- stop the other consumer before relying on daemon-backed polling subscribe
- For daemon-backed polling subscribe, prefer item-derived offset progression:
extract_items_pointershould be/resultrequest_cursor_argshould beoffsetcursor_from_item_pointershould be/update_idcursor_transformshould beincrementcheckpoint_strategy.typeshould usually beitem_keywithitem_key_pointer=/update_id
uxc auth binding matchshould be checked against a concrete Telegram method URL such ashttps://api.telegram.org/getMe, because auth is applied through a path-prefix template that expands to/bot<TOKEN>/....sendPhoto,sendDocument, andsendMediaGroupin this skill accept existingfile_idvalues or HTTP URLs only; they do not upload new local files.sendPhotoandsendDocumentalso supportmultipart/form-datalocal file uploads. File fields must be local path strings.sendMediaGroupstill stays JSON-only in this skill because current multipart v1 does not model themediaarray plusattach://file set cleanly.setWebhooksupports multipart certificate upload for self-signed certs through thecertificatefile field.- Treat
post:/sendMessage, allsend*operations, and webhook-changing operations as write/high-risk actions; require explicit user confirmation before execution. telegram-openapi-cli <operation> ...is equivalent touxc https://api.telegram.org --schema-url <telegram_openapi_schema> <operation> ....
References
- Usage patterns:
references/usage-patterns.md - Curated OpenAPI schema:
references/telegram-bot.openapi.json - Telegram Bot API docs: https://core.telegram.org/bots/api
- Local Bot API server: https://github.com/tdlib/telegram-bot-api
Signals
- GitHub stars
- 113
- Forks
- 7
- Last commit
- Sep 2026
ahel review
S4info
community integration — published by holon-run, not telegram
Automated review, not a security audit. Ruleset v1.
Advanced
- Catalog kind
- skill
- Gateway key
telegram-openapi-skill- Source
- github.com/holon-run/uxc