Telegram Inline Bot 怎么设计:查询、结果与私聊设置
把 Telegram Inline Mode 写成可验收需求:定义空查询、结果、缓存、私聊设置、位置权限和反馈采样。
如果机器人最重要的动作是“搜索一个结果并分享给当前聊天”,用户不一定需要先打开机器人私聊。Telegram 的 Inline Mode 允许用户在任意私聊、群组或频道输入“@机器人用户名 查询词”,从结果中选一项发送。
它适合表情、资料、商品、地点、模板或内部知识条目搜索;不适合需要长表单、敏感设置或多步确认的主流程。设计 Inline Bot 时,关键不是“打开 Inline Mode”,而是先写清查询、结果、空状态、缓存和私聊切换。
Inline Mode 与群机器人不是一回事
根据 Telegram 的 Inline Bots 文档,Inline Bot 不必加入当前聊天。用户输入用户名和查询词后,机器人收到 inline query;用户点击结果后,选中的内容才会发送到聊天。
Telegram 2016 年的功能发布说明还明确指出,Inline Bot 看不到聊天中的其他消息,只收到用户在机器人用户名后输入的内容。这与“把机器人加进群里并让它读取消息”是不同的权限模型。
因此,需求中不要写“搜索当前聊天内容”。如果搜索需要私有账户、偏好或授权,应先切换到机器人私聊完成设置,再返回原聊天使用 Inline Mode。
先定义五个核心规则
1. 空查询显示什么
用户只输入“@机器人用户名”而没有查询词时,可以显示:
- 最近使用;
- 收藏项目;
- 三个示例搜索;
- 热门但不含敏感数据的公共结果;
- “去私聊完成设置”的引导。
空白页面会让用户误以为机器人坏了。即使没有默认结果,也应解释最短使用方法。
2. 一条结果必须包含什么
为每种结果固定标题、摘要、发送后的内容和稳定 ID。图片或文档只是可选展示,不应成为理解结果的唯一方式。标题要能在窄屏上区分,摘要避免泄露本不该出现在当前聊天的信息。
如果结果依赖外部服务,还要说明超时或不可用时显示什么。不要把“没有结果”和“服务失败”合并成同一句提示。
3. 查询如何规范化
明确是否忽略大小写、首尾空格和全角符号,是否支持别名,以及最少和最多字符数。对于拼写错误,是返回建议、相近结果,还是明确无结果,也要写进需求。
4. 缓存多久
Telegram 文档提醒,inline query 结果可以缓存,选择反馈的数量也可能因缓存而少于请求量。公共静态搜索可以使用较长缓存;库存、价格、一次性邀请或用户专属数据则需要更谨慎。
不要只写“缓存 60 秒”。还要说明缓存键是否包含用户、语言、地区或权限,以及什么变化必须立即失效。
5. 哪些操作必须回私聊
绑定账户、修改偏好、查看历史、处理敏感信息或执行高风险写入,通常更适合私聊。Telegram 支持在 inline 结果上方提供“Switch to PM”入口,完成设置后再用按钮返回 Inline Mode。
一个可修改的需求示例
创建一个资料搜索机器人。用户可以在任意聊天输入“@mybot 关键词”。空查询显示三个公开示例,不显示个人历史。每次最多返回 10 条结果,每条包含标题、两行摘要和来源日期;点击后发送标题、摘要和原始链接。查询忽略大小写与首尾空格,少于两个字符时提示继续输入。公共结果缓存 5 分钟;用户收藏不进入公共缓存。未绑定账户时显示“去私聊设置”,绑定和取消绑定只能在私聊完成。外部搜索超时与真正无结果使用不同提示。
这段需求仍缺少具体数据源和权限规则,但已经能验收 Inline Mode 的主要行为。
隐私和位置要单独确认
Inline Bot 可以请求位置相关结果,但 Telegram 要求通过官方 @BotFather 开启相应选项,并在每次使用时由客户端向用户请求位置许可。不要把“附近搜索”写成默认收集位置,也不要把位置写入长期记录,除非用途、保存期限和删除方法都已说明。
同样,inline query 本身不是匿名通道。机器人仍然需要按用户权限过滤结果,不能因为请求发生在别人的群里就返回私有资料。
验收矩阵
至少测试以下情形:
- 空查询、正常查询、超短查询和无结果查询;
- 私聊、普通群组、频道输入框中的调用;
- 未设置用户与已设置用户的不同结果;
- 结果点击后发送的内容与预览一致;
- 重复查询命中缓存后仍遵守语言和权限;
- 外部数据源超时、限流和返回脏数据;
- “切换到私聊”完成后能回到原来的 inline 流程;
- 位置权限拒绝后仍有非位置结果或清晰退出路径。
BotFatherV2 可以通过 AI 对话创建和修改 Telegram Serverless 机器人,但这不代表当前固定 SDK 已覆盖所有 Inline Mode 接口。把 inline query、结果类型、缓存和私聊切换写入需求后,应先查看生成检查结果,再用真实 Telegram 客户端验收。它也不会因为开发过程使用 AI,就让机器人自动获得运行时大模型能力。
BotFatherV2 是独立产品,与 Telegram 官方 @BotFather 无隶属关系。
来源
- Telegram,Inline Bots,页面未标注发布日期,2026-10-11 查阅。
- Telegram Team,Introducing Inline Bots,2016-01-04,2026-10-11 查阅。