From personal-corp-skills
Diagnoses, debugs, deploys, and monitors Telegram bots with structured health checks, webhook/polling diagnostics, environment validation, and safe restart checklists.
How this skill is triggered — by the user, by Claude, or both
Slash command
/personal-corp-skills:tg-bot-opsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill when the real question is whether a Telegram bot is receiving
Use this skill when the real question is whether a Telegram bot is receiving updates, processing them in the intended runtime, and sending visible responses to the right chat, user, or forum topic.
.env values, connection strings, raw logs, private DMs,
payment payloads, session files, or full user records.<TELEGRAM_BOT_TOKEN>,
<TELEGRAM_USER_ID>, <CHAT_ID>, <TOPIC_ID>, <WEBHOOK_URL>.If the repo or runtime is unclear, identify:
TELEGRAM_BOT_TOKEN;getMe using a masked token path.getWebhookInfo
and inspect runtime logs.409 Conflict by reading the error text:
webhook conflict means webhook/deleteWebhook path; competing getUpdates
means find the polling owner.When the bot is a gateway from Telegram into an agent runtime, read references/hermes-gateway.md. The reference is Hermes-compatible but intentionally generic: bot handle, host, service name, home directory, chat ids, topic ids, env paths, and logs must be placeholders or redacted.
getUpdates, webhooks,
sendMessage, getMe, callbacks, payments, and join requests.start(bot_token=...) or a user-session E2E harness for what a Telegram user
sees.Safe read-only checks should avoid putting the token-bearing URL in shell history, process listings, or copied logs. Prefer a tiny local helper:
import json, os, urllib.request
token = os.environ["TELEGRAM_BOT_TOKEN"]
for method in ("getMe", "getWebhookInfo"):
with urllib.request.urlopen(f"https://api.telegram.org/bot{token}/{method}") as response:
data = json.load(response)
print(method, {"ok": data.get("ok"), "result_keys": sorted((data.get("result") or {}).keys())})
Do not paste the token-bearing URL into notes or issues. In reports, write:
getWebhookInfo: webhook_url=<set|empty>, pending_update_count=<n>, last_error=<redacted>
Direct getUpdates diagnostics can consume pending updates. Use it only with a
fresh nonce, short timeout, known update owner, and restore plan.
message_thread_id.message_thread_id. Preserve message_thread_id for non-General topics.Before restarting or deploying:
getMe, webhook/polling, and one visible smoke test.Answer with:
not checked, local only, runtime checked, verified in Telegram, or blocked..env, logs, user messages, payment payloads, or DB rows.message_thread_id when the bot lives in Telegram forum topics.npx claudepluginhub serejaris/personal-corp-skills --plugin personal-corp-skillsImplements Telegram bots with full Bot API support: BotFather setup, messages, webhooks, inline keyboards, groups, channels. Node.js and Python boilerplates.
Provides CLI for Telegram Bot API using bot tokens: authenticate, send messages, read chats, get info, manage multi-bot setups. For CI/CD and server-side messaging automation.
Enables communication with users via Telegram for clarifications, options, blockers, task completion notifications, and long-running task updates instead of terminal.