Telegram机器人(Bot)是自动化交互的绝佳工具,而Python凭借其简洁语法和丰富的库,成为开发Telegram机器人的首选语言。但很多初学者在开始写代码前,往往卡在了“开发环境搭建”这一步——不知道如何注册Bot、安装依赖、甚至处理网络代理问题。本文将从零开始,手把手教你搭建一套完整的Python开发环境,让你顺利迈出机器人开发的第一步。
准备工作:注册Telegram账号和创建机器人
在搭建环境之前,你需要先有一个Telegram账号,并创建一个机器人以获取API Token。Token是机器人通信的凭证,必须严格保密。
- 注册Telegram账号:如果你还没有账号,请先下载Telegram客户端并完成注册(手机号验证)。如果网络不稳定,可参考本站“网络优化”相关教程。
- 联系BotFather:在Telegram中搜索并打开
@BotFather,这是Telegram官方机器人管理工具。 - 创建新机器人:发送
/newbot命令,按提示输入机器人显示名称和用户名(必须以bot结尾)。创建成功后,BotFather会返回一个HTTP API Token,形如123456789:ABCdefGhIJKlmNoPQRsTUVwxyz,复制并妥善保存。
建议将Token存储在环境变量中,避免硬编码到代码里,提高安全性。
安装Python和包管理工具
Telegram机器人开发要求Python 3.7及以上版本。建议使用Python 3.8+,因为新版异步特性更完善。
- Windows:前往python.org下载安装包,勾选“Add Python to PATH”后再安装。
- macOS:推荐使用Homebrew安装:
brew install python,或直接下载官方安装包。 - Linux:使用系统包管理器,如Ubuntu执行
sudo apt install python3 python3-venv python3-pip。
安装完成后,在终端输入python --version确认版本正确。同时确保pip和venv模块可用。
安装python-telegram-bot库
python-telegram-bot是目前最流行的Telegram Bot开发库,封装了Bot API,支持同步和异步两种编程方式。我们推荐使用v20.x以上版本(基于异步),后续示例也以此为准。
在项目目录下创建虚拟环境(强烈建议),然后激活并安装库:
# 创建虚拟环境
python -m venv venv
# 激活(Windows)
venv\Scripts\activate
# 激活(macOS/Linux)
source venv/bin/activate
# 安装库
pip install python-telegram-bot
如果网络较慢或无法直接访问PyPI,可以配置镜像源,例如使用清华源:
pip install python-telegram-bot -i https://pypi.tuna.tsinghua.edu.cn/simple
配置开发环境(代理与环境变量)
在某些地区,访问Telegram API可能需要代理。为了让代码能正常连接,你可以在脚本中设置HTTP代理,或系统级配置环境变量。这里推荐使用python-dotenv管理Token。
# 安装dotenv支持
pip install python-dotenv
# 在项目根目录创建.env文件,内容:
BOT_TOKEN=123456789:ABCdefGhIJKlmNoPQRsTUVwxyz
HTTP_PROXY=http://127.0.0.1:10809
HTTPS_PROXY=http://127.0.0.1:10809
然后在代码中用以下方式加载:
import os
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv('BOT_TOKEN')
PROXY = os.getenv('HTTPS_PROXY') # 可选用
如果使用代理,在初始化Application时传入proxy参数(注意版本要求)。具体实现见下文示例。
编写第一个机器人
现在,编写一个最简单的“回声”机器人:收到用户消息后原样回复。这能验证环境是否正常。
import asyncio
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, MessageHandler, ContextTypes, filters
# 处理 /start 命令
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text('你好!我是回声机器人,请发送任意消息。')
# 处理普通文本消息
async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text(update.message.text)
async def main():
# 从环境变量读取Token(需要先安装python-dotenv并创建.env文件)
import os
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.getenv('BOT_TOKEN')
# 构建应用,并支持代理(如果有)
app = ApplicationBuilder().token(TOKEN).proxy(os.getenv('HTTPS_PROXY')).build()
# 注册处理器
app.add_handler(CommandHandler('start', start))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
# 启动长轮询
await app.run_polling()
if __name__ == '__main__':
asyncio.run(main())
注意:如果无需代理,请删除.proxy()那一行。若你的Python版本较旧,可能需要注意异步写法差异。
运行和测试
- 确保.env文件已正确配置,且虚拟环境已激活。
- 将上述代码保存为
bot.py,在终端执行python bot.py。 - 看到类似“Application started”的日志说明启动成功。
- 在Telegram中打开你创建的Bot(通过BotFather给的用户名),点击Start或发送消息,机器人应能自动回复。
如果无法启动,请检查Token是否正确、网络是否通、端口是否被占用(默认长轮询不需要额外端口)。
常见问题与调试技巧
- 连接超时或404错误:多半是Token错误或网络代理设置问题。先不设置代理,尝试直接连接;如果不行,再检查代理IP和端口。
- ImportError: cannot import name 'ApplicationBuilder':说明安装的版本可能是旧版。请升级到v20+:
pip install -U python-telegram-bot。 - asyncio运行时冲突:确保主函数使用
asyncio.run(),不要在IPython或Jupyter中直接运行。 - 虚拟环境丢失:如果更换终端,需要重新激活虚拟环境。可以用IDE自带终端自动激活。
总结
搭建开发环境是Telegram机器人开发的第一步,也是关键一步。通过本文的引导,你已经完成了从账号注册到运行机器人Demo的整个过程。接下来,你就可以在此基础上扩展更多功能,比如接入OpenAI、制作问卷、关键词回复等。如果你想深入这些应用,本站已有多个相关教程可以参考。祝你在Bot开发路上畅通无阻!