Telegram Bot是自动化的智能助手,可以回复消息、发送通知、处理命令甚至与外部API交互。Python凭借简洁语法和丰富的库,成为开发Telegram机器人的首选语言。本教程将带你从零开始,搭建环境、创建机器人、编写代码,并最终部署上线。无论你是编程新手还是老手,都能快速上手。
一、准备工作:创建Telegram账号与获取Bot Token
在开始编码之前,你需要一个Telegram账号(可通过手机号注册)和一个Bot Token。Token是机器人的身份凭证,相当于钥匙。获取Token的步骤非常简单:
- 打开Telegram,搜索@BotFather(官方机器人管理账号)。
- 发送
/newbot命令,按照提示输入机器人的显示名称和用户名(用户名需以bot结尾,例如my_first_python_bot)。 - 创建成功后,BotFather会返回一个HTTP API token,形如
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11,请妥善保存。
注意:Token是敏感信息,切勿公开。如果泄露,可通过BotFather的/revoke命令重置。
二、搭建Python开发环境并安装依赖
确保你的电脑已安装Python 3.7及以上版本(推荐3.10+)。可以使用python --version检查。接下来,创建一个虚拟环境并安装python-telegram-bot库,它是目前最流行的Telegram Bot开发库,封装了API细节。在终端执行:
python -m venv venv
source venv/bin/activate # Windows下为 venv\Scripts\activate
pip install python-telegram-bot
如果你更喜欢轻量级方案,也可以直接使用requests库调用Telegram Bot API,但python-telegram-bot提供了更简洁的接口和异步支持,推荐初学者使用。
三、编写第一个Bot:发送“Hello World”
我们从一个最简单的例子开始,让机器人响应/start命令并发送“你好,世界!”创建bot.py文件,输入以下代码:
from telegram.ext import Application, CommandHandler
async def start(update, context):
await update.message.reply_text("你好,世界!我是你的第一个Bot。")
def main():
# 将TOKEN替换为你的真实Token
app = Application.builder().token("YOUR_TOKEN_HERE").build()
app.add_handler(CommandHandler("start", start))
app.run_polling()
if __name__ == "__main__":
main()
运行代码:python bot.py。然后在Telegram中打开你的机器人(点按BotFather给你的链接),点击“开始”或发送/start,机器人就会回复。如果看到“你好,世界!”,恭喜你,你的Telegram机器人已经成功运行!
四、处理自定义命令与用户消息
除了/start,我们想让机器人识别更多指令。例如添加一个/help命令和一条回复普通文字消息的功能。修改bot.py:
from telegram.ext import Application, CommandHandler, MessageHandler, filters
async def start(update, context):
await update.message.reply_text("你好!输入/help查看帮助。")
async def help_command(update, context):
await update.message.reply_text("这是帮助菜单:\n/start - 开始\n/help - 帮助")
async def echo(update, context):
await update.message.reply_text(update.message.text)
def main():
app = Application.builder().token("YOUR_TOKEN_HERE").build()
app.add_handler(CommandHandler("start", start))
app.add_handler(CommandHandler("help", help_command))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
app.run_polling()
现在,机器人会回复/help命令,并直接复述你发送的任何普通文本消息。这里需要注意~filters.COMMAND用于排除命令消息,避免重复响应。
五、让机器人更智能:发送图片、键盘按钮与上下文
1. 发送图片
使用context.bot.send_photo可以发送图片,例如:
async def photo(update, context):
chat_id = update.message.chat_id
await context.bot.send_photo(chat_id=chat_id, photo="https://example.com/cat.jpg", caption="可爱的小猫")
2. 自定义键盘
为了让交互更友好,可以发送按钮:
from telegram import ReplyKeyboardMarkup
async def menu(update, context):
keyboard = [["图片", "帮助"]]
markup = ReplyKeyboardMarkup(keyboard, resize_keyboard=True)
await update.message.reply_text("请选择:", reply_markup=markup)
3. 用户上下文
使用context.user_data可以存储用户信息,实现个性化回复。
这些功能让你的Bot不再是“复读机”,而是具备真正价值的工具。
六、部署:让机器人24小时在线
本地运行机器人,关闭电脑后Bot就下线了。要实现24小时运行,需要部署到服务器或云平台。常见方案有:
- VPS服务器:使用Nginx反向代理,搭配systemd服务管理。
- 云平台:Heroku, Railway, Fly.io等,支持Docker部署。
- Webhook模式:相比轮询(polling),Webhook更高效,适合生产环境。你需要配置公网HTTPS地址和证书。
对于入门项目,建议先使用run_polling(),部署时再切换为Webhook模式。具体可参考本站《Telegram机器人Webhook配置教程》。
七、常见问题与排障
开发过程中可能会遇到问题,这里列举几个高频问题:
- 网络问题:Telegram API在部分地区无法直接访问,需要配置代理或使用反向代理。
- Token错误:确保Token没有多余空格,且正确复制。
- 依赖问题:安装库失败时,尝试升级pip或使用虚拟环境。
总结
通过本教程,你已经学会了使用Python开发Telegram机器人的完整流程:获取Token、安装库、编写命令、扩展功能以及部署思路。从简单的回复到复杂的交互,Telegram Bot有无限可能。建议你继续深入学习API文档,并尝试结合数据库、Webhook等实现更强大的功能。祝你开发愉快!