Telegram Bot 入门教程(从零到部署)

Written by

in

Telegram Bot 入门教程:从零到部署的完整指南

  1. Telegram Bot 到底能做什么
  2. 用 BotFather 创建 Bot 并拿到 Token
  3. 环境搭建与第一个可运行的 Bot
  4. 常用 API 与进阶功能
  5. 部署上线:轮询还是 Webhook
  6. 运营与排错要点
  7. 常见问题 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 行为与平台政策可能随时变更,实际部署请以官方文档为准。

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *