Install
openclaw skills install @thcjp/telegram-toolkitopenclaw skills install @thcjp/telegram-toolkit核心功能: 本技能提供中文交互等能力。
核心功能: 本技能提供、运维告警、部署管理时使用、时使用等能力。
| 能力 | 免费版 | 付费版 |
|---|---|---|
| 基础功能 | 支持 | 支持 |
| TG机器人工具(专业版)多机器人管理 | 不支持 | 支持 |
| 多渠道消息批量发送 | 不支持 | 支持 |
| 消息模板与变量注入 | 不支持 | 支持 |
| 送达状态实时回调 | 不支持 | 支持 |
| 通信记录归档与检索 | 不支持 | 支持 |
| 能力分类 | 免费版 | 专业版 |
|---|---|---|
| 对话管理 | 单轮命令 | 多轮状态机+上下文持久化 |
| 富媒体 | 纯文本 | 图片/视频/文件/按钮模板库 |
| 多Bot管理 | 单Bot | 统一面板管理多Bot |
| 消息发送 | 同步发送 | 队列削峰+批量+限流控制 |
| Webhook监控 | 无 | 健康检查+告警+故障切换 |
| 国际化 | 无 | 多语言模板+语言自适应 |
| 优先支持 | 社区 | 工单优先响应 |
详细的输入输出格式请参考下方章节说明。
通过状态机编排"收集问题→分类→转人工→满意度回访"的多轮对话流程,上下文跨轮次持久化.
from telegram_toolkit import ProFeatures, StateMachine
# ...
pro = ProFeatures(token_env="TG_BOT_TOKEN")
# ...
sm = StateMachine()
sm.add_state("await_issue", prompt="请描述您遇到的问题")
sm.add_state("await_category", prompt="请选择问题分类:1.账单 2.功能 3.故障")
sm.add_transition("await_issue", "await_category", on="text_received")
sm.add_transition("await_category", "resolved", on="category_selected")
# ...
pro.register_conversation("/support", sm)
通过统一面板管理客服Bot、通知Bot、营销Bot的配置、监控与消息统计,无需逐个切换.
pro.manage_bots([
{"name": "客服Bot", "token_env": "SUPPORT_BOT_TOKEN"},
{"name": "通知Bot", "token_env": "NOTIFY_BOT_TOKEN"},
{"name": "营销Bot", "token_env": "MARKETING_BOT_TOKEN"}
])
pro.dashboard.start() # 启动统一监控面板
将10万条营销消息入队,按Telegram限流规则自动节流发送,支持优先级与失败重试.
pro.broadcast(
audience="subscribers.csv",
template="templates/promo.html",
rate_limit=25, # 每秒25条(低于Telegram限制)
priority="normal",
retry_failed=True
)
通过模板库发送带Inline Keyboard按钮、图片、格式化文本的富媒体通知,提升信息可读性.
pro.send_template(
chat_id=user_id,
template="alert_with_buttons",
context={
"title": "部署完成",
"detail": "服务v1.2.3已上线",
"buttons": [
{"text": "查看日志", "callback_data": "view_log"},
{"text": "回滚", "callback_data": "rollback"}
]
}
)
持续监控Webhook健康状态,延迟超阈值自动告警,故障时自动切换到长轮询兜底.
pro.webhook_monitor(
health_check_interval=60, # 60秒检查一次
latency_alert_ms=5000, # 延迟超5秒告警
auto_fallback_to_polling=True, # Webhook故障自动切长轮询
webhook_env="OPS_WEBHOOK" # 告警地址
)
from telegram_toolkit import ProFeatures
# ...
pro = ProFeatures(token_env="TG_BOT_TOKEN")
pro.enable_message_queue(max_size=10000, rate_limit=25)
pro.webhook_monitor(auto_fallback_to_polling=True)
sm = pro.create_conversation("/onboarding")
sm.add_state("ask_name", prompt="请输入您的姓名")
sm.add_state("ask_email", prompt="请输入您的邮箱")
sm.add_state("done", prompt="注册完成!")
sm.add_transition("ask_name", "ask_email", on="text_received")
sm.add_transition("ask_email", "done", on="text_received")
pro.send_template(chat_id, "welcome_card", context={"user": "张三"})
完整上手时间约120秒.
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| content | string | 否 | 处理的内容输入 |
| mode | string | 否 | 处理模式, 可选值: json/text/markdown |
| style | string | 否 | 输出风格, 参考 references/style.md |
{
"success": true,
"data": {
"result": "处理结果",
"status": "success",
"metadata": {
"metadata": {
"template_used": "reviewer",
"word_count": 0,
"style": "专业"
}
},
"error": null
}
输出模板参考: assets/output.json
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 |
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| requests | Python包 | 必需 | pip install requests |
| Python | 运行时 | 必需 | python.org 官方下载 |
| redis | Python包 | 可选 | pip install redis(会话持久化) |
| sqlite3 | Python模块 | 可选 | Python标准库(会话持久化) |
| jinja2 | Python包 | 可选 | pip install jinja2(模板渲染) |
pro.queue_config(
max_size=50000, # 队列上限
rate_limit=25, # 每秒发送上限(Telegram限制约30/s)
batch_size=25, # 批量发送数
retry_policy="exponential", # 失败指数退避
priority_levels=3 # 3级优先级
)
pro.dashboard_config(
metrics=["uptime", "msg_sent", "msg_failed", "active_users"],
refresh_interval=30,
alert_on_failure=True,
webhook_env="OPS_WEBHOOK"
)
pro.i18n_config(
default_lang="zh-CN",
detect_user_lang=True, # 从用户语言设置自动检测
templates_dir="locales/"
)
# locales/zh-CN/welcome.json
# locales/en/welcome.json
A:为每个状态设计fallback处理,当输入不匹配预期时提示用户正确输入或重置对话。可用sm.add_fallback(state, handler)配置.
A:专业版消息队列自带失败重试。429会按retry_after等待后重试,重试3次仍失败则记录到失败队列,可用pro.retry_failed()单独重发.
A:不会。切换前会先deleteWebhook,Telegram将未投递的更新保留在服务端,长轮询通过getUpdates的offset参数从断点继续拉取.
A:每个Bot的Token存入独立环境变量(如SUPPORT_BOT_TOKEN、NOTIFY_BOT_TOKEN),专业版通过token_env参数引用,绝不落盘明文.
A:模板存为JSON文件放templates/目录,通过pro.send_template(chat_id, "template_name", context)渲染发送。不同Bot可共享模板目录.
A:按语言代码建子目录:locales/zh-CN/、locales/en/。每语言下保持相同文件名结构,专业版根据用户语言设置自动选择对应模板.
A:(1) 检查rate_limit是否过低;(2) 评估是否为营销推送峰值,考虑分批错峰发送;(3) 提高队列max_size或增加并发worker;(4) 监控队列长度告警,超阈值触发降级.
A:专业版支持将会话状态持久化到本地SQLite或Redis。配置sm.persist(backend="sqlite", path="sessions.db"),Bot重启后可恢复未完成的对话.
A:Telegram对callback_query无硬性超时,但用户体验上建议30秒内应答。专业版消息队列会优先处理callback应答,避免用户长时间等待.
A:支持。专业版提供Mini App的Web App URL配置与web_app_data更新处理,可用于构建内嵌在Telegram中的Web应用交互.
| 操作步骤 | 手动耗时 | 自动化耗时 | 时间节约 | 准确率提升 |
|---|---|---|---|---|
| 消息批量发送 | 10小时 | 2小时 | 8小时 | 95% |
| 对话状态管理 | 2小时/轮次 | 0.5小时/轮次 | 1.5小时/轮次 | 100% |
| 富媒体消息制作 | 1小时/条 | 15分钟/条 | 45分钟/条 | 98% |
| 多机器人管理 | 1小时/机器人 | 10分钟/机器人 | 50分钟/机器人 | 100% |
| Webhook监控与告警 | 2小时/天 | 30分钟/天 | 1.5小时/天 | 100% |
| 对比维度 | 本技能 | 手动操作 | Python脚本 | 专业软件 |
|---|---|---|---|---|
| 功能全面性 | 高 | 低 | 中 | 高 |
| 操作便捷性 | 高 | 低 | 中 | 高 |
| 成本效益 | 高 | 低 | 中 | 高 |
| 扩展性 | 高 | 低 | 中 | 高 |
| 支持与维护 | 高 | 低 | 中 | 高 |
| 痛点 | 描述 | 影响范围 | 解决方案 | 量化效果 |
|---|---|---|---|---|
| 多机器人管理困难 | 需要手动管理多个机器人,效率低 | 所有机器人管理 | 提供统一管理面板 | 时间节约50% |
| 富媒体消息制作复杂 | 制作富媒体消息需要专业工具和技能 | 所有富媒体消息制作 | 提供模板库和变量注入 | 制作效率提升98% |
| 消息发送效率低 | 消息发送速度慢,影响用户体验 | 所有消息发送 | 消息队列削峰与批量发送 | 发送效率提升95% |
| 错误现象 | 可能原因 | 诊断步骤 | 解决方案 |
|---|---|---|---|
| 无法注册对话 | 配置参数错误 | 检查配置文档和参数设置 | 修正配置参数 |
| 无法发送消息 | 机器人Token错误 | 检查机器人Token是否有效 | 重新获取Token |
| 消息发送失败 | 网络问题 | 检查网络连接 | 修复网络连接 |
| Webhook无响应 | 配置错误 | 检查Webhook配置 | 修正配置 |
| 消息队列拥堵 | 消息量过大 | 检查消息量 | 调整队列大小或限流 |
| 风险项 | 等级 | 防护措施 | 验证方法 |
|---|---|---|---|
| API密钥泄露 | 高 | 通过环境变量配置,禁止硬编码 | 定期检查代码和配置文件 |
| 命令执行风险 | 高 | 仅执行白名单命令,避免拼接用户输入 | 使用沙箱环境测试 |
| 网络通信安全 | 中 | 使用HTTPS协议,验证SSL证书 | 定期检查证书有效期 |
| 敏感数据暴露 | 高 | 输出结果中不包含密钥、令牌等敏感信息 | 日志脱敏审查 |
| 未授权访问 | 中 | 限制访问权限,实施认证机制 | 定期审计访问日志 |
针对"TG机器人工具(专业版)"使用中可能遇到的常见问题,提供以下排查方案:
| 错误类型 | 原因分析 | 解决方案 |
|---|---|---|
| API认证失败(401) | API密钥错误或过期 | 检查密钥配置,重新生成token |
| 接口限流(429) | 请求频率超出限制 | 降低调用频率,启用重试退避策略 |
| 响应超时(504) | 网络延迟或服务端负载过高 | 增加超时阈值,检查网络连接 |
| 文件不存在 | 路径错误或文件未创建 | 检查路径拼写,确认文件已生成 |
| 文件格式不支持 | 扩展名不在支持列表中 | 转换为支持的格式后重试 |
| 权限不足 | 当前用户无读写权限 | 检查文件权限,以管理员身份运行 |
| 命令执行失败 | 参数错误或环境依赖缺失 | 检查命令语法,确认依赖已安装 |
| 进程超时 | 命令执行时间过长 | 增加超时设置,优化命令参数 |
| 网络连接失败 | DNS解析失败或防火墙拦截 | 检查网络配置,确认代理设置 |
针对"TG机器人工具(专业版)"使用中可能遇到的常见问题,提供以下排查方案:
| 错误类型 | 原因分析 | 解决方案 |
|---|---|---|
| API认证失败(401) | API密钥错误或过期 | 检查密钥配置,重新生成token |
| 接口限流(429) | 请求频率超出限制 | 降低调用频率,启用重试退避策略 |
| 响应超时(504) | 网络延迟或服务端负载过高 | 增加超时阈值,检查网络连接 |
| 文件不存在 | 路径错误或文件未创建 | 检查路径拼写,确认文件已生成 |
| 文件格式不支持 | 扩展名不在支持列表中 | 转换为支持的格式后重试 |
| 权限不足 | 当前用户无读写权限 | 检查文件权限,以管理员身份运行 |
| 命令执行失败 | 参数错误或环境依赖缺失 | 检查命令语法,确认依赖已安装 |
| 进程超时 | 命令执行时间过长 | 增加超时设置,优化命令参数 |
| 网络连接失败 | DNS解析失败或防火墙拦截 | 检查网络配置,确认代理设置 |