很多人想做微信机器人,一上来就被各种框架、协议、SDK绕晕。其实跑通一个能用的机器人,最短路径只有三件事:让号在线、能发消息、能收消息。这篇用Python手把手走一遍,复制改Token就能跑。

参考资料WTAPI框架
接口路径、参数与回调字段以api文档weiti.apifox.cn 为准。

第一步:准备凭证

到WTAPI开通服务后拿到三样东西:平台Token、Bearer授权、appId。所有接口请求都要带这组凭证,Base URL统一为

import requests, time

BASE = "https://wx.chuapi.com"
HEADERS = {
    "X-finder-TOKEN": "<你的平台Token>",
    "Authorization": "Bearer <你的Bearer>",
    "Content-Type": "application/json",
}
APP_ID = "<你的appId>"

WTAPI走的是RPA路线,在真实客户端环境里执行操作,比协议逆向稳定,不容易因为版本更新整体失效。

第二步:扫码登录,拿到在线实例

先取二维码,再轮询扫码状态,登录成功后拿到 instanceId——它代表这台在线的微信号,后续所有操作都要带它。

# 1. 获取登录二维码
qr = requests.post(
    f"{BASE}/finder/v2/api/getLoginQrCode",
    headers=HEADERS,
    json={"appId": APP_ID},
).json()
print("请扫码登录,二维码字段:", qr.get("data"))

# 2. 轮询扫码结果
instance_id = None
while True:
    status = requests.post(
        f"{BASE}/finder/v2/api/checkLogin",
        headers=HEADERS,
        json={"appId": APP_ID},
    ).json()
    data = status.get("data", {})
    if data.get("isLogin"):
        instance_id = data.get("instanceId")
        print("登录成功:", instance_id)
        break
    time.sleep(3)

第三步:发一条文本消息

登录成功立刻验证发送能力。调 postText,必传 appId、instanceId、toWxid、content,成功返回 code:"1000"。

resp = requests.post(
    f"{BASE}/finder/v2/api/postText",
    headers=HEADERS,
    json={
        "appId": APP_ID,
        "instanceId": instance_id,
        "toWxid": "<对方wxid>",
        "content": "你好,机器人已上线",
    },
    timeout=10,
).json()
print("发送结果:", resp.get("code") == "1000")

第四步:用Webhook收消息并自动回复

发消息是主动调接口,收消息要靠Webhook实时回调。起一个公网能访问的Flask服务,在WTAPI后台配置回调地址:

from flask import Flask, request

app = Flask(__name__)

@app.route("/webhook", methods=["POST"])
def webhook():
    data = request.json
    from_wxid = data.get("fromWxid")
    content = data.get("content", "")

    if content.strip() == "你好":
        requests.post(
            f"{BASE}/finder/v2/api/postText",
            headers=HEADERS,
            json={
                "appId": APP_ID,
                "instanceId": data.get("instanceId"),
                "toWxid": from_wxid,
                "content": "你好呀,有什么可以帮你?",
            },
            timeout=10,
        )
    return {"code": "1000"}

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

对方发"你好",机器人秒回"你好呀"——收发闭环就通了。

新手最容易漏的三件事

一是回调服务必须公网可访问,本地调试用内网穿透;二是回复时用回调里的同一个 instanceId,多账号才不会串号;三是上生产要加消息去重,Webhook重投会导致同一条消息回两次。

跑通这四步,你就有了能扩展任何业务的底座,后面加自动回复、群管理、好友自动化,都是在这个收发闭环上叠功能。



Logo

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

更多推荐