通过Telegram直接API发送富文本HTML格式消息。由主会话自动调用,适用于实质性Telegram输出。规则:回复超过3行或包含结构化数据(列表、统计、段落、报告)时,派生Haiku子代理处理格式发送;短回复(<3行)直接通过OpenClaw工具发送。适用场景:研究报告、警报、状态更新、报告、简报、通知等需要视觉层次的输出。
Telegram 编译是一项面向实际任务的技能,主要用于Format 并通过 HTML 格式化的直线API 发送丰富且可扫描的Telegram 消息;此技能是如何被使用的;
该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
通过 Telegram 直接 API,以 HTML 格式构建并发送富文本、高可读性的消息。
本技能由主会话代理(main session agent)自动调用。 其他技能无需感知或依赖此技能。
在向 Telegram 发送消息前,请检查:
message 工具发送。完成。主会话代理调用 sessions_spawn,参数如下:
sessions_spawn( model: "claude-haiku-4-5", task: "<任务内容 — 见下方模板>" )
任务模板:
阅读 {baseDir}/SKILL.md 中的 telegram-compose 技能文档,了解格式规范,然后将以下内容格式化并发送至 Telegram。
Bot 账户:(例如 "main";必须与 channels.telegram.accounts 中的键名完全匹配)
Chat ID:
Thread ID:(如非论坛/主题类聊天,请省略此行)
待格式化内容:
---
<原始内容在此>
---
发送成功后,仅返回 message_id;失败则返回错误详情。请勿在响应中包含已格式化的消息正文——它已被直接发送至 Telegram。
重要: 调用方必须明确指定所用 Bot 账户。子代理不得自行选择或遍历账户。
关键: 子代理的启动声明(announcement)将回传至主会话代理,而非 Telegram。因此,主会话代理在启动子代理后应立即回复 NO_REPLY,以防重复发送。子代理实际通过 curl 请求完成 Telegram 消息投递。
Bot Token: 存储于 OpenClaw 配置文件中,路径为 channels.telegram.accounts.。
账户名始终由调用方提供。 禁止自动选择或遍历账户。
# 自动检测配置路径 CONFIG=$([ -f ~/.openclaw/openclaw.json ] && echo ~/.openclaw/openclaw.json || echo ~/.openclaw/clawdbot.json) # ACCOUNT 由调用方提供(例如 "main") # 在提取 token 前,需先验证账户是否存在 ACCOUNT="" BOT_TOKEN=$(jq -r ".channels.telegram.accounts.$ACCOUNT.botToken" "$CONFIG") if [ "$BOT_TOKEN" = "null" ] || [ -z "$BOT_TOKEN" ]; then echo "ERROR: 配置中未找到账户 '$ACCOUNT',或其 botToken 字段为空" exit 1 fi
CONFIG=$([ -f ~/.openclaw/openclaw.json ] && echo ~/.openclaw/openclaw.json || echo ~/.openclaw/clawdbot.json)
# ACCOUNT 由调用方提供 —— 禁止自动选择
BOT_TOKEN=$(jq -r ".channels.telegram.accounts.$ACCOUNT.botToken" "$CONFIG")
# 不含话题线程(普通聊天)
curl -s -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage"
-H "Content-Type: application/json"
-d "$(jq -n
--arg chat "$CHAT_ID"
--arg text "$MESSAGE"
'{
chat_id: $chat,
text: $text,
parse_mode: "HTML",
link_preview_options: { is_disabled: true }
}')"
# 含话题线程(forum/topic 聊天)
curl -s -X POST "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage"
-H "Content-Type: application/json"
-d "$(jq -n
--arg chat "$CHAT_ID"
--arg text "$MESSAGE"
--argjson thread $THREAD_ID
'{
chat_id: $chat,
text: $text,
parse_mode: "HTML",
message_thread_id: $thread,
link_preview_options: { is_disabled: true }
}')"
粗体 斜体 下划线删除线等宽字体代码块点击展开隐藏内容 引用块默认折叠的引用块超链接 通过 ID 提及用户
仅对纯文本内容(不包括 HTML 标签内部)中的下列字符进行转义:
& → &(务必最先执行,避免双重转义)< → <> → >常见陷阱:含 & 的文本(如 “R&D”、“Q&A”)若未转义,将导致 HTML 解析失败。
EMOJI 全大写标题 标签: 值 标签: 值 章节标题 • 列表项 • 另一项关键引述或摘要详细信息 此处为隐藏内容... 长篇细节请置于 expandable 引用块中。操作链接 →
EMOJI CAPS TITLE 格式,并在其后插入空行 折叠展示链接文字 →状态更新:
📋 任务已完成 任务: 部署 v2.3 状态: ✅ 已完成 耗时: 12 分钟所有健康检查均已通过。
告警:
⚠️ 需立即关注 问题: API 调用频率已达限额的 90% 建议操作: 审查当前用量 查看控制台 →
列表:
✅ 优先事项 •审核 PR #234— 已完成 • 完成文档 — 进行中 • 部署预发布环境 共 3 项,已完成 2 项
切勿对统计信息、摘要或可视化布局使用 标签。 使用等宽字体且在移动端严重换行,破坏对齐和树形符号渲染。仅将 用于真实代码或命令输出。
结构化数据推荐使用 emoji + bold + 分隔符组合:
❌ BAD(移动端换行错乱):├─ 🟠 Reddit 32 threads │ 1,658 pts └─ 🌐 Web 8 pages✅ GOOD(自然流式排版): 🟠 Reddit: 32 threads · 1,658 pts · 625 comments 🔵 X: 22 posts · 10,695 likes · 1,137 reposts 🌐 Web: 8 pages (supplementary) 🗣️ 热门声量来源: @handle1 · @handle2 · r/subreddit
其他常用模式:
记录卡片(Record cards):
Ruby 生日:6 月 16 日 · 年龄:11 Rhodes 生日:10 月 1 日 · 年龄:8
项目符号列表(Bullet lists):
• hzl-cli: 1.12.0 • skill: 1.0.6
若格式化后消息超出 4,096 字符:
HEADING 块之间的空行处)(continued)若 Telegram API 返回错误:
| 错误类型 | 应对措施 |
|---|---|
Bad Request: can't parse entities |
HTML 格式非法。移除全部 HTML 标签,以纯文本重发。 |
Bad Request: message is too long |
按上述分片规则拆分后重试。 |
Bad Request: message thread not found |
移除 message_thread_id 参数重试(消息将发送至 General 频道)。 |
Too Many Requests: retry after X |
等待 X 秒后重试一次。 |
| 其他任意错误 | 原样上报错误详情;不再重试。 |
降级规则(Fallback rule): 若 HTML 格式化连续失败两次,则改以纯文本发送,确保送达优先于格式美观。
作为子代理运行时,请严格遵循以下步骤:
&,再 <,最后 >(HTML 标签内不转义)"ok": true相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章