如何在群聊中发送 Telegram 临时机器人消息
Telegram 机器人现在可以在群组或超级群组中发送只有指定用户和机器人本人可见的临时消息。普通机器人必须在符合条件的回调或临时消息触发后 15 秒内回复;群组管理员机器人则可随时向任意非机器人成员发起此类消息。消息不保证送达,接收者离线时尤其如此。
核心要点
- Bot API 10.2 于 2026 年 7 月 14 日推出了仅对单个用户可见的机器人消息和临时命令。
- 如果用户发送的命令不应被其他成员和机器人看到,请将该命令的
is_ephemeral字段设为true。 - 非管理员机器人需要近期的
callback_query_id或reply_parameters.ephemeral_message_id,而且回复窗口只有 15 秒。 - 管理员机器人无需上述触发标识,即可向任意非机器人成员发起消息,但送达仍然只能尽力而为。
- 临时消息适合用作界面反馈,不是持久审计日志,也不是跨平台消息类型。
什么是 Telegram 临时机器人消息?
临时机器人消息是一种显示在群组或超级群组时间线中的私密回复,只有一位用户能看到,其他群组成员和其他机器人都不可见。Telegram 列出的适用场景包括欢迎消息、私密 AI 摘要、错误提示、确认信息、上下文提示和按钮菜单。
它不同于 Telegram Guest Mode。Guest Mode 决定机器人尚未加入聊天时如何被召唤;临时消息则决定某条命令或机器人回复对谁可见。它也不同于 Bot API 10.1 富文本消息,后者改变的是格式,而不是可见性。
Telegram 表示,这类交互可能会在一段时间后或应用重启时自动消失。官方文档没有公布固定的存在时长,因此不要把这条可见消息当作审批、付款状态、客服决定或其他持久业务事件的唯一记录。
哪些机器人可以在群组中发送私密回复?
这里有两条权限路径。设计处理程序前应先选定路径,因为它们要求的标识和送达行为并不相同。
| 机器人场景 | 何时可以发送 | 必需的触发数据 | 送达范围 |
|---|---|---|---|
| 任意机器人 | 在符合条件的入站动作发生后 15 秒内 | callback_query_id 或 reply_parameters.ephemeral_message_id | 触发该动作的客户端应用 |
| 群组管理员机器人 | 可随时向非机器人成员发送 | 不需要任何一个触发标识 | 可能送达多个活跃客户端,但不保证送达 |
两条路径都使用 receiver_user_id 指定查看者。出站临时消息仅限群组和超级群组,不能取代私聊会话。
送达限制非常重要:Telegram 明确说明消息不保证被接收,用户离线时尤其如此。应把它设计为便捷的界面反馈。如果动作会改变服务端状态,请先持久化该状态,并允许用户稍后重新获取。
第 1 步:声明临时命令
调用 setMyCommands,并将需要保持私密的命令的 is_ephemeral 设为 true。下面的假设示例会让用户的 /summary 请求对其他所有群组成员和机器人保持不可见:
curl "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/setMyCommands" \
-H "Content-Type: application/json" \
-d '{
"commands": [
{
"command": "summary",
"description": "Summarize this discussion for me",
"is_ephemeral": true
}
],
"scope": {
"type": "all_group_chats"
}
}'
is_ephemeral 影响的是用户发出的命令。仅设置该字段,并不能为之后的每一条机器人消息选择接收者。发送请求仍需包含正确的聊天、查看者,以及符合条件的触发信息——除非机器人是管理员。
第 2 步:发送私密群组回复
对于由回调触发的回复,请调用支持的发送方法,并传入 chat_id、receiver_user_id 和 callback_query_id。Bot API 10.2 为 sendMessage 以及受支持的媒体、文件、联系人和位置方法新增了这两个临时消息参数。
下面的假设请求会向超级群组中的一位成员发送确认信息:
curl "https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
-H "Content-Type: application/json" \
-d '{
"chat_id": -1001234567890,
"receiver_user_id": 424242424,
"callback_query_id": "4382bfdwdsb323b2d9",
"text": "Your report is ready. Only you can see this confirmation."
}'
请在 15 秒窗口内发送请求。如果触发来源是入站临时消息而不是回调查询,请改用 reply_parameters.ephemeral_message_id 回复。不要换成普通的 message_id;Bot API 10.2 特别规定,存在临时消息标识时,message_id 可以省略。
如果管理员机器人要在没有近期动作的情况下主动发消息,可省略 callback_query_id 和临时消息回复目标,但仍必须提供群组的 chat_id 以及该非机器人成员的 receiver_user_id。
第 3 步:使用临时消息标识编辑或删除
将 Telegram Message 对象返回的 ephemeral_message_id 与 chat_id、receiver_user_id 一起保存。普通的编辑和删除方法不适用于这种消息类型的生命周期管理。
请使用以下专用方法:
editEphemeralMessageTexteditEphemeralMessageMediaeditEphemeralMessageCaptioneditEphemeralMessageReplyMarkupdeleteEphemeralMessage
例如,编辑文本需要提供三个身份字段:
{
"chat_id": -1001234567890,
"receiver_user_id": 424242424,
"ephemeral_message_id": 781,
"text": "The report is ready to download."
}
Telegram 还提醒,编辑和删除事件可能无法送达离线用户。应把生命周期调用视为尽力而为的界面更新,而不能把它当作某人已经看到——或已经无法继续看到——敏感信息的证明。
实施检查清单
- 先判断回复类型。 临时消息适合必须出现在群组上下文中的个人反馈,不适合团队必须保留的记录。
- 立即捕获触发信息。 只在满足 15 秒路径所需的时间内保留
callback_query_id或入站ephemeral_message_id。 - 在服务端完成授权。 内容不可见不代表已经授权。生成摘要、菜单或执行动作前,应验证调用者是否有权提出该请求。
- 单独持久化长期状态。 在界面中确认之前,先把审批、任务状态和客服动作保存到自己的数据库。
- 使用专用生命周期方法。 将
chat_id、receiver_user_id和ephemeral_message_id作为一个查询元组保存,用于编辑和删除。 - 为未送达情况做好设计。 如果用户必须能够找回结果,请提供普通私聊、控制台或重试路径。
- 测试不同角色和客户端。 覆盖普通机器人、管理员机器人、群组与超级群组、多个活跃设备以及离线接收者。
UnifyPort 适合什么场景,又不适合什么场景
Telegram 临时消息是 Telegram Bot API 的功能。当前 UnifyPort API Reference 并未说明 POST /v1/messages 支持 receiver_user_id、callback_query_id 或临时消息的编辑和删除方法。如果产品依赖群组内仅对单个用户可见的界面,请使用 Telegram 官方 Bot API。
UnifyPort 解决的是另一层问题:来自已支持账号的普通入站消息可以统一成为规范化的 message.received 事件,受支持的标准回复则通过一个消息 API 跨服务商发送。当团队需要一个覆盖 Telegram、WhatsApp、LINE、Zalo、TikTok 和 X 的持久队列时,这种方式更有帮助。它不会把其他平台的消息变成 Telegram 临时回复,也不会保留 Telegram 独有的可见性语义。
如果真正的需求是多渠道客服,而不是仅面向 Telegram 的机器人界面,请参阅跨渠道 Telegram 自动化指南了解架构边界。
限制与取舍
如果机器人必须在不让用户离开群组的情况下显示私密确认、错误、菜单或摘要,请选择 Bot API 的官方功能。它在 Telegram 客户端中提供原生的单用户可见性,除文本外还支持多种媒体和工具类消息。
如果场景要求告警保证送达、合规记录、持久客服历史,或者秘密信息必须能够可靠撤回,就不要采用临时消息。离线用户不一定能收到消息、编辑或删除事件;消息本身可能消失;官方文档也没有承诺固定的存在时长。非官方接口无法改变这些平台保证,也不能为其他渠道增加 Telegram 的临时消息能力。
常见问题
Telegram 机器人能否发送只有一位群组成员可见的消息?
可以。在群组或超级群组中提供 receiver_user_id,并满足 15 秒内的有效触发路径或群组管理员路径。只有指定用户和机器人能看到这条临时消息。
机器人必须是群组管理员吗?
不一定。任何机器人只要拥有相关的 callback_query_id 或入站临时回复标识,就能在 15 秒内作出响应。管理员机器人无需这些触发标识,即可主动向任意非机器人成员发送临时消息。
Telegram 临时机器人消息能存在多久?
Telegram 没有公布固定时长。其文档表示,这类交互可能在一段时间后或应用重启时自动消失,因此应用不应把它当作持久存储。
离线用户能收到临时消息吗?
不保证送达,用户离线时尤其如此。编辑和删除事件也有同样的限制。对于重要结果,请提供可恢复的获取路径。
临时消息与 Telegram Guest Mode 相同吗?
不同。Guest Mode 控制机器人如何在未加入聊天时参与其中;临时消息控制群组内某条命令或回复的可见性。两项功能可以配合使用,但解决的是不同问题。
下一步
请依据 Telegram 官方 Bot API 临时消息参考文档实施 Telegram 专用路径。如果工作流的其他部分需要跨多个服务商持久处理消息,请先查看 UnifyPort 服务商消息支持矩阵,再设计共享处理程序。
来源
官方来源核验于 2026 年 7 月 20 日: