如何创建Telegram电报机器人?如何在Telegram中设置自动回复机器人?
想让 Telegram 机器人收到消息后自动回复,需要先通过 BotFather 创建机器人,再运行处理消息的程序。本文用 Python 演示一个最小可用版本:用户私聊机器人时,发送 /start 会收到欢迎语,发送普通文字会收到固定回复。
这个示例用于机器人的私聊窗口,不会自动回复你个人账号收到的消息,也没有接入 AI。先在本地验证成功,再考虑持续部署。
第一步:通过 BotFather 创建机器人
- 打开 Telegram,通过 官方 BotFather 进入对话。
- 发送
/newbot,按提示设置名称和用户名,以 BotFather 的实际提示为准。 - 创建成功后保存机器人链接和 Token。Token 相当于机器人的访问凭证,请勿发布到文章、截图或公开代码中;如果泄露,可通过 BotFather 撤销并重新生成。
创建机器人只获得了账号和凭证;自动回复程序还需要按后续步骤运行。
第二步:准备 Python 环境
以下使用 Python 3.12,以及固定版本 python-telegram-bot==22.8。请不要混用旧教程中的 Updater(..., use_context=True)、Filters 与本文的新接口。
新建文件夹,将以下两个文件保存在同一目录:
bot.py:下一节的机器人程序。requirements.txt:内容如下。
python-telegram-bot==22.8
Windows PowerShell:进入该文件夹,依次运行下列命令。如果 py 命令不可用,可用已安装的 Python 对应命令替换第一行中的 py。
py -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
macOS / Linux:
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements.txt
第三步:编写自动回复程序
把以下内容保存为 UTF-8 编码的 bot.py。程序从环境变量读取 Token,不需要把令牌写进代码。
import logging
import os
from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes, MessageHandler, filters
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
if update.effective_message:
await update.effective_message.reply_text("你好!请发送一条文字消息,测试自动回复。")
async def auto_reply(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
if update.effective_message:
await update.effective_message.reply_text("您好,已收到您的消息。这是一条自动回复。")
async def on_error(update: object, context: ContextTypes.DEFAULT_TYPE) -> None:
# 仅记录异常类型,避免把令牌或用户消息写入日志。
logging.getLogger(__name__).error("处理更新失败:%s", type(context.error).__name__)
def main() -> None:
token = os.environ.get("TELEGRAM_BOT_TOKEN", "").strip()
if not token:
raise SystemExit("请先设置 TELEGRAM_BOT_TOKEN 环境变量。")
logging.basicConfig(level=logging.WARNING)
logging.getLogger("httpx").setLevel(logging.WARNING)
application = Application.builder().token(token).build()
application.add_handler(CommandHandler("start", start, filters=filters.ChatType.PRIVATE))
application.add_handler(MessageHandler(
filters.ChatType.PRIVATE & filters.TEXT & ~filters.COMMAND,
auto_reply,
))
application.add_error_handler(on_error)
print("正在连接 Telegram。连接成功后可私聊机器人测试;按 Ctrl+C 停止。")
application.run_polling(allowed_updates=["message"])
if __name__ == "__main__":
main()
如需修改回复内容,只调整 reply_text(...) 中的中文文字,保留英文引号和缩进。该示例只处理私聊的文字消息;图片、语音、群消息和其他命令不会触发普通文字回复。
第四步:设置 Token 并在本地启动
Windows PowerShell:以下输入方式不会把 Token 本身写进命令历史。输入时不会显示字符。
$botSecret = Read-Host "请输入 BotFather 提供的 Token" -AsSecureString
$env:TELEGRAM_BOT_TOKEN = [System.Net.NetworkCredential]::new('', $botSecret).Password
.\.venv\Scripts\python.exe bot.py
macOS / Linux(Bash):
read -r -s -p "请输入 BotFather 提供的 Token: " TELEGRAM_BOT_TOKEN
echo
export TELEGRAM_BOT_TOKEN
.venv/bin/python bot.py
这里设置的环境变量只用于当前终端及其启动的进程。打开新终端后需要重新设置。不要把包含真实 Token 的终端输出或环境变量截图分享出去。
第五步:确认自动回复成功
- 保持运行程序的终端打开,进入你自己的机器人私聊窗口。
- 点击 Start,或发送
/start。应收到“你好!请发送一条文字消息,测试自动回复。” - 发送“你好”等普通文字。应收到“您好,已收到您的消息。这是一条自动回复。”
- 修改回复文字后,需要停止并重新运行程序,新的回复内容才会生效。
要停止程序,在运行窗口按 Ctrl+C。程序停止、电脑休眠、断网或关机后,都无法继续实时处理新消息。
需要持续运行时怎样部署?
本地运行适合测试。持续服务需要一台保持联网的服务器,或支持长期后台进程的托管平台。本文使用轮询方式,不需要为了这个示例额外开放一个接收网页请求的端口。
- 将同一份
bot.py和requirements.txt放到运行环境中,用相同版本安装依赖。 - 在托管平台的受保护环境变量设置中配置
TELEGRAM_BOT_TOKEN;自管服务器则由服务管理器读取受权限保护的配置。不要把令牌放进代码仓库。 - 将启动命令设置为对应 Python 环境下的
python bot.py,启用进程异常退出后的重启,并确认主机重启后能恢复服务。 - 停止本地测试实例,避免同一 Token 同时运行多个轮询进程;再按上一节测试私聊回复。
选择托管服务前,确认它支持常驻后台进程,以及是否存在休眠、配额或收费限制。部署本身不保证永远在线,仍需检查网络、进程状态和错误日志。
机器人没有回复时,先检查这些项目
提示设置 TELEGRAM_BOT_TOKEN
在启动程序的同一个终端设置环境变量,再运行。新开的终端不会自动继承前一个窗口的临时设置。
出现 InvalidToken / Unauthorized
核对 Token 是否完整、是否已经撤销。必要时在 BotFather 重新生成,并更新运行环境。不要把 Token 发给他人排查。
出现 TimedOut / NetworkError
检查运行程序的电脑或服务器能否连接 Telegram Bot API。Telegram 客户端能连接,不一定代表 Python 进程使用相同的网络配置。
出现 Conflict
检查同一 Token 是否还在本机、另一台服务器或其他托管服务上运行轮询;只保留当前计划使用的一个实例。
私聊文字能回复,群里不能回复
这是本示例的设计范围:只回复私聊文字。群聊需要另行设计消息过滤和权限,不能直接拿私聊测试结果判断。
欢迎语出现,但其他消息不回复
先发送普通文字,不要使用图片、语音或其他斜杠命令;同时检查程序是否仍在运行。
安装后出现导入错误
确认使用虚拟环境里的 Python 安装和运行,并安装 requirements.txt 指定的版本;不要将文件命名为 telegram.py。
完成私聊测试后,可以在这个基础上继续增加关键词回复或菜单。涉及客服业务时,先明确哪些消息由机器人回复、哪些情况转人工,避免让自动回复冒充人工处理结果。
参考文档
关于Fans1688
🔥最便宜的自助刷粉平台,一手价格,无中间商
💼下单网站: fans1688.com
💰1000个Twitter粉丝4.6元
💰1000个电报0退群粉丝7.5元
💰1000个Facebook粉丝3.2元
💰1000个Instagram粉丝2.9元
💰1000个Telegram成员8.6元
💰1000次Tiktok 播放4分钱
Fans1688的服务:
✅Twitter推特刷粉丝、买粉、涨粉、刷关注,刷浏览量、刷点赞、刷评论、刷分享、刷转发、刷直播人气
✅Telegram刷粉丝、TG刷订阅、刷群成员、刷浏览量、刷点赞、刷评论、刷分享、刷评论、刷反馈、刷表情
✅TikTok刷粉丝、买粉、涨粉、刷播放量、刷点赞、刷评论、刷分享、刷转发、刷直播人气
✅Facebook脸书刷粉丝、买粉、涨粉、买群组粉、刷群组粉、刷浏览量、刷点赞、刷评论、刷分享、刷反馈、刷评论、刷直播人气
✅Youtube油管刷粉丝、买粉、涨粉、买订阅、刷订阅、刷播放量、刷点赞、刷评论、刷分享、刷观看时间、刷评论、刷直播人气
✅Instagram刷粉丝、买粉、涨粉、刷浏览量、刷点赞、刷评论、刷分享、刷评论、刷直播人气
✅Discord 刷订阅, DC刷粉丝, Discord刷赞, DC刷关注, Discord 买关注, Discord 刷点赞, DC刷表情赞