案例

下面用一个完整案例演示如何组合 Worker、消息监听和 PowerShell,自动发现项目群中的紧急消息并写入本地归档。

案例:归档群内紧急消息

目标流程:

  1. 启动指定微信账号的 Worker。
  2. 监听“项目群”和“运维群”。
  3. 当消息包含“紧急”或“故障”时,将时间、群名和内容写入日志。
  4. 使用 Ctrl+C 停止监听,Worker 保持运行供后续命令复用。

1. 创建回调文件

新建 archive_urgent.py

archive_urgent.py
from datetime import datetime
from pathlib import Path


KEYWORDS = ("紧急", "故障")
LOG_FILE = Path.home() / "wxautox-urgent.log"


def on_message(message, chat):
    content = str(message.content)
    if not any(keyword in content for keyword in KEYWORDS):
        return

    timestamp = datetime.now().isoformat(timespec="seconds")
    line = f"{timestamp}\t{chat.chat_name}\t{content}\n"
    with LOG_FILE.open("a", encoding="utf-8") as file:
        file.write(line)

回调只进行关键词判断和本地追加写入,能够快速返回,不会长时间占用微信 UI 事务。

2. 检查环境和授权

wxautox4 --version
wxautox4 auth check --json
wxautox4 --nickname "工作微信" status --json

确认命令退出码为 0,且桌面微信已经登录到“工作微信”。

3. 启动 Worker

wxautox4 --nickname "工作微信" worker start
wxautox4 --nickname "工作微信" worker status --json

4. 开始监听

wxautox4 --nickname "工作微信" listen `
    "项目群" "运维群" `
    --callback-file ".\archive_urgent.py" `
    --jsonl `
    2> ".\listener-errors.log"

监听事件继续以 JSONL 输出到终端,回调命中的消息同时追加到 %USERPROFILE%\wxautox-urgent.log。错误和回调异常单独写入 listener-errors.log

5. 停止

在监听终端按 Ctrl+C。需要彻底结束后台进程时再执行:

wxautox4 --nickname "工作微信" worker stop

扩展方向

  • KEYWORDS 改为项目名称、客户名称或告警级别。
  • 把日志文件改为 SQLite 或内部工单系统。
  • 在回调中只做快速入队,把耗时网络请求交给独立进程处理。
  • 用 Windows 任务计划程序在用户登录后启动监听。
WARNING

回调拥有当前 Windows 用户权限。不要执行来源不明的回调代码,也不要在回调中直接运行耗时或不可靠的网络请求。