返回博客

Telegram Inline Bot 怎么设计:查询、结果与私聊设置

把 Telegram Inline Mode 写成可验收需求:定义空查询、结果、缓存、私聊设置、位置权限和反馈采样。

发布于 2026年10月11日

如果机器人最重要的动作是“搜索一个结果并分享给当前聊天”,用户不一定需要先打开机器人私聊。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 本身不是匿名通道。机器人仍然需要按用户权限过滤结果,不能因为请求发生在别人的群里就返回私有资料。

验收矩阵

至少测试以下情形:

  1. 空查询、正常查询、超短查询和无结果查询;
  2. 私聊、普通群组、频道输入框中的调用;
  3. 未设置用户与已设置用户的不同结果;
  4. 结果点击后发送的内容与预览一致;
  5. 重复查询命中缓存后仍遵守语言和权限;
  6. 外部数据源超时、限流和返回脏数据;
  7. “切换到私聊”完成后能回到原来的 inline 流程;
  8. 位置权限拒绝后仍有非位置结果或清晰退出路径。

BotFatherV2 可以通过 AI 对话创建和修改 Telegram Serverless 机器人,但这不代表当前固定 SDK 已覆盖所有 Inline Mode 接口。把 inline query、结果类型、缓存和私聊切换写入需求后,应先查看生成检查结果,再用真实 Telegram 客户端验收。它也不会因为开发过程使用 AI,就让机器人自动获得运行时大模型能力。

BotFatherV2 是独立产品,与 Telegram 官方 @BotFather 无隶属关系。

来源

相关文章

继续阅读具有相同产品标签的内容。

Telegram 机器人群发怎么设计:订阅、限流与失败重试

把通知群发写成可暂停、可恢复且不重复的任务,处理用户授权、429 限流、重试、退订、失败分类与进度统计。

Telegram 机器人按钮怎么避免重复执行:回调、权限与过期状态

为确认、审批和状态切换按钮定义快速响应、服务端校验、幂等、过期处理与失败反馈,避免重复扣减或越权操作。

Telegram 多步骤机器人怎么设计:状态、取消与超时

把报名、报修和资料收集机器人拆成可恢复的步骤,明确会话状态、输入校验、取消、超时、并发与发布后的兼容规则。

Telegram 机器人深链怎么设计:启动参数、群组安装与来源识别

说明 Telegram 机器人 start 与 startgroup 深链的设计方式、64 字符限制、来源归因、安全边界和可验收的首次使用流程。

Telegram 长任务机器人怎么设计:流式回复、停止与私聊主题

把流式草稿、停止操作和私聊主题写成可验收的 Telegram 机器人需求,让搜索、报告和 AI 任务既有进度反馈,也不会混淆上下文。

Telegram Serverless 机器人如何防止重复处理:Webhook 与幂等检查清单

根据 Telegram Webhook 的重试与 update_id 规则,把防重复写入、重复发券、乱序更新和安全校验写成可验收的 Serverless 机器人需求。