Telegram机器人关键词自动回复教程:从零搭建你的智能客服

本教程手把手教你用Telegram机器人实现关键词自动回复,从创建Bot到编写代码,覆盖正则匹配、群组回复、权限控制等核心技巧,零基础也能快速上手。

阅读提示涉及账号和安全设置时,请边阅读边核对当前设备界面。

为什么需要关键词自动回复?

在Telegram群组或频道中,成员常提出重复问题,手动回复效率低下。通过机器人实现关键词自动回复,可秒回常见问题、过滤垃圾信息、自动引导用户,极大提升管理效率。本教程将带您从零创建一个具备关键词回复能力的Telegram机器人,无需复杂基础,跟着步骤操作即可。

准备工作:创建机器人与获取Token

首先,您需要Telegram账号。与@BotFather对话创建新机器人:

  1. 发送 /newbot 命令。
  2. 按提示输入机器人显示名称(如 MyKeywordBot)。
  3. 输入唯一的用户名,必须以 bot 结尾(如 MyKeywordReplyBot)。
  4. 创建成功后,BotFather会返回一个HTTP API Token,形如 123456789:AAF-xxxx,请妥善保存。

同时,在BotFather中使用 /setprivacy 关闭隐私模式(设置为Disabled),这样机器人才能读取群组中所有消息(而不仅仅是命令),这是关键词自动回复的关键。

编写关键词回复代码(Python示例)

下面使用 python-telegram-bot 库实现最简版本。先安装:pip install python-telegram-bot --upgrade

from telegram.ext import Application, MessageHandler, filters
import re

TOKEN = "YOUR_BOT_TOKEN"

# 定义关键词与回复映射
keyword_replies = {
    "价格": "我们的产品定价为99元/月,点击 /price 查看详情。",
    "地址": "公司地址:北京市朝阳区XX路XX号,导航请回复“地图”。",
    "人工": "如需人工客服,请拨打400-888-8888。"
}

async def handle_message(update, context):
    text = update.message.text
    if not text:
        return
    lower_text = text.lower()
    for keyword, reply in keyword_replies.items():
        if keyword.lower() in lower_text:
            await update.message.reply_text(reply)
            return  # 只回复第一个匹配

def main():
    app = Application.builder().token(TOKEN).build()
    app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_message))
    app.run_polling()

if __name__ == "__main__":
    main()

YOUR_BOT_TOKEN 替换为您的Token,运行脚本,机器人即开始监听。在群组中发送包含“价格”的消息,机器人会自动回复。

进阶:正则表达式与模糊匹配

简单包含匹配容易误触发,例如“假价格”也会触发。使用正则可精确匹配:

import re

pattern_map = {
    re.compile(r"价格\s*是?"): "价格信息...",
    re.compile(r"怎么联系|人工客服"): "客服电话..."
}

for pattern, reply in pattern_map.items():
    if pattern.search(text):
        await update.message.reply_text(reply)
        return

还可以借助 difflib 实现近似匹配,处理用户拼写错误或口语化表达。

群组管理:权限与防骚扰

在群组中,机器人默认只能回复提及它的消息。要允许机器人回复所有消息,除了关闭隐私模式,还需在群组中将机器人设为管理员(至少授予“删除消息”权限)。此外,可以设置回复频率限制,避免机器人被刷屏:

# 简单限速:同一用户60秒内只回复一次
from datetime import datetime, timedelta
last_reply = {}

if user_id in last_reply and datetime.now() - last_reply[user_id] < timedelta(seconds=60):
    return
last_reply[user_id] = datetime.now()

部署与运维建议

  • 使用Webhook模式:生产环境建议用Webhook替代长轮询,响应更快且节省资源。
  • 日志监控:记录每次触发的关键词和回复,便于优化关键词库。
  • 关键词分组:将大量关键词导入数据库或配置文件,方便非开发者维护。

总结

通过以上步骤,您已成功搭建一个Telegram关键词自动回复机器人。无论是客户支持、群组管理还是趣味互动,都能轻松应对。建议先小范围测试,逐步优化关键词覆盖与回复文案。如需更复杂的功能(如状态机、菜单按钮),可在 python-telegram-bot 官方文档中找到更多扩展。

FAQ

下载与安装

常见问题