WhoChat
地址:https://github.com/amchii/whochat
一个依赖于 ComWeChatRobot提供的Com接口的微信机器人,在此之上提供了:
- 发布至PyPI,可以一键安装
- 命令行支持,可以方便通过命令操作(见下面使用说明)
- WebSocket消息推送
- JSON-RPC2.0方法调用,支持WebSocket和HTTP
- 简单的定时任务支持
- 其他
当前支持微信版本为3.7.0.30
安装:
pip install whochat
若需要HTTP RPC支持,则是
pip install whochat[httprpc]
安装完成之后尝试使用whochat
命令,理应看到以下输出:
D:\
> whochat --help
Usage: whochat [OPTIONS] COMMAND [ARGS]...微信机器人使用<子命令> --help查看使用说明Options:--help Show this message and exit.Commands:list-wechat 列出当前运行的微信进程regserver 注册COMserve-message-ws 运行接收微信消息的Websocket服务serve-rpc-http 运行微信机器人RPC服务(JSON-RPC2.0), 使用HTTP接口serve-rpc-ws 运行微信机器人RPC服务(JSON-RPC2.0), 使用Websocketshow-rpc-docs 列出RPC接口version 显示程序和支持微信的版本信息
使用
- 列出当前运行的微信进程:
> whochat list-wechat
PID: 102852
启动时间: 2022-08-27T22:22:02.290700
运行状态: running
用户名: wxid_hjkafa123a
---
- 注册COM服务:
> whochat regserver # 注册
> whochat regserver --unreg # 取消注册
注册一次就可以使用服务了。
- 开启微信消息转发WebSocket服务
> whochat serve-message-ws --help
Usage: whochat serve-message-ws [OPTIONS] [WX_PIDS]...运行接收微信消息的Websocket服务WX_PIDS: 微信进程PIDOptions:-h, --host TEXT Server host. [default: localhost]-p, --port INTEGER Server port [default: 9001]--help Show this message and exit.
该子命令接受一或多个微信PID作为位置参数,可以指定地址
> whochat serve-message-ws 102852
注册SIGINT信号处理程序: WechatWebsocketServer.shutdown
开始运行微信消息接收服务
开始向客户端广播接收到的微信消息
开始运行微信Websocket服务,地址为:<localhost:9001>
{'wxId': 'wxid_hjkafa123a', 'wxNumber': 'wxid_hjkafa123a', 'wxNickName': 'Cider', 'Sex': '男', 'wxSignature': 'null', 'wxBigAvatar': 'http://wx.qlogo.cn/mmhead/ver_1/R50J6cxxTRzE28sY32DVJibeRUZPiaPotzPVjuReXZsONBdNZXQChSfrK0rDWh8RKS5ibt7VJdK0p22YJrOGjRA051lY9mwkt6ONruLmYTyBAA/0', 'wxSmallAvatar': 'http://wx.qlogo.cn/mmhead/ver_1/R50J6cxxTRzE28sY32DVJibeRUZPiaPotzPVjuReXZsONBdNZXQChSfrK0rDWh8RKS5ibt7VJdK0p22YJrOGjRA051lY9mwkt6ONruLmYTyBAA/132', 'wxNation': 'CN', 'wxProvince': 'Anhui', 'wxCity': 'Hefei', 'PhoneNumber': 'null'}
开启Robot消息推送
默认地址为localhost:9001
,连接测试:
- 开启WebSocket RPC服务进行方法调用:
> whochat serve-rpc-ws
PID: 28824
注册SIGINT信号处理程序: run.<locals>.shutdown
运行微信机器人RPC websocket服务, 地址为<localhost:9002>
默认地址为localhost:9002
,测试发送消息给文件传输助手,记得先调用start_robot_service
注入dll
RPC所有方法和参数可通过whochat show-rpc-docs
命令查看或者whochat show-rpc-docs --json > docs.json
生成JSON文档:
> whochat show-rpc-docs --help
Usage: whochat show-rpc-docs [OPTIONS]列出RPC接口whochat show-rpc-docsorwhochat show-rpc-docs --json > docs.jsonOptions:--json JSON文档--help Show this message and exit.
- 定时任务:
在每天上午6点整喊基友起床,同样使用RPC调用schedule_a_job
(获取接口文档见4),
{"jsonrpc": "2.0","method": "schedule_a_job","params": {"name": "GETUP","unit": "days","every": 1,"at": "08:00:00","do": {"func": "send_text","args": [102852,"jiyou","GET UP!"]},"description": "","tags": ["jiyou"]},"id": 4}