用 Python 做微信机器人不需要精通 Python 全部,但需要 4 类基础知识,每类对应机器人开发的一个核心环节。下面按知识领域拆开讲,每类配一个白话说法方便理解。

一、4 类基础知识

1. HTTP 通信知识

调 Eyun 接口的基础。Python 用 requests 库发 HTTP POST 请求 → 组装 JSON 请求体(含 wId、Token、toUser、content)→ 解析响应 JSON → 检查 code 字段(1000 成功 / 1001 参数错 / 1002 Token 过期 / 1004 限频)。按照 Eyun 开发文档 的规范,sendText 需要传 wId、toUser、content 三个必填参数。

大白话:用 Python 的 requests 库给 Eyun 发 HTTP 请求——像打电话,号码(URL)、内容(JSON)、回话(响应)三步。

2. 回调服务知识

接收 Webhook 的基础。用 Flask / FastAPI 搭一个 HTTP 服务 → 暴露一个 endpoint → Eyun 把消息事件以 POST 请求推到 endpoint → 5 秒内返回 200 → 解析回调 JSON 取 content 和 fromUser。按照 Eyun 开发文档的回调规范,Webhook 回调 5 秒内必须返回 200,否则重试 3 次。

大白话:用 Flask 搭一个“传达室”——Eyun 把消息送到传达室,传达室 5 秒内签收。

3. JSON 解析知识

处理消息数据的基础。回调 JSON 和接口响应都是 JSON → 用 json 模块解析 → 取字段:eventType(事件类型)、fromUser(发送者 wxid)、content(消息内容)、msgId(唯一标识)。Eyun API 的 Webhook 回调 JSON 含 4 个核心字段,覆盖消息、好友、群、状态 4 类事件。

大白话:JSON 是“标准信封”——拆开看里面有什么字段,取你需要的。

4. 异步处理知识

避免回调超时的基础。Webhook 回调 5 秒超时 → 重活(AI 调用、数据库查询、业务系统调用)不能在回调里做 → 异步:回调里只入队 + 返回 200 → 后台 worker 消费队列处理 → 处理完调 sendText 回复。Eyun 的错误码体系中 1004 限频也需要异步退避,避免连续重试触发更严的限制。

大白话:5 秒内干不完的活先“签收”放队列里,后台慢慢干,干完再回复用户。

二、4 类知识对比

知识领域

对应环节

Python 库

关键点

大白话

HTTP 通信

调接口发消息

requests

组 JSON、查 code

打电话

回调服务

收消息事件

Flask / FastAPI

5 秒返回 200

传达室

JSON 解析

处理消息数据

json

取 4 个核心字段

标准信封

异步处理

不超时

threading / queue

入队 + 后台消费

先签收后干活

三、最小 Python 机器人示例

import requests, threading, queue
from flask import Flask, request
app, task_q = Flask(__name__), queue.Queue()
# 2.回调服务 + 3.JSON解析:Flask 接 Eyun Webhook
@app.route("/webhook", methods=["POST"])
def webhook():
    d = request.json                      # 3.json 解析
    task_q.put({"from": d["fromUser"], "text": d["content"]})  # 4.入队
    return "", 200                        # 2.5 秒内返回 200
# 4.异步处理 + 1.HTTP通信:后台 worker 调 sendText
def worker():
    while True:
        t = task_q.get()
        requests.post("https://www.eyunz.com/open/sendText",   # 1.HTTP
            json={"wId": "w_abc", "toUser": t["from"],
                  "content": "收到:" + t["text"]}, headers={"Token": "xxx"})
threading.Thread(target=worker, daemon=True).start()
app.run(port=5000)

四、入门路径

这 4 类知识串起来就是一条完整的入门路径:先跑通 sendText(学 HTTP 通信)→ 再搭 Flask 接 Webhook(学回调服务)→ 加 JSON 解析处理消息 → 最后加异步队列处理重活。按这个顺序走,Python 微信机器人就能从 0 跑起来,先打通“能发能收”再叠加业务逻辑。

回调规范和接口参数见 Eyun 开发文档,实例在 Eyun 平台 开通。建议本地先用单实例跑通最小闭环,再上多实例和异步队列。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