消息监听

listen 在前台持续接收一个或多个聊天的新消息,并自动确保所选账号的 Worker 已启动。监听结束后 Worker 会继续运行。

基本监听

# 普通文本输出
wxautox4 listen "文件传输助手" "测试群"

# 每行输出一个 JSON 对象
wxautox4 listen "项目群" --jsonl

一次可以监听 1 至 32 个聊天。按 Ctrl+C 会停止当前监听,但不会停止 Worker。

JSONL 事件示例:

{"chat":{"chat_name":"项目群"},"message":{"content":"hello"}}

机器消费时应逐行解析 stdout,同时检查进程退出码。最后一行可能是监听停止摘要:

{"status":"stopped","chats":["项目群"]}

使用回调文件

回调文件使用 UTF-8 编码,并在顶层定义 on_message(message, chat)

on_message.py
def on_message(message, chat):
    print(f"{chat.chat_name}: {message.content}")
wxautox4 listen "项目群" --callback-file ".\on_message.py" --jsonl

CLI 启动时读取并检查回调源码。监听开始后再修改文件,不会自动重载正在运行的回调。

使用内联回调

--callback-code 接收函数体,而不是完整的 Python 模块:

$code = @'
if "紧急" in message.content:
    print("matched")
'@

wxautox4 listen "项目群" --callback-code $code --jsonl

--callback-file--callback-code 不能同时使用。

WARNING

回调代码会在 Worker 进程内执行,可以访问文件、网络和环境。只使用完全可信的代码,并避免耗时操作;慢回调会阻塞其他微信 UI 操作。

错误与断线

回调异常写入 stderr,监听会继续运行:

callback error: ValueError: ...

如果出现以下错误,表示 Worker 在监听完成前断开,本次结果可能不完整,也不会自动重放:

error: listener disconnected before completion

检查 Worker 是否被停止或崩溃,处理问题后重新启动监听。