如何用wechat-cli打造微信新消息监控脚本:new-messages增量查询机制实战教程
如何用wechat-cli打造微信新消息监控脚本new-messages增量查询机制实战教程【免费下载链接】wechat-cliA CLI tool to query your local WeChat data — chat history, contacts, sessions, favorites, and more. Designed for LLM integration.项目地址: https://gitcode.com/gh_mirrors/wech/wechat-cliwechat-cli 是一款命令行查询本地微信数据的开源工具而它的new-messages 命令正是打造「微信新消息监控脚本」的关键——通过增量查询机制你无需编写任何数据库代码只需一行 shell 轮询命令就能实时捕获新消息配合定时任务轻松实现自动化提醒。new-messages 增量查询机制是如何工作的很多新手在写监控脚本时第一个难题是每次轮询如何判断哪些消息是新来的总不能每次都拉取全部聊天记录吧wechat-cli 的new-messages命令内置了解决方案核心逻辑见 wechat_cli/commands/new_messages.py首次调用命令会读取微信本地会话库中所有未读会话返回这批未读消息并把每个会话的最后消息时间戳记录到磁盘后续调用命令将当前会话时间戳与上次记录逐一比对只返回时间戳更新的会话即新增消息然后刷新记录。这个记录水位线 → 只吐增量的设计正是增量查询Incremental Query的典型思路——每次调用都是幂等的调用间隔越长返回的只是期间的差量天然适合轮询监控。增量状态保存在~/.wechat-cli/last_check.json相关状态目录定义在 wechat_cli/core/config.py。想从头重新监控删掉这个文件即可重置。快速上手三步装好并初始化 wechat-cli第一步npm 一键安装无需 Pythonnpm install -g canghe_ai/wechat-cli如果你习惯 Python 环境也可以用pip install wechat-cli需要 Python 3.10。如果你在用 AI 编程助手直接把帮我配置并安装npm install -g canghe_ai/wechat-cli这句话丢给它即可自动完成第二步运行 init 提取密钥微信本地数据库采用 SQLCipher 加密init会自动完成三件事检测数据目录、扫描微信进程内存提取密钥、生成配置到~/.wechat-cli/# macOS / Linux需要扫描进程内存可能要 sudo sudo wechat-cli init # Windows在权限足够的终端中直接运行 wechat-cli init如果你本机登录了多个微信账号init 会列出候选数据目录让你选择当前使用的那个默认第一个不确定哪个是当前登录账号进入数据文件夹按修改时间排序最新的那个就是第三步验证查询能力wechat-cli sessions --limit 10 # 最近 10 个会话 wechat-cli new-messages # 首次调用返回未读并记录状态⚠️ macOS 用户注意请先在系统设置 → 隐私与安全性 → 完全磁盘访问权限中授权终端否则 init 会因无法访问微信数据目录而失败。详见 README_CN.md 的快速开始章节。实战写出你的微信新消息监控脚本方案一常驻轮询脚本最简单所有命令默认输出结构化 JSON非常适合脚本解析。新建wechat_monitor.sh#!/bin/bash # 每 30 秒检查一次微信新消息纯文本输出 while true; do wechat-cli new-messages --format text sleep 30 done运行bash wechat_monitor.sh后终端会持续滚动输出类似这样的增量结果2 条新消息: [14:23:05] 团队群 [群]: 文本 (张三) - 下午三点开会 [14:25:18] Alice: 图片 - (压缩内容)如果某 30 秒内没有新消息只会输出无新消息绝不会重复推送旧消息——这就是增量机制的价值。方案二cron 定时轮询更适合长期运行不想挂常驻进程把检查动作注册到系统定时任务即可。在 crontab 中每 5 分钟执行一次并把输出追加写入日志*/5 * * * * /opt/homebrew/bin/wechat-cli new-messages --format text ~/wechat_monitor.log 21之后配合一个简单的 grep 就能做关键词告警比如只盯群里的告警二字grep -E 告警|error ~/wechat_monitor.log | tail -5方案三把 JSON 交给任意脚本做二次处理默认 JSON 输出包含chat会话名、is_group是否群聊、sender发送者、msg_type、timestamp等字段。想只监控特定群过滤messages数组里is_group且chat匹配的条目即可几行代码就够。进阶技巧new-messages 与 unread 的组合拳场景推荐命令增量捕获新来的消息监控脚本wechat-cli new-messages一次性查看全部未读会话unread 命令查看某个会话最近消息wechat-cli history 会话名 --limit 20重置增量水位线重新全量删除~/.wechat-cli/last_check.json注意两者的区别unread只看当前未读数大于 0的会话适合人工查看new-messages依赖时间戳水位线即使消息已被你读掉只要时间戳变了监控脚本依然能捕获到——所以做自动化监控请优先选 new-messages。常见问题 FAQQ1监控脚本会重复推送同一条消息吗不会。每次调用后水位线自动推进已报告过的会话时间戳不会再次触发。重复调用是安全的。Q2删除 last_check.json 后会发生什么等同于首次调用会重新返回全部未读会话并重建水位线适合换账号或重新部署监控时使用。Q3数据会被上传吗不会。wechat-cli 全程在本地解密查询数据不出本机。它只读取数据不发送、不修改任何消息。Q4Linux 上为什么必须 root因为 init 需要读取微信进程内存提取密钥/proc/pid/mem访问需要 root 权限监控命令本身则用普通用户运行即可。总结用 wechat-cli 打造微信新消息监控脚本的核心就三句话init一次性完成密钥提取后续所有查询免配置new-messages的增量查询机制替你解决了如何只取新消息的难题状态自动持久化无论常驻循环还是 cron 定时一条命令 几行 shell 即可上线一个轻量、无依赖的微信消息监控。更多命令用法可参考 README.md 的 Command Reference 章节。祝你的监控脚本跑得又快又稳 【免费下载链接】wechat-cliA CLI tool to query your local WeChat data — chat history, contacts, sessions, favorites, and more. Designed for LLM integration.项目地址: https://gitcode.com/gh_mirrors/wech/wechat-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考