尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

telegram-bot-messaging - README

telegram-bot-messaging - README Telegram 技能一个用于通过 Bot API 发送 Telegram 消息、文件和提醒的 AI 智能体技能——发送更新、使用内联按钮提问并等待批准以及读取回复。适用于 Claude Code、Gemini CLI、Cursor、OpenAI Codex、Goose 以及其他支持 Agent Skills 标准 的 AI 客户端。功能发送- 纯文本、MarkdownV2 或 HTML 消息超过 4096 字符自动拆分格式被拒绝时自动回退为纯文本文件- 发送文档图片png/jpg/jpeg/gif/webp自动作为照片发送提问- 使用内联按钮提问并等待点击或自由文本回复手机端批准读取- 打印自上次读取以来的新传入消息多机器人- 在默认机器人之外注册额外的命名机器人多目标- 将消息路由到命名的聊天、群组或频道钩子集成- 接入 Claude Code 钩子、cron 任务或 CI 进行通知纯 bash curl jq —— 除了机器人令牌外无需安装。要求bashcurljqmacOS 上用brew install jqDebian/Ubuntu 上用apt install jqmacOS 自带 bash 和 curl通常只需要安装jq。快速开始1. 创建机器人在 Telegram 中打开 BotFather发送/newbot并按照提示操作显示名称然后是以 “bot” 结尾的用户名BotFather 会回复一个 HTTP API 令牌2. 运行设置bashscripts/telegram.sh setup这会引导你粘贴令牌通过getMe验证它并让你向新机器人发送一条消息以便它发现你的聊天 ID。配置写入~/.config/telegram/config权限 600并发送一条确认消息以确认一切正常。3. 添加更多机器人可选bashscripts/telegram.sh setup--botalerts为每个额外的机器人使用不同的--bot NAME重复操作。命名机器人共享默认聊天 ID除非你为它们配置了不同的目标。4. 查找群组/频道 ID可选要向群组或频道而不是个人聊天发送消息将机器人添加到群组/频道在该群组/频道中发送任意消息运行bash scripts/telegram.sh read --all查看随消息一起打印的聊天 ID将TARGET_NAMEchat_id添加到~/.config/telegram/config然后使用--to name使用示例发送消息# Basic alertbashscripts/telegram.sh sendDeploy finished ✅# No notification soundbashscripts/telegram.sh sendlow priority update--silent# MarkdownV2 formatting (falls back to plain text if rejected)bashscripts/telegram.sh send*bold* alert--formatmd# HTML formattingbashscripts/telegram.sh sendbbold/b alert--formathtml# Named target and named botbashscripts/telegram.sh sendhi--toalerts--botwork发送文件# Send a documentbashscripts/telegram.shfilereport.pdfQ3 report# Images are auto-detected and sent as photosbashscripts/telegram.shfilescreenshot.pngBuild output# To a named target, silentlybashscripts/telegram.shfilebackup.zip--toalerts--silent提问并等待回答# Default Yes/No options, 5-minute timeoutANSWER$(bashscripts/telegram.sh askDeploy to prod?--optionsYes,No--timeout300)echo$ANSWER# Custom optionsbashscripts/telegram.sh askWhich environment?--optionsStaging,Prod,Cancel退出码0表示已回答答案打印到 stdout退出码2表示超时且没有收到回复。读取传入消息# New messages since the last read (advances the offset)bashscripts/telegram.shread# Limit the number of messagesbashscripts/telegram.shread--limit5# Ignore the saved offset and show everything availablebashscripts/telegram.shread--all注意ask和read共享相同的每机器人游标因此一次ask会消耗后续read本会显示的传入消息。命令参考命令描述参数退出码setup引导式机器人注册 聊天 ID 发现--bot NAME0 成功1 错误send MESSAGE发送文本消息--to TARGET--bot NAME--silent--format md|html0 成功1 错误file PATH [CAPTION]发送文档图片则发送照片--to TARGET--bot NAME--silent0 成功1 错误ask QUESTION使用内联按钮提问等待回复--options Yes,No--timeout SECS--to TARGET--bot NAME0 已回答2 超时1 错误read打印自上次读取以来的新传入消息--limit N--bot NAME--all0 成功1 错误配置参考环境变量优先未在环境中设置的任何内容都回退到~/.config/telegram/config以权限 600 创建TELEGRAM_BOT_TOKEN123:ABC... # default bot token TELEGRAM_CHAT_ID987654321 # default chat/target BOT_ALERTS_TOKEN456:DEF... # named bot: --bot alerts (add via: setup --bot alerts) TARGET_FAMILY-100987... # named target: --to family (any chat/group/channel id) TELEGRAM_APPROVER_IDS123456789 # default group approver user IDs (comma-separated) APPROVERS_FAMILY123456789,987654321 # approvers for --to family (overrides default)TELEGRAM_BOT_TOKEN/TELEGRAM_CHAT_ID— 默认机器人令牌和默认发送目标。BOT_NAME_TOKEN— 命名机器人的令牌使用--bot name选择键名大写例如--bot alerts→BOT_ALERTS_TOKEN。TARGET_NAMEchat_id— 命名的发送目标使用--to name选择键名大写例如--to family→TARGET_FAMILY。数字形式的--to值直接作为聊天 ID 使用无需查找。TELEGRAM_APPROVER_IDS— 允许在群组目标中回答ask的 Telegram 用户 ID。APPROVERS_NAME— 目标特定的群组审批人例如APPROVERS_FAMILY覆盖该命名目标的全局允许列表。TELEGRAM_CONFIG_DIR— 覆盖配置目录默认为~/.config/telegram。Claude Code 钩子settings.json当 Claude 需要输入以及完成时通知你的手机{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}]}]}}任何脚本/自动化中的审批闸门if[$(bashscripts/telegram.sh askDeploy to prod?--optionsYes,No)Yes];then./deploy.shfi安全说明机器人令牌赋予对机器人的完全控制权——任何拥有它的人都可以以你的机器人身份发送/接收。请像对待密码一样对待它。包含令牌的 API URL 通过 stdin 传给 curl不会暴露在 curl 进程参数中。~/.config/telegram/config以权限 600 创建仅所有者读写。仅当发送者用户 ID 等于聊天 ID 时才接受私聊回答。群组目标需要显式的TELEGRAM_APPROVER_IDS或目标特定的APPROVERS_NAME允许列表且ask只接受来自这些用户 ID 的按钮点击和文本。默认情况下群聊中的机器人只能看到提及它们或回复它们的消息。要读取所有群组消息要么将机器人设为管理员要么通过 BotFather/setprivacy为其禁用隐私模式。许可证Apache 2.0
返回列表