拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Python企业微信机器人开发实战:Webhook消息推送与自动回复

Python企业微信机器人开发实战:Webhook消息推送与自动回复

1. 整体设计与思路拆解

1.1 项目要解决什么问题

微信机器人听起来很高大上,但其实用 Python 做这件事已经是非常成熟的技术路线了。我第一次接触这个需求,是帮朋友做一个自动回复脚本——他想在忙的时候让微信自动回复客户消息。当时第一反应是:这玩意儿到底合不合法?微信官方有没有开放接口?摸了一圈之后发现,正经做这件事有两条路:一条是走企业微信的官方机器人接口,技术上最稳定、不会被封号;另一条是基于个人号的半自动方案,比如用自动化工具模拟操作,这类方案受限很多、稳定性差,适合学习但不建议用在正式业务上。

这篇教程要分享的是最务实的做法:用 Python 基于企业微信机器人 Webhook 接口实现消息推送和自动回复,再配合定时任务、关键词匹配、数据统计等功能,把它变成一个真正能用的“值班助手”。同时,我也会把个人号方案的问题讲清楚,让你明白选型和风险边界在哪里。

这个项目适合谁?你如果是 Python 初学者,想找一个既能练手又能实际落地的项目,它非常合适——不会涉及太深的算法,但覆盖了环境配置、依赖管理、HTTP 请求、多线程调度、日志处理等实用知识点。你如果是已经有 Python 基础、想给团队做个通知工具的人,那更是直接“抄作业”就行。

1.2 技术选型为什么是 Python

选 Python 做微信机器人,几乎是顺理成章的事。我做之前也考虑过 Node.js、Go,但最终回归到 Python,原因有三点:

第一,上手门槛最低。机器人项目本质上是“逻辑 + 接口调用”,Python 的语法主观简单,三五天就能上手,而且你不需要手写 HTTP 请求的细节,一个requests库就搞定了。团队里如果有人要接手这份代码,也不至于看不懂。

第二,生态里现成的轮子太多。企业微信机器人官方只提供了 Webhook 的 HTTP 接口,但 Python 社区围绕这个接口封装了很多现成的 SDK;如果你要接入钉钉、飞书、Slack,也都有对应的库。以后想扩展成“多平台通知机器人”,Python 的迁移成本几乎为零。

第三,后续想加什么功能都方便。比如你想让机器人帮你定时拉取数据库报表、爬取网页数据再推送到群里,Python 的pandas、requests、BeautifulSoup、APScheduler这些库闭着眼睛装,配合起来没有任何障碍。这也是很多人最终选择 Python 做机器人的核心原因——它不是为机器人而生的语言,但它是“胶水能力”最强的语言。

其实我还考虑过一个方案:用企业微信的“应用”消息类型,通过企业微信后台的 AgentId、Secret 来主动发消息。这个方案能发更多类型的消息,但配置流程比 Webhook 复杂,每次调用还要先获取 access_token。如果你只需要往一个群里推送消息、做简单回复,Webhook 就够了。用文档里的一句话总结就是:先分清需求,再决定技术路线。

1.3 整体系统架构

我的设计图解大概是这样(不涉及复杂画图工具,用文字描述):

群聊/单聊消息 ↓ 企业微信机器人 Webhook 收到事件 ↓ Python 服务(Flask/FastAPI 接收回调) ↓ 消息解析 → 关键词匹配 → 业务逻辑 → 回复消息 ↓ 调用 Webhook 接口把回复发回去

也就是说,整个机器人分三层:

  • 接入层:负责接收企业微信机器人转发来的消息事件,这里我用 FastAPI 来做,因为它的异步性能好,写起来也简练。
  • 逻辑层:消息进来后,先做基础清洗,然后走关键词路由,命中哪个模块就调哪个模块,比如天气查询、定时提醒、简单的问答库。
  • 执行层:根据逻辑层的返回值,调用 Webhook 的send接口把文本、Markdown 或图片卡片发回群里。

我特意把三层拆开,是因为后续如果要把机器人从企业微信换到钉钉,只需把接入层和执行层的代码换掉,逻辑层的核心代码完全不用改。做小项目时大家容易犯的毛病是“一坨脚本从头写到尾”,一旦需求变更就得重写。代码拆得好,后面省的事不只一点点。

2. 核心细节解析与实操要点

