bundled-skills/telegram-bot-messaging/SKILL.md
Send Telegram messages, files, and alerts via bot API; ask questions with inline buttons and wait for the answer. Supports multiple bots, named chat targets, and CI/cron/hook notifications.
npx skillsauth add FrancoStino/opencode-skills-antigravity telegram-bot-messagingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Send updates, alerts, and files to Telegram; read replies; run ask-and-wait approval flows. Pure bash + curl + jq — no install beyond a bot token.
First run: bash scripts/telegram.sh setup (guided BotFather walkthrough).
Before setup, sending a message or file, reading replies, or enabling a hook, obtain the user's explicit approval for the target chat, bot account, and exact content or file. Never send workspace, customer, credential, or secret data automatically. Treat a token as a secret: do not echo it, commit it, or place it in shell history.
bash scripts/telegram.sh send "Deploy finished ✅" # basic alert
bash scripts/telegram.sh send "low priority" --silent # no notification sound
bash scripts/telegram.sh send "*bold* alert" --format md # MarkdownV2 (falls back to plain)
bash scripts/telegram.sh send "hi" --to alerts --bot work # named target + named bot
bash scripts/telegram.sh file report.pdf "Q3 report" # document (photos auto-detected)
bash scripts/telegram.sh read # new incoming messages since last read
ANSWER=$(bash scripts/telegram.sh ask "Deploy to prod?" --options "Yes,No" --timeout 300)
# exit 0 = answered (stdout = answer), 2 = timeout
Env vars win, then ~/.config/telegram/config (mode 600):
TELEGRAM_BOT_TOKEN=123:ABC... # default bot
TELEGRAM_CHAT_ID=987654321 # default target
BOT_ALERTS_TOKEN=456:DEF... # --bot alerts (add via: setup --bot alerts)
TARGET_FAMILY=-100987... # --to family (any chat/group/channel id)
TELEGRAM_APPROVER_IDS=123456789 # default group approver user IDs (comma-separated)
APPROVERS_FAMILY=123456789,987654321 # approvers for --to family (overrides default)
Replies and answers are only accepted from configured chat IDs. Private chats preserve the
direct-chat behavior (the sender user ID must equal the chat ID). Because a group chat ID is
shared by every member, ask fails closed for groups unless TELEGRAM_APPROVER_IDS or the
target-specific APPROVERS_<NAME> explicitly lists the Telegram user IDs allowed to answer.
Ping your phone when Claude needs input, and when it finishes:
{
"hooks": {
"Notification": [{"hooks": [{"type": "command",
"command": "bash ~/.claude/skills/telegram/scripts/telegram.sh send \"🔔 Claude needs input in $(basename \\\"$PWD\\\")\""}]}],
"Stop": [{"hooks": [{"type": "command",
"command": "bash ~/.claude/skills/telegram/scripts/telegram.sh send \"✅ Claude finished in $(basename \\\"$PWD\\\")\" --silent"}]}]
}
}
Approval gate in any script/automation:
if [ "$(bash scripts/telegram.sh ask 'Deploy to prod?' --options 'Yes,No')" = "Yes" ]; then
./deploy.sh
fi
tools
Authorized security assessment of LLM applications and AI agents: prompt injection, tool abuse, RAG exposure, memory poisoning, system-prompt extraction, and agent-compliance engineering per OWASP LLM/ASI Top 10.
development
Builds two parameterized UI modes—流光溢彩白 (iridescent white) and 五彩斑斓黑 (colorful black)—with OKLCH, WebGL/CSS fallback, vision gating, screenshot QA, and total/per-color intensity reports. Use when a UI request names either mode or needs measured color parameters.
tools
Delegate coding tasks to the Kimi Code CLI (`kimi`) only when the user explicitly requests it, while the orchestrator retains review and landing responsibility.
development
Front-end JavaScript reverse engineering: locate signature chains, analyze encrypted request parameters, sample runtime behavior, and reproduce logic locally in Node for evidence-based output.