如何在Telegram中通过BotFather创建机器人?

通过BotFather创建Telegram机器人只需三步:发送/newbot、设定名称与用户名、保存API Token。本文详解流程、安全合规要点与常见问题。
功能定位与变更脉络
BotFather 是 Telegram 官方提供的机器人创建与管理工具,其本质是一个特殊的机器人(@BotFather),用于生成新机器人实例、修改已有机器人的属性、回收 Token 以及删除机器人。自 2015 年面世以来,BotFather 的接口基本保持稳定——核心命令(/newbot、/mybots、/setcommands 等)多年未变,但后台策略有所调整:2021 年起 Telegram 要求所有机器人必须通过 BotFather 设置命令列表(/setcommands)才能被 inline 搜索到;2023 年引入了强制性隐私模式(Privacy Mode),新机器人默认无法读取群聊中非直接提及的消息。当前(截至 2026 年 9 月)所有操作仍通过文本命令完成,无图形界面。对于开发者而言,BotFather 是通往 Telegram Bot API 的第一道门,也是后续运维中管理 Token 和回调 URL 的配置中心。理解 BotFather 的权限边界和限制,有助于在设计与运营阶段提前规避合规与安全风险。接下来,我们将完整走一遍从创建到配置的实操路径。
创建机器人的完整操作路径
第一步:获取 BotFather 对话窗口
在 Telegram 任意客户端(移动端 iOS/Android、桌面端 Windows/macOS/Linux 或网页版)中搜索 @BotFather 并点击“开始”(Start),或直接发送消息 /start。BotFather 会回复欢迎消息并列出可用命令。所有平台的操作路径完全一致——因为 BotFather 本身就是聊天机器人,不存在菜单路径差异;但桌面端(如 Telegram Desktop)支持使用键盘快捷键(Ctrl+/)快速调出命令提示,而移动端需要手动输入斜杠或从输入栏上方弹出的建议列表中选择。发送 /start 是与任意机器人交互的标准起始动作,确保你正在与正确的官方机器人对话(注意顶部应显示蓝色认证标志)。
第二步:执行 /newbot 命令
发送 /newbot,BotFather 会依次询问两个信息:
- 机器人显示名称(Name):用户看到的名字,可包含空格、Emoji,长度无严格上限(建议 ≤64 字符)。例如“天气助手”。尽量选择直观易记的品牌或功能描述。
- 用户名(Username):用于唯一标识,必须以
bot结尾(如WeatherHelperBot),长度 5–64 字符,只能包含拉丁字母、数字和下划线,不可重复。如果名称已被占用,BotFather 会提示换一个。建议避免使用拼写复杂或易混淆的单词,便于用户通过搜索找到。
具体场景:假设你要为一家连锁咖啡店开发客服机器人,显示名称建议使用品牌名+“客服”,如“星咖客服”;用户名可用 XingKaServiceBot。注意用户名一旦设定仍可通过 /setname 修改显示名称,但用户名仅可通过 /mybots 进入设置后重新修改(BotFather 最近版本已支持直接更改用户名,路径:/mybots → 选择机器人 → Edit Bot → Edit Name)。如果希望保持灵活性,可以在初期选择一个中性用户名,后期再调整品牌名。
第三步:保存 API Token
创建成功后,BotFather 会返回类似以下格式的消息(以当前最新版本为例,实际 Token 字符串随机器人生成而异):
Done! Congratulations on your new bot. You will find it at t.me/YourBotUsername.
Use this token to access the HTTP API:
1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
Keep your token secure and store it safely, it can be used by anyone to control your bot.合规要点:Token 是机器人的唯一凭证,谁持有 Token 谁就能完全操控机器人(收发消息、修改 Webhook 等)。必须将其视为敏感凭据,存放在环境变量或专用密钥管理服务(如 AWS Secrets Manager、Vault)中,严禁硬编码在源代码、客户端前端或公开仓库中。建议在创建完成后立即执行一次 Token 回收测试(/revoke),确认备份流程无误。可记录 Token 的生成时间与首次使用时间作为审计基线。示例:在本地开发时,可以将 Token 写入 .env 文件并加入 .gitignore;在 CI/CD 中通过安全变量注入。
配置机器人的关键属性
创建完机器人后,接下来需要配置一系列属性,使其在用户面前呈现完整的功能和品牌形象。以下是几个必须在上线前完成的配置项。
设置命令列表(/setcommands)
发送 /setcommands,BotFather 会要求你发送一个命令列表文本,格式为每行一个命令:命令 - 描述。例如:
start - 开始使用机器人
help - 显示帮助信息
status - 查询订单状态保存后,用户在聊天窗口输入 / 即可看到建议列表。此为强制最佳实践——原因:Telegram 客户端会在输入框上方自动展示已注册的命令,提升用户体验;对于群组中的机器人,若未设置命令列表,用户将无法获得自动提示。此外,inline 模式下若想通过 @botusername 触发,同样需要提前设置命令。边界:命令名称仅允许小写拉丁字母、数字和下划线,且必须唯一。描述建议不超过 32 字符,中文描述在部分客户端可能出现换行问题(经验性观察:iOS 端可正常显示,旧版 Android 端可能截断过长描述)。因此,对于面向中文用户的服务,建议将命令描述控制在 20 个汉字以内,或同时提供英文描述。
设置描述与关于(/setdescription、/setabouttext)
使用 /setdescription 可编辑机器人的简介,出现在个人资料页的“关于”区域下方,最多 512 字符。使用 /setabouttext 设置“关于”区域第一行,最多 120 字符。两者区别:描述更详细,关于更精炼。合规提示:如果机器人涉及数据处理(如客服机器人记录对话),建议在描述中声明数据用途,例如“本机器人会存储您的聊天记录以处理订单,详情见隐私政策。”这并非 Telegram 要求,但符合多国数据保护法规(如 GDPR)的透明度原则。此外,良好的描述还能提升用户信任——用户在被首次邀请进群组或私聊时,会首先看到这些文本。
设置头像(/setuserpic)
执行 /setuserpic 后,BotFather 会要求上传一张图片。支持格式:JPEG、PNG,建议 512×512 像素(Telegram 自动缩放)。图标应清晰辨识品牌或功能。注意:头像更新后可能不会立即在所有客户端生效(经验性观察:缓存时间约 5–15 分钟)。为了加快更新,可以通知部分用户手动刷新对话资料页(例如重新进入机器人对话)。如果使用品牌 Logo,建议选用正方形版本并保留足够边距,避免在圆形裁剪模式下被裁切。
安全管理 Token 与 Webhook
配置完成后,安全是机器人持续运行的生命线。正确管理 Token 和选择消息接收方式直接关系到数据泄露风险与服务的稳定性。
Token 泄露的处置
一旦发现 Token 可能泄露(如意外提交到 GitHub),应立即在 BotFather 中执行 /revoke 来撤销当前 Token 并生成新 Token。具体路径:/mybots → 选择机器人 → API Token → Revoke current token。撤销后原有 Token 立即失效,所有使用原 Token 的客户端、Webhook 将无法工作,需更新为新 Token。建议在变更前后记录时间戳并通知相关维护人员。可复现验证步骤:在撤销前使用 curl 测试旧 Token 的 getMe 接口返回正常;撤销后再执行应返回 401 Unauthorized。此外,还可以在 Token 泄露后检查机器人近期的更新日志(通过 Webhook 或 Polling)以评估影响范围。
Webhook 或 Polling 的选择
Bot 有两种方式接收用户消息:长轮询(Long Polling)和 Webhook。前者无需公开回调地址,适合开发测试;后者需要一台公网可访问的 HTTPS 服务器,并由 Telegram 主动推送消息。合规要求:若生产环境使用 Webhook,BotFather 中的 /setwebhook 需要指定一个 HTTPS URL(自签名证书需上传公钥)。Webhook 模式下,所有消息的传递延迟更低,但服务器必须具备 IP 白名单(Telegram 的 IP 段可在官方文档查得)和足够稳定的连接。审计日志:建议在 Webhook 端记录每次请求的 timestamp 和 raw update payload(脱敏),用于异常行为分析。示例:使用 Nginx 的 access_log 记录来源 IP,再结合 Telegram 官方公布的 IP 段进行本机防火墙过滤。
与第三方工具的协同:权限最小化原则
当你使用第三方托管平台(如 Heroku、Railway、Cloudflare Workers)部署 Bot 时,务必遵循权限最小化原则:
- 只授予平台访问 Token 所需的权限(通过环境变量注入,非硬编码)。
- 如果平台支持 IP 来源限制,请限制为 Telegram 官方 IP 段。
- 避免使用同一个 Token 在多个环境中同时运行(可能导致 update 竞争)。
- 定期轮换 Token(例如每 90 天),在 BotFather 中执行 /revoke 并更新至所有环境。
具体场景:一家金融科技公司使用 Bot 推送交易通知,其 Token 存储在 Vault 中通过 CI/CD 变量注入;运维人员在 BotFather 中设置了一个只有内部 IP 才能调用的 webhook,并每季度更换 Token。即使某开发者的本机被攻破,泄露的环境变量也无法用于生产环境 Webhook,因为 IP 被限制。这个案例说明了深度防御的重要性:就算 Token 暴露,攻击者也无法从任意位置调用 Webhook。
故障排查:常见问题与解决方案
即使遵循了最佳实践,开发和运维过程中仍可能遇到一些典型问题。以下列出最常见的现象及其排查方法。
现象1:BotFather 不响应命令
可能原因:你使用了错误的 Bot 账号(例如不是 @BotFather)。验证方法:查看对话顶部的名称是否为“BotFather”(带有蓝色认证标志)。另一个可能性是消息未成功发送(客户端离线)。处置:重新发送 /start 并等待回复。如果问题持续,检查 Telegram 客户端是否被封禁或存在网络连接问题(例如某些区域对 Telegram 的访问限制)。
现象2:创建新 Bot 时提示“Sorry, this username is already taken”
表示用户名已被其他机器人占用。必须更换一个未使用的用户名。可以尝试添加数字或下划线,例如 WeatherHelper_bot_2026。注:用户名全局唯一,无法删除旧机器人释放——Telegram 不会永久删除已占用的用户名,即使原机器人已被删除,用户名也不会自动释放(经验性观察:在旧机器人被删除后,该用户名可能仍不可用,建议使用全新用户名)。因此,在取名时尽量避开常见词汇组合,或提前用搜索功能检查 t.me/username 是否已被占用。
现象3:Webhook 设置失败
常见原因:URL 不是 HTTPS、证书无效、Telegram 服务器无法连接到你的服务器。验证方法:在浏览器中访问你的 Webhook URL 是否能正常返回(至少不拒绝连接)。另外可以使用 curl 测试 Token 的相邻接口(如 getWebhookInfo)查看错误描述。若有 IP 白名单,确认已放行 Telegram 官方 IP 段(可参考官方文档获取最新段列表)。如果使用 Cloudflare Workers 等边缘计算平台,注意确保 Worker 的 HTTP 端点返回 200 且符合 Telegram 的要求。
适用与不适用场景清单
适用场景
- 开发面向公众或团队内部的自定义 Telegram Bot(如客服、通知、查询工具)。
- 需要灵活管理多个 Bot 实例,每个使用独立的 Token 和命令列表。
- 希望遵循官方标准流程,从创建到配置完全在 Telegram 内完成。
- 需要定期撤销/轮换 Token 并保持审计记录的场景。
如果你的需求符合以上一条或多条,BotFather 就是最直接且安全的工具。
不适用场景
- 不想使用 Telegram 客户端:BotFather 必须在 Telegram 聊天界面内操作,没有 HTTP API。如果你想通过脚本自动化创建 Bot,目前官方不提供此类接口。
- 需要批量创建大量 Bot:每次创建都需要人工交互(输入名称、用户名),无法用程序自动循环。虽然可以通过伪造消息实现(违反 ToS),但不建议。
- 需要精细的团队权限管理:BotFather 不提供多用户协作功能——每个 Telegram 账号可以管理自己创建的所有 Bot,无法将某个 Bot 的“管理权”转交给他人。要共享管理权只能分享 Token(存在安全风险)。
面对这些场景,你需要考虑替代方案,例如基于 Bot API 的第三方管理平台(但需审慎评估安全风险)。
最佳实践清单(决策规则)
- 创建时记录审计信息:记录创建时间、操作者账号、生成的用户名和 Token 哈希(不要存储明文 Token 在非安全位置)。
- 立即设置命令列表:在 Bot 上线前完成 /setcommands,否则用户无法使用斜杠提示。
- 设置描述时包含合规声明:如果机器人收集个人数据,在描述中声明其用途并附上隐私政策链接。
- 定期轮换 Token:每 90 天或每当有人员离职时执行 /revoke。
- 生产环境使用 Webhook + IP 白名单 + HTTPS:降低中间人攻击风险。
- 测试环境与生产环境使用不同的 Token 和 Bot:即使同名也不同 Token。
- 监控 Token 异常使用:通过 Webhook 日志检测短时间内大量来自异常 IP 的请求。
- 在 BotFather 中删除不再使用的 Bot:执行 /deletebot 可彻底移除,但注意无法恢复且用户名不会释放。
以上规则可作为项目上线前的检查清单。建议将其集成到团队的 CI/CD 或内部 Wiki 中。
FAQ(常见问题)
1. 能否通过 API 自动创建 Bot?
2. 如果忘记了 Token 但 Bot 仍在运行,如何重新获取?
3. 创建新 Bot 后,多久可以投入使用?
4. 删除 Bot 后能否恢复?
5. BotFather 是否支持设置机器人加入群组的权限?
总结与下一步行动
通过 BotFather 创建 Telegram 机器人是起步的第一步,也是最关键的一步。本文详细拆解了从 /newbot 到安全管理 Token 的完整流程,并强调了合规与审计的实践要点。行动建议:立即创建一个测试机器人,体验完整周期(创建→设置命令 Webhook→撤销 Token→删除),确保你理解每一步的后果。然后,将上述最佳实践应用到你计划上线的生产机器人中。切记:永远不要将 Token 提交到版本控制系统;定期轮换;为每个 Bot 保留干净的操作日志。随着 Telegram 平台持续演进(例如近年加入的 Mini App 功能),BotFather 也可能推出新的管理命令或界面更新——建议保持对官方 Bot API 变更日志的关注,以便及时利用新特性提升机器人体验。