在Telegram的生态中,机器人(Bot)是自动化服务和提升效率的核心工具。无论是社群管理、客户服务,还是个人助理,关键词自动回复都是最常见的需求。通过设置特定的触发词,机器人可以无需人工干预,秒回预设内容。本文将从零开始,手把手教你创建Telegram机器人,并实现关键词自动回复功能,即使你没有编程基础也能跟着完成。
准备工作:创建你的第一个Telegram机器人
要使用机器人,首先需要创建它。Telegram提供了官方机器人管理工具——BotFather,所有机器人的“出生”和配置都在这里完成。
步骤1:与BotFather对话
在Telegram中搜索并打开@BotFather,点击“START”开始对话。然后输入命令/newbot,按提示为机器人起一个名字(如“关键词回复助手”)和用户名(必须以bot结尾,例如keyword_reply_bot)。
步骤2:获取API Token
创建成功后,BotFather会返回一个HTTP API Token(形如123456789:ABCdefGHI...),这是机器人身份的凭证,后续所有API调用都需要它。请务必备份并妥善保管。
提示:你可以随时通过/mybot查看已创建机器人,并用/token重新获取Token。
实现关键词自动回复的几种方案
获取Token后,需要让机器人响应消息。主要有三种途径:
- 方案一:使用编程语言(如Python)调用Bot API——灵活可控,适合自定义复杂逻辑。
- 方案二:配置Webhook接收更新——适合服务器端高效处理,实时性最好。
- 方案三:使用第三方无代码平台——例如Chatfuel、Manybot等,无需编程,适合快速部署。
考虑到通用性和学习价值,本文重点讲解方案一,并附带Webhook配置思路。
Python实现关键词自动回复(详细步骤)
Python拥有丰富的Telegram库,这里我们使用最常用的python-telegram-bot。以下步骤在Ubuntu 22.04 + Python 3.10环境下测试通过。
1. 安装依赖
pip install python-telegram-bot==20.62. 编写基础代码
创建一个bot.py文件,内容如下:
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters
# 你的Token,替换为实际值
TOKEN = "123456789:ABCdefGHI"
# 关键词回复映射表
KEYWORDS = {
"你好": "你好!欢迎使用关键词自动回复机器人。",
"价格": "我们的报价单在官网首页,请查看。",
"客服": "人工客服工作时间:9:00-18:00。",
}
async def handle_message(update: Update, context):
text = update.message.text
if not text:
return
# 精确匹配关键词
for kw, reply in KEYWORDS.items():
if kw == text.strip():
await update.message.reply_text(reply)
break
def main():
app = Application.builder().token(TOKEN).build()
app.add_handler(MessageHandler(filters.TEXT, handle_message))
print("机器人已启动...")
app.run_polling()
if __name__ == "__main__":
main()3. 运行机器人
在终端执行python bot.py,然后用自己的Telegram账号向机器人发送“你好”,即可看到自动回复。如果要停止,按Ctrl+C。
进阶:使用正则表达式实现模糊匹配
生产环境中,用户往往不会输入完全一样的关键词,例如“价格是多少”、“我想咨询价格”。此时正则表达式更实用。改造handle_message:
import re
PATTERNS = {
r"价格.*": "我们的报价单在官网首页,请查看。",
r"客服.*": "人工客服工作时间:9:00-18:00。",
}
async def handle_message(update: Update, context):
text = update.message.text
for pattern, reply in PATTERNS.items():
if re.search(pattern, text):
await update.message.reply_text(reply)
return这样只要消息中包含“价格”二字就能触发回复。你可以根据业务需要编写更多正则规则。
Node.js实现关键词自动回复
如果你更熟悉JavaScript,可以使用telegraf库。首先安装:npm install telegraf。然后构建一个简洁的监听器:
const { Telegraf } = require('telegraf');
const bot = new Telegraf('123456789:ABCdefGHI');
bot.on('text', (ctx) => {
const text = ctx.message.text;
const replies = {
'你好': '你好!欢迎使用。',
'价格': '请查看官网报价。',
};
if (replies[text]) {
ctx.reply(replies[text]);
}
});
bot.launch();运行node bot.js即可。Node.js在事件驱动和高并发场景下表现优秀,适合大型社群。
Webhook模式:线上部署更稳定
长轮询(polling)适合开发和测试,但生产环境推荐使用Webhook。Webhook需要公网HTTPS地址,可以使用Nginx和SSL证书(如Let's Encrypt)。核心思路是让Telegram服务器将消息直接POST到你的服务器端点,响应延迟更低。
Python中设置Webhook只需一行:
app.run_webhook(listen="0.0.0.0", port=8443, url_path="TOKEN", webhook_url="https://yourdomain.com/TOKEN")关于Webhook的详细配置,我们之前的文章《Telegram机器人如何设置Webhook接收消息:从零到实战的完整指南》已有深入阐述,可参考。
关键词匹配的实用技巧
- 优先级排序:将更具体的规则放在前面,避免被模糊规则误拦截。
- 大小写处理:对于英文,先转小写再匹配。
- 支持多关键词映射:一个回复可对应多个触发词,用列表存储。
- 统计与日志:记录命中次数,用于优化话术。
- 避免骚扰:设置冷却时间,防止刷屏。
部署与运维建议
机器人写好后,还要考虑长期稳定运行。推荐使用进程管理器pm2(Node.js)或systemd(Python),实现开机自启和异常重启。此外,建议将Token存储在环境变量中,不要写死在代码里。
总结
通过本文,你已经学会了从创建BotFather机器人,到使用Python或Node.js实现关键词自动回复的完整流程。关键词匹配从精确到正则,再到Webhook部署,足以应对日常需求。Telegram机器人还有无限可能,自动回复只是第一步,后续你还可以接入数据库、定时任务、人工智能等,创造更强大的助手。
如果在实践中遇到问题,欢迎在评论区留言,或查阅我们的其他机器人教程文章。