BitBear StudioINDEPENDENT SOFTWARE
7 PRODUCTSEN博客
返回博客

Telegram 报名机器人收手机号:本人分享、他人名片与验证边界

区分联系人请求按钮与普通名片,用发送者关联、缺失字段和最少收集规则设计 Telegram 报名流程,避免把收到手机号当成身份认证。

活动报名机器人提示“请发送联系电话”,用户发来一张联系人名片。你能据此认定这是报名者本人的号码吗?如果名片里没有 Telegram 用户标识,又该怎么办?

“收到联系人”“关联到当前报名者”“确认号码当前可用”是三个不同结果。创建机器人之前,应先决定需要哪一个,而不是把它们都显示成“手机号已验证”。

请求本人分享,不是让用户任选一张名片

Telegram 的请求电话号码按钮说明明确:这种回复键盘按钮用于私聊,客户端应先征求用户许可,再将当前用户的联系人信息发送到聊天。该页描述的是客户端协议,不是需要直接调用的 BotFatherV2 接口。

在 Bot API 框架层,python-telegram-bot 的 KeyboardButton 文档说明,request_contact 会在按下按钮时发送用户的电话号码,且仅适用于私聊。普通文本按钮上的“分享手机号”几个字并不等于设置了这个请求类型。

因此,若活动确实需要本人联系电话,应把需求写成“在私聊中提供明确的本人分享入口”,不要写成“接收任何联系人都算完成”。群里可以说明报名入口,但不应把私聊限定的按钮设计成群内收号流程。

把联系人与发送者分开判断

Contact 类型文档包含电话号码、姓名以及可选的 user_id、姓氏和 vCard。这里的 user_id 描述联系人对应的 Telegram 用户,不等于“发送这条消息的人”;它也不是每张名片都有的字段。

下面是一套面向报名流程的设计建议,而不是平台提供的身份认证保证:

  1. 只在当前用户自己的私聊报名步骤中处理联系人;未进入收号步骤的消息不自动写入报名表。
  2. 联系人带有 user_id 时,将它与消息发送者的用户标识比较。不同则拒绝把这张名片当成本人联系电话,并提示使用本人分享入口。
  3. 缺少 user_id 时,不用姓名相同或号码格式正确来补出“本人”结论。要求重新分享,或按事先定义的人工处理流程继续,并明确标记未确认。
  4. 即使标识一致,也只记录本流程完成了关联检查;不要扩展成实名身份、号码仍归本人使用、可以接通电话或通过短信验证的证明。

如果业务允许代他人报名,应设计独立的“代报名联系人”规则,而不是放松本人分享流程,再继续显示“本人验证成功”。

先问是否必须收号,再决定存什么

例如,一个线下桌游活动只需通过 Telegram 发送集合提醒,未必需要电话号码。若组织者确实需要活动当天电话联系,可以在请求前说明用途、是否可跳过、谁能查看以及何时清理数据。

建议把报名编号和 Telegram 用户标识作为记录关联依据,不将手机号同时当作账号权限或记录归属的唯一依据。只保存流程所需字段;若不用 vCard,不必因为它出现在联系人对象里就整份复制到数据库。

回执和公开名单不要默认展示完整号码,排错日志也不要顺手记录整张名片。拒绝可疑输入时,给出原因和下一步,不回显他人的完整联系方式。

结束收集、移除键盘与清理已存数据是不同动作。可以先规定由组织者在活动结束后按明确流程清理;如果要求自动到期删除,应另行核验调度和存储能力。删除机器人保存的字段,也不能直接表述成已删除所有 Telegram 聊天记录或备份。这些是数据处理设计建议,不是对任何产品现成清理功能的承诺。

用六种输入验收,而不只测试本人按钮

  • 本人在私聊报名步骤使用分享入口:只更新自己的报名资料,回执不暴露完整号码。
  • 发送他人名片且联系人用户标识不同:不把它绑定成本人资料,也不在提示中泄露对方号码。
  • 联系人缺少 user_id:进入明确的重新分享或人工处理路径,不显示“已验证”。
  • 只发送一个看起来正确的号码或相同姓名:不绕过本人关联规则。
  • 在群内、非报名步骤或取消后发送联系人:不意外收集,也不覆盖已确认的报名资料。
  • 选择不分享:按事先公布的可选或必填规则继续或结束,不静默从其他输入补填号码。

这组检查的重点是输入含义与收集范围。它不要求对联系人内容调用 AI,也不需要借助语言模型猜测谁拥有一个号码。

给 BotFatherV2 的需求模板

可以向 BotFatherV2这样描述:

为线下活动创建报名机器人,联系电话为可选项,只用于活动当天联系。在用户自己的私聊报名步骤中提供本人联系人分享入口,并提供跳过和取消。收到联系人后比较联系人用户标识与消息发送者;不一致时拒绝绑定,缺失时提示重新分享,不按姓名或号码格式推断本人。不要宣称完成实名、短信或可拨通性验证;不用的 vCard 不保存,回执和日志不显示完整号码。先核对当前 Telegram Serverless SDK 是否支持所需请求按钮及接收字段,再实现上述六组验收;不支持时明确说明,不悄悄换成接收任意名片。

截至 2026-10-19 核验,公开产品页支持通过 AI 对话创建和修改机器人、导入已有 Telegram Serverless 机器人、发布版本和保留当前业务数据的代码回滚。AI 开发说明同时限定固定 SDK 范围,不支持任意 npm 模块或 Node/Bun 运行时 API,首版不新增依赖付费 AI 的机器人运行能力。

本文引用的 Python 框架和客户端协议用于核对输入语义,不表示产品已集成这些框架,或已经确认当前 SDK 暴露全部相关字段。AI 辅助创建机器人也不等于运行时自主 AI Agent。BotFatherV2 是独立产品,与 Telegram 官方 BotFather 无隶属关系。

来源与日期

以上来源均于 2026-10-19 核验,页面未给出可确定的首次发布日期,不将文档版本号当作发布日期。报名策略、需求模板与验收案例为原创整理,不是这些文档规定的完整业务流程。

BITBEAR / TELEGRAM-BOT-CONTACT-SHARING-PHONE-NUMBER-CHECKS2026年10月19日