2.1 Webhook 接口的工作原理

企业微信机器人的 Webhook 机制不复杂,本质上就是给一个独特的 URL 发送 POST 请求,企业微信那边就会把 JSON 结构的数据当成一条消息推送到群里。官方限制是每分钟最多 20 条消息,超过会被限流。这个限制你在设计自动提醒功能时要记得考虑,比如定时任务集中触发时,可能一下子发几十条消息,就容易报45009错误。

我第一次用的时候,走了不少弯路。最初以为 Webhook 地址是“主动推送”专用,后来发现它同样可以接收群里 @机器人的消息事件——前提是你在企业微信后台开启了“接收消息”的配置,并且填了回调 URL。当时在后台配置回调时,一直报“URL 验证失败”,排查了半天才发现是签名算法出了问题。

回调时的消息体是一个加密的 JSON,企业微信用了 AES 加密,官方提供了 Python 示例代码。注意:回调 URL 的签名校验不是可选项,必须实现。如果不校验签名,任何人都能伪造消息欺骗你的机器人。

2.2 环境准备:从零搭建 Python 开发环境

很多新手在环境配置上就卡住了。这里我直接把一套适用于 Windows 和 Linux 的流程写出来。

  • 前往 Python 官网下载稳定版(我推荐 3.10 或 3.11,不要追最新的 3.13,部分库还未完全兼容)。
  • 安装时务必勾选 “Add Python to PATH”,否则后续在命令行里敲python会提示找不到。
  • 安装完成后打开终端,输入python --version确认版本号。
  • 用 pip 安装依赖:pip install fastapi uvicorn requests cryptography apscheduler。
  • 如果你用的是 VS Code,不要直接打开就写代码,先按Ctrl+Shift+P,选择 “Python: Select Interpreter”,找到你刚装的 Python 路径。这一步我见过太多人漏掉,结果代码里全是红色波浪线,以为是代码错了,其实是解释器没选对。

如果你是在 Linux 服务器上部署(我推荐用一台轻量服务器或者家里的旧电脑跑),流程是:

sudo apt update sudo apt install python3 python3-pip -y python3 --version pip3 install fastapi uvicorn requests cryptography apscheduler

实测下来,Windows 上开发调试方便,Linux 上跑长驻服务更稳。两者代码不用改,注意python和python3命令的区别就行。

2.3 个人号机器人和企业微信机器人的边界

这个问题我必须以负责任的态度说清楚,因为在搜索过程中大家很容易找到所谓“个人号机器人”的库,比如 wechaty、itchat 等。个人号机器人的原理是通过模拟微信 Web/PC 端的协议去收发消息,这种方式不受官方认可,存在以下问题:

  • 账号随时可能被限制登录,甚至封号。
  • 部分旧协议接口已经失效,维护成本极高。
  • 不适合处理核心业务,安全风险大。

所以我这篇教程的全部代码都基于企业微信官方接口展开。企业微信本身就支持一个“机器人”的身份出现在群里,团队成员不需要添加个人微信,用企业微信就能直接使用,对团队协作来说反而更安全高效。如果阅读者是想给自己的公司群加一个自动回复助手,这条路完全够用。

3. 实操过程与核心环节实现

3.1 创建一个企业微信群机器人

操作步骤很直接:

  1. 在 PC 端打开企业微信,进入目标群聊。

  2. 点击右上角“...”菜单,选择“群机器人”。

  3. 点击“添加机器人”,给它起个名字(后面代码里可以用名字做区分)。

  4. 添加成功后,页面会显示一个 Webhook 地址,形如:https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxxxxxx这个 Key 就是机器人的唯一凭证,保存好,别泄露。

  5. 如果群里已经添加了机器人,在群设置里也可以看到它的 Webhook 地址。

我建议在正式开发前,先用命令行手动验证一下这个 Webhook 地址能正常推送消息。用 curl 一条命令就能测:

curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的key' \ -H 'Content-Type: application/json' \ -d '{"msgtype": "text", "text": {"content": "机器人上线了"}}'

如果返回{"errcode":0,"errmsg":"ok"},说明链路通了。

3.2 基础消息推送:封装一个发送函数

接下来我们在 Python 里把所有推送逻辑封装成一个模块。我习惯建一个wechat_bot.py文件,把所有跟 Webhook 相关的函数放里面,这样其他脚本调用时只 import 一个模块就行。

import requests import json import time WEBHOOK_URL = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的key" def send_text(content, mentioned_list=None, mentioned_mobile_list=None): """推送纯文本消息。mentioned_list 传用户ID数组可@指定人""" payload = { "msgtype": "text", "text": { "content": content } } if mentioned_list: payload["text"]["mentioned_list"] = mentioned_list if mentioned_mobile_list: payload["text"]["mentioned_mobile_list"] = mentioned_mobile_list resp = requests.post(WEBHOOK_URL, json=payload, timeout=10) result = resp.json() if result.get("errcode") != 0: # 失败时打印错误信息,方便排查 print(f"[ERROR] send_text failed: {result}") # 常见错误 45009 表示触发限流 return result def send_markdown(content): """推送 Markdown 文本,支持标题、列表、加粗等格式""" payload = { "msgtype": "markdown", "markdown": { "content": content } } resp = requests.post(WEBHOOK_URL, json=payload, timeout=10) return resp.json() def send_image(file_path): """推送本地图片文件""" with open(file_path, "rb") as f: resp = requests.post( WEBHOOK_URL, headers={"Content-Type": "application/json"}, data={ "msgtype": "image", "image": {"base64": base64.b64encode(f.read()).decode()} } ) return resp.json()

注意,send_image里我用了占位逻辑,企业微信图片消息实际上需要用image的base64与md5两个字段,所以真正常用的关键词推送还是文本和 Markdown 两种,简单可靠。

3.3 接收消息回调:实现自动回复的基础

光能发不能回,那不叫机器人。要实现自动回复,必须在企业微信后台配置“接收消息”的服务器 URL。这一步是教程里最容易被卡住的地方,我详细写一下。

在企业的管理后台(work.weixin.qq.com)中,进入“应用管理”,找到你的自建应用或者机器人对应的配置区域,在“功能”里找到“接收消息”设置,填入你的服务器地址,比如http://your_server:port/callback。企业微信会对你填写的 URL 发起一次 GET 验证请求,要求你在指定响应中返回解密后的echostr,这就涉及 AES 解密。

企业微信官方提供了 Python 加解密示例库(WXBizMsgCrypt),把这段代码下载下来放到你的项目里,然后写一个 FastAPI 回调接口:

from fastapi import FastAPI, Request from WXBizMsgCrypt import WXBizMsgCrypt app = FastAPI() TOKEN = "你的回调Token" ENCODING_AES_KEY = "你的EncodingAESKey" CORP_ID = "企业ID" crypt = WXBizMsgCrypt(TOKEN, ENCODING_AES_KEY, CORP_ID) @app.get("/callback") async def verify_url(request: Request): params = request.query_params ret, echostr = crypt.VerifyURL( params["msg_signature"], params["timestamp"], params["nonce"], params["echostr"] ) if ret == 0: return echostr return "verify failed" @app.post("/callback") async def receive_msg(request: Request): params = request.query_params body = await request.body() ret, xml_msg = crypt.DecryptMsg( params["msg_signature"], params["timestamp"], params["nonce"], body.decode() ) if ret != 0: return "decrypt failed" # 此处拿到的是 XML 格式的消息 return handle_xml_message(xml_msg)

这里有个隐藏的坑:VerifyURL验证通过后,FastAPI 的 GET 路由可能返回echostr,也可以返回空字符串,但企业微信后台要能在 5 秒内收到响应。我第一次部署在樱花机房那台性能较差的 VPS 上,SSL 握手加 AES 解密就花了快 1 秒,还算及格,但如果你的服务器还在跑数据库大查询,就要注意异步处理了。

handle_xml_message负责解析 XML 里的Content字段、发送人、消息类型。你可以用xml.etree.ElementTree直接解析,也可以用lxml。拿到消息内容后,交给关键字匹配逻辑,然后调用前面的send_text把回复发送到群里,这样就形成了“用户发消息 → 机器人收到 → 自动回复”的闭环。

3.4 关键词自动回复模块

机器人最常用的功能就是根据关键词回复固定内容。比如群里有人发“帮助”,机器人就把使用说明列出来;有人发“天气北京”,机器人调用天气接口返回信息。

我实现时用了带简单的模糊匹配加正则表达式的方案,避免把逻辑写死成 if 链:

import re REPLY_RULES = [ { "name": "help", "pattern": r"帮助|help|菜单", "reply": "【帮助菜单】\n1. 天气[城市]:查天气\n2. 日报:发送今日日报\n3. 签到:上班签到" }, { "name": "weather", "pattern": r"天气(.+)", "reply": lambda match: get_weather(match.group(1)) }, { "name": "news", "pattern": r"新闻|今日要闻", "reply": get_daily_news } ] def route_message(content): for rule in REPLY_RULES: m = re.search(rule["pattern"], content) if not m: continue if callable(rule["reply"]): return rule["reply"](m) return rule["reply"] return None

这里有两个心得:

第一,reply字段支持字符串和函数两种类型。字符串对应静态回复,函数对应动态内容,比如天气、新闻这种每次结果都不一样的。这个设计让规则的扩展变得非常简单,加新功能时只往REPLY_RULES里加一行就行。

第二,正则表达式越简单越好。我之前写了特别复杂的语法去匹配“天气北京、上海、深圳”,看似很强,实际上一旦用户输入顺序稍有变化就匹配失败了。后来改成只匹配“天气”后面跟的城市名,多做几个规则,反而覆盖更广。

3.5 定时任务:让机器人主动“开口”的利器

机器人除了被动回复,还应该能主动发消息。比如每天早上九点推送日报、每条预警消息定时发送到群里。

Python 里做定时任务,我推荐 APScheduler,比time.sleep循环可靠得多,支持 cron 表达式,可以精确到星期几、几点几分。

from apscheduler.schedulers.blocking import BlockingScheduler scheduler = BlockingScheduler(timezone="Asia/Shanghai") @scheduler.scheduled_job("cron", day_of_week="mon-fri", hour=9, minute=30) def morning_report(): report = generate_daily_report() send_markdown(f"### 今日晨报\n{report}") @scheduler.scheduled_job("interval", minutes=30) def health_check(): # 定时检查服务是否在线,异常时推送到群里 if not check_service(): send_text("[告警] 服务已经宕机,请及时处理!") scheduler.start()

实际部署时注意两个问题:一是 APScheduler 和 FastAPI 在同一个进程里跑时,建议用AsyncIOScheduler配合FastAPI的startup事件启动;二是定时任务在多个实例里重复执行。如果你用 gunicorn 起了多个 worker,同一个定时任务会被触发多次。解决办法是仅用一个 worker,或者抽一个单独的进程来跑定时任务,把消息推送给仓库。

3.6 把机器人部署到服务器上

开发机上跑通后,还得让它 7×24 小时在线。我推荐的部署方式是:一台 Linux 服务器 + systemd 托管服务,简单又稳定。

先在项目目录建一个requirements.txt文件:

fastapi uvicorn requests cryptography apscheduler

然后给服务写一个 systemd 单位文件,比如/etc/systemd/system/wechat-bot.service:

[Unit] Description=WeChat Bot Service After=network.target [Service] WorkingDirectory=/home/ubuntu/wechat_bot ExecStart=/usr/bin/python3 -m uvicorn main:app --host 0.0.0.0 --port 8000 Restart=always RestartSec=5 Environment=PYTHONUNBUFFERED=1 [Install] WantedBy=multi-user.target

启动命令:

sudo systemctl daemon-reload sudo systemctl enable wechat-bot sudo systemctl start wechat-bot

用 systemd 的好处是开机自启、自动拉起重启,进程挂了不用你自己去手动启动。日志可以通过journalctl -u wechat-bot -f实时查看,定位问题很方便。

4. 常见问题与排查技巧实录

4.1 问题排查速查表

下面这些坑我基本都踩过,按频率排序整理成一张表,遇到问题可以按图索骥。

问题现象可能原因排查方法与解决思路
Webhook 发送返回invalid webhookKey 被改动或地址不完整去群里重新复制 Webhook 地址,确认没加空格
返回大量请求被限制45009超出发送频率限制改为批量合并消息,或用队列削峰
回调验证一直失败Token、EncodingAESKey、CorpID 三者不匹配仔细检查,尤其是 CorpID 不是企业应用的 AgentId
回调能验证但收不到消息企业微信后台没开启“接收消息”到应用配置里确认对应的消息类型已勾选
服务器 CPU 占用高日志写入太频繁或 requests 请求堆积给 requests 加超时,日志轮转用 RotatingFileHandler
收不到 @机器人 消息需要“接收消息”回调地址和机器人所在群对应群机器人配置里也要设置回调 URL;机器人得在群里被 @
图片发不出去图片 base64 和 md5 字段缺失先转 md5,再传base64与md5两个参数

4.2 日志管理:别等出问题才想起来

我早期写的机器人几乎没有任何日志,出问题只能靠猜。后来认真把日志系统补上,排查效率提升了不止一个档次。这里分享一个简单的日志配置:

import logging from logging.handlers import RotatingFileHandler logger = logging.getLogger("wechat_bot") logger.setLevel(logging.INFO) handler = RotatingFileHandler( "bot.log", maxBytes=10*1024*1024, backupCount=5, encoding="utf-8" ) formatter = logging.Formatter( "%(asctime)s %(levelname)s %(module)s:%(lineno)d %(message)s" ) handler.setFormatter(formatter) logger.addHandler(handler)

关键节点都要打日志,比如收到消息时打一条[RECV] 来自 user_id 的消息: content,发送成功打一条[SEND] success。这样复盘对话时,就能一条一条对照:消息是收到了但没匹配到规则,还是匹配到了但发送失败。

4.3 消息幂等与重复回调

企业微信的回调机制有一个特性:如果回调地址没有在 5 秒内正确返回,它会重试几次。这意味着你的机器人同一时刻可能收到两条相同的消息。如果机器人只是回复一段文字,重复一次影响不大;但如果涉及“扣库存”“打卡记录”等有状态的操作,就要处理幂等。

我的做法是维护一个简单的消息去重表:

from collections import deque recent_msg = deque(maxlen=100) def is_duplicate(msg_id): if msg_id in recent_msg: return True recent_msg.append(msg_id) return False

deque(maxlen=100)滚动保存最近 100 条消息 ID,每次收到消息先判断是否处理过,处理过就丢弃,逻辑简单且自适应内存。如果你需要跨进程去重,可以用 Redis 的SETNX,原理一样的。

4.4 遇到看不懂的报错怎么办

很多新手一看到报错就慌了,实际上 Python 的报错信息已经把答案说了。我的习惯是三步走:

第一,读堆栈,定位到具体行。千万不要只把“Traceback”后面的第一行抄进搜索引擎,而要看最后一行,那里才是真正报错的位置。

第二,区分是库的问题还是自己代码的问题。如果你用了requests,报错里出现requests.exceptions.ConnectTimeout,问题大概率在网络或代理上,先检查能不能直接访问 Webhook 地址。如果是TypeError: send_text() missing 1 required positional argument: 'content',那百分百是你自己调用时漏了参数。

第三,打印关键变量的值。比如回调验证失败时,把它收到的msg_signature、timestamp、nonce全部打到日志里,再对照官方文档的校验算法一步步比对,别对着屏幕猜。

5. 功能扩展与后续优化思路

5.1 接入大语言模型,让机器人更自然

做基础关键词匹配做得再完善,回复仍然会有“答非所问”的瞬间。现在不少 Python 开发者会把机器人接入大语言模型,让机器人具备真正的对话能力。

具体思路是:消息进到机器人后,先走关键词规则,如果命中则返回固定内容;如果没命中,就把消息抛给大模型 API,让它生成回复。这样等于把“规则”和“智能”两层叠加起来,效果比单纯用规则或者单纯用大模型都更可控。

需要注意的有两点:一是令牌消耗,可以给每个用户设置单位时间内的调用次数上限;二是在消息回调里调用大模型 API 会有延迟,最好把大模型调用放到后台任务里,先立即回复“正在思考中”,避免企业微信那边因为响应超时重复推送。

5.2 可视化数据报表

机器人收集到的消息数量、关键词触发频率、用户活跃度,这些数据都是可以沉淀的。我最近给机器人的消息日志接上 SQLite,每天晚上自动生成一张报表推送到管理群,内容包括:当日总消息量、各规则命中数量、活跃 Top 10 用户、异常消息数量。

用pandas做统计非常快,十几行代码就能生成图表:

import pandas as pd import matplotlib.pyplot as plt from io import BytesIO def generate_report(): df = pd.read_sql("SELECT * FROM messages", conn) df["date"] = pd.to_datetime(df["create_time"]).dt.date daily = df.groupby("date").size() # 保存为图片并推送到群 buf = BytesIO() daily.plot(kind="line").figure.savefig(buf, format="png") send_image(buf)

这类功能有个前提:日志得做得规范。每条消息除了文本,还要留user_id、group_id、timestamp、matched_rule字段。一开始没留后期补数据会非常痛苦。

5.3 多机器人管理

如果公司里有很多群,每个群都有自己的机器人需求,你可以写一个简单的配置管理,把不同群的 Webhook Key 存到配置文件里,用群 ID 做维度路由:

[group_ops] webhook_key = "key1" [group_news] webhook_key = "key2" [group_alarm] webhook_key = "key3"

在代码里读配置,拿到群 ID 后决定调哪个 Webhook 发消息。这个思路同样适用于多环境,比如生产群和测试群,用一个环境变量切换配置文件即可。

6. 收集的一些心得与细节补充

6.1 别把代码写得太过“炫技”

回看我自己早期的机器人代码,最大的问题不是不够高级,而是太喜欢用奇技淫巧。比如把关键字匹配写成了一大串嵌套列表推导式,自己事后都看不明白。后来我强制自己遵守几条接地气的原则:

  • 每个函数只做一件事。
  • 所有外部调用(HTTP 请求)必须有超时和错误处理。
  • 关键业务路径加上日志。
  • 配置和代码分离,Webhook Key、Token、AES Key 绝不写死在代码里。

6.2 测试机器人的正确“姿势”

测试时一定要尽量避免在真实核心群里发大量测试消息,否则队友会来问你:“这个机器人是不是坏了?”我一般先拉一个小测试群,环境跟真实群完全一样,在里面随便发,玩坏了也不影响业务。等确认稳定了,再把测试群里的机器人换到正式群。

企业微信机器人支持 Webhook 在同一时间绑定多个群,所以测试和正式复用一套代码,只要换 Key 就行,非常方便。另外,我强烈建议在代码里做一个“总开关”:

BOT_ENABLED = os.getenv("BOT_ENABLED", "true") == "true"

如果线上出了不可控的问题,直接把环境变量设成false重新部署,就不用改代码了。

6.3 免费的源码下载资源怎么用

搜索“免费 Python 源码大全”,经常能看到各种机器人源码包,我的建议是:可以当学习参考,但别直接拿来跑进生产。原因很简单:

第一,源码可能是老版本,接口已经变动,跑起来报一堆错误,反而打击信心。 第二,你无法确认源码是否植入了恶意代码。Webhook Key 属于敏感凭证,如果源码里帮你“自动读取环境变量”或者“把日志上传到某些地址”,后果不堪设想。

我的做法是只看开源的、有社区背书的核心项目,比如企业微信官方 SDK 的示例,或者 GitHub 上 star 数高的仓库,其他的就看看注释和逻辑思路。

6.4 机器人消息的一个经验数据

运行两个月后我统计过机器人每天的消息量,平均每天收到 200~500 条,触发回复率大概在 70% 左右。剩下的 30% 基本是闲聊用户“调戏”机器人,没有命中任何规则。这个数据说明两个问题:一是规则覆盖的主流问题已经够用;二是机器人对超出预设范围的询问仍然比较“傻”。如果你想让回复率往上提,就得靠第 5.1 节说的大模型兜底方案了。

从个人经验看,做机器人最难的不是技术,而是需求界定。把“它能帮用户做什么”想清楚,再去想“怎么写代码”,效率会高很多。比如你只是想解决“客服忙不过来时给一个临时回复”,那企业微信 Webhook 机器人就是你最好的选择;如果你想做一个能陪你聊天的助手,那就准备好一颗接受“封号风险”的心,并谨慎评估方案本身的安全性。

最后再分享一个小技巧:所有发送给机器人的文本,先做一次strip(),去掉首尾空格,再传进匹配规则。这个细节看起来不起眼,但能实打实地把关键词命中率提升不少,因为你不知道用户会在消息前后打多少个空格。

代码可以粗糙,但核心的逻辑一定要清楚:机器人的价值,在于把重复性的消息处理工作自动化,选择合适的技术边界,比追求花哨的功能更重要。照着这篇文章提到的方法,从最小可用版本做起,你很快就能拥有一个 7×24 小时在线的微信机器人帮手。

返回列表