Skip to content

HTTP 服务模式

PyWechat 提供了基于 FastAPI 的 HTTP 服务模式,可以通过 HTTP 接口调用所有微信功能。

启动服务

python
import uvicorn
from example.server import app

uvicorn.run(app, host="0.0.0.0", port=8000)

使用流程

1. 设置微信版本

GET /set_wechat_version?version=4.1.2.17&bypass_version=false

2. 设置消息回调地址

POST /set_callback_url
Body: "http://your-server.com/callback"

所有微信事件都会 POST 到该地址。

3. 接管微信

GET /open

或多开:

POST /multi_open
Body: "C:\\Program Files\\Tencent\\Weixin\\Weixin.exe"

4. 调用 API

POST /send_text/1
Body: {"to_wxid": "wxid_xxx", "content": "Hello"}

完整示例

python
from enum import Enum
from typing import Optional

import requests
import uvicorn
from fastapi import FastAPI, Body, Query
from loguru import logger

logger.remove()

from pywechat import WeChat, events

wechat: Optional[WeChat] = None
callback_url: Optional[str] = None

app = FastAPI(title="PyWechat", description="微信API接口")

@app.get("/set_wechat_version")
def set_wechat_version(version: str, bypass_version: bool = False):
    global wechat
    wechat = WeChat(version, smart=False, bypass_version=bypass_version)

    @wechat.handle(events.ALL_MESSAGE)
    def on_message(bot: WeChat, message: dict):
        if callback_url:
            requests.post(callback_url, json=message)

    return {"code": 0, "data": {"version": wechat.version}}

@app.post("/set_callback_url")
def set_callback_url(url: str = Body(...)):
    global callback_url
    callback_url = url
    return {"code": 0, "data": {"callback_url": callback_url}}

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

Swagger 文档

启动 HTTP 服务后,访问 http://localhost:8000/docs 即可查看完整的 Swagger 交互式文档。

基于 MIT 许可证发布