Telegram Bot 入门教程:从零到部署的完整指南
- Telegram Bot 到底能做什么
- 用 BotFather 创建 Bot 并拿到 Token
- 环境搭建与第一个可运行的 Bot
- 常用 API 与进阶功能
- 部署上线:轮询还是 Webhook
- 运营与排错要点
- 常见问题 FAQ
一、Telegram Bot 到底能做什么
机器人(Bot)是 Telegram 生态里最灵活的一环。它本质上是一个由你控制的特殊账号,通过官方 Bot API 收发消息。常见玩法包括:给Telegram 频道做自动推送、在群组里做关键词审核与入群欢迎语、把 RSS 或网站更新同步给订阅者、做客服机器人、抽奖投票,甚至结合 Mini App 做成小游戏或轻量商城。
新手最容易踩的两个坑:Bot 要往频道发消息,必须先被添加为频道管理员;要让 Bot 在群里读到普通消息,需要在 BotFather 里用 /setprivacy 关闭隐私模式。没做这两步,代码再对也收不到东西。
二、第一步:用 BotFather 创建 Bot 并拿到 Token
在 Telegram 搜索 @BotFather(认准官方认证标识),发送 /newbot,依次设置显示名和用户名。用户名必须以 bot 结尾,例如 my_first_demo_bot。创建成功后,BotFather 会返回一串形如 123456789:AAExxxxxxxx 的 Token,这是调用 API 的唯一凭证,务必保密,不要提交到公开仓库。
顺手可以配置 /setdescription(简介)、/setuserpic(头像)和 /setcommands(命令菜单)。命令菜单建议与代码里的 handler 名称保持一致,用户在输入框点一下就能看到指令列表,体验会好很多。
三、环境搭建与第一个可运行的 Bot
3.1 安装环境
推荐 Python 3.10 以上,使用虚拟环境隔离依赖,然后执行 pip install python-telegram-bot。也可以选 aiogram 或 pyTelegramBotAPI,思路大同小异。
3.2 最小可运行代码
from telegram.ext import ApplicationBuilder, CommandHandler
async def start(update, context):
await update.message.reply_text("你好,我是你的第一个 Bot!")
app = ApplicationBuilder().token("YOUR_TOKEN").build()
app.add_handler(CommandHandler("start", start))
app.run_polling()
运行后,在 Telegram 里向你的 Bot 发送 /start,就能收到回复。这一步跑通,说明 Token 与环境都没问题,可以继续往下加功能。
四、常用 API 与进阶功能
核心接口其实不多:sendMessage 发文本、sendPhoto 与 sendSticker 发媒体、editMessageText 修改消息、answerCallbackQuery 响应按钮点击。文本支持 HTML 与 MarkdownV2 两种解析模式,注意 MarkdownV2 对 -、.、! 等符号需要转义,否则接口会直接返回 400。
进阶方向大致有四条:一是用 Inline Keyboard 与回调按钮做出多级菜单;二是文件上传一次后复用 file_id,避免重复上传贴纸或图片;三是改用 Webhook 替代轮询,降低延迟与资源占用;四是接入 Mini App,用网页实现复杂界面。想继续深入,可以看我们的Telegram 机器人进阶案例合集。
五、部署上线:轮询还是 Webhook
开发阶段用 run_polling 最省事,不需要公网地址。但长期运行更推荐 Webhook:Telegram 主动把更新推送到你的 HTTPS 地址,响应更快,也不浪费轮询请求。
5.1 三种常见部署方式
一是传统 VPS,用 systemd 守护进程,配 Nginx 反向代理加 Certbot 免费证书,把 /webhook 路径转发到本地端口。二是容器化,写一个 Dockerfile,用 docker compose 管理,升级回滚都方便。三是 Serverless,Cloudflare Workers、Vercel、Railway 等平台按量计费,适合请求量不大的场景。
5.2 上线前检查清单
Token 放进环境变量而非硬编码;打开日志并保留滚动文件;调用 setWebhook 时带上 secret_token 做来源校验;提前写好 429 限流与 5xx 错误的重试退避逻辑。
六、运营与排错要点
Telegram 对发送频率有限制:单聊大约每秒 30 条,群组大约每分钟 20 条。广播类机器人一定要加队列与节流,否则会被限制甚至封禁。另外,用户拉黑 Bot 后再发送会返回 403,需要捕获并清理订阅列表;定期清洗无效 chat_id,能明显降低推送失败率。
常见问题 FAQ
Q1:做 Telegram Bot 需要付费吗?
Bot API 本身完全免费,成本主要来自服务器或云函数。请求量小的机器人用免费额度的 Serverless 平台即可覆盖。
Q2:完全不会编程能做机器人吗?
可以。市面上有不少可视化搭建工具,用流程块拼装就能实现自动回复和推送,但复杂逻辑仍然建议自己写代码。
Q3:Token 不小心泄露了怎么办?
立刻在 BotFather 里发送 /revoke 重新生成 Token,旧 Token 会立即失效。同时检查服务器环境变量与代码仓库历史记录。
Q4:为什么 Bot 在群里收不到消息?
多半是隐私模式未关闭。在 BotFather 中执行 /setprivacy 选择 Disable,然后把 Bot 移出群再重新拉入即可生效。
Q5:Bot、频道、群组有什么区别?
频道是一对多广播,群组是多对多聊天,Bot 是自动化账号。三者可以组合使用,例如 Bot 作为频道管理员自动发帖,同时负责群内审核。
本文最后更新于 2025 年 6 月 1 日,后续如遇 Telegram 接口调整将持续修订。
免责声明:本文内容仅供学习与技术交流参考,Telegram 的 API 行为与平台政策可能随时变更,实际部署请以官方文档为准。
Leave a Reply