wcflink 是参考 lich0821/wcfLink 实现的 Python 版本地运行时。
它直接对接 iLink 通道,负责扫码登录、账号持久化、长轮询收消息、本地事件存储、媒体收发,以及对外提供本地 HTTP API 和 Python SDK。
- 扫码登录
- 登录状态轮询
- 已登录账号持久化
- iLink
getupdates长轮询 - 文本消息发送
- 图片、视频、文件、语音发送
- 图片、语音、视频、文件接收与落盘
- 本地事件存储
context_token管理- 本地 HTTP API
- SQLite 状态存储
- Python SDK 和命令行工具
pip install wcflink运行时依赖:
pycryptodomeqrcode[pil]
它们会随着 wcflink 一起安装。
最常见的用法是直接启动本地服务:
wcflink serve默认监听:
127.0.0.1:17890
默认状态目录:
./data
也可以覆盖配置:
- 监听地址:listen-addr
- 认证密钥:api-key
注意:默认监听地址 127.0.0.1,如果希望监听全部使用 0.0.0.0,密钥全部接口都需要,添加请求头 Authorization,如下配置接口的值应当为 Bearer soUY6VaaS286oiiEfr6sQJK4v3q3K020zdwC5ZIDAr8
wcflink serve \
--listen-addr 127.0.0.1:28080 \
--api-key soUY6VaaS286oiiEfr6sQJK4v3q3K020zdwC5ZIDAr8 \
--state-dir ./runtime-data \
--upstream-base-url https://ilinkai.weixin.qq.comfrom wcflink import WcfLinkClient
client = WcfLinkClient("http://127.0.0.1:17890")
print(client.version())
print(client.list_accounts())
print(client.list_events(limit=10))from wcflink import Engine, load_config
cfg = load_config()
engine = Engine(cfg=cfg)
engine.start_background()
session = engine.start_login()
print(session.session_id)
print(session.qr_code_url)from wcflink import WcfLinkClient
client = WcfLinkClient()
session = client.start_login()
print(session.session_id)
print(session.qr_code_url)
status = client.get_login_status(session.session_id)
print(status.status)保存二维码 PNG:
png = client.get_login_qr(session.session_id)
with open("qrcode.png", "wb") as f:
f.write(png)client.send_text(
account_id="xxx@im.bot",
to_user_id="yyy@im.wechat",
text="hello",
)注意:
- 当前发送依赖
context_token - 如果
context_token为空,会尝试从本地历史会话中查找 - 因此目标用户通常需要先给 bot 发过至少一条消息
client.send_media(
account_id="xxx@im.bot",
to_user_id="yyy@im.wechat",
file_path="/absolute/path/to/demo.jpg",
media_type="image",
text="caption",
)media_type 当前支持:
imagevideofilevoice
启动服务后,可用接口与上游 Go 版保持同一思路:
GET /health/liveGET /health/readyGET /api/versionPOST /api/accounts/login/startGET /api/accounts/login/statusGET /api/accounts/login/qrGET /api/accountsGET /api/eventsGET /api/logsGET /api/settingsPOST /api/settingsPOST /api/messages/send-textPOST /api/messages/send-media
wcflink serve
wcflink version
wcflink accounts
wcflink events --limit 20
wcflink login start
wcflink login status login_xxx
wcflink send-text --account-id xxx@im.bot --to-user-id yyy@im.wechat --text "hello"
wcflink send-media --account-id xxx@im.bot --to-user-id yyy@im.wechat --file-path /abs/demo.jpg --type image如果服务不在默认地址:
wcflink --base-url http://127.0.0.1:28080 versioncd wcfLink-py
python3 -m pip install --upgrade build twine
python3 -m build
python3 -m twine check dist/*
python3 -m twine upload dist/*正式发布前建议确认:
pyproject.toml中的版本号已经更新- README 在 PyPI 上能正常渲染
- 本地
wcflink serve能正常启动 - 登录、轮询、发消息流程已经对真实 iLink 环境做过验证