steipete/wacli

GitHub: steipete/wacli

一个功能完善的 WhatsApp 命令行客户端,支持消息同步、离线搜索、发送消息和群组管理。

Stars: 584 | Forks: 99

# 🗃️ wacli — WhatsApp CLI:同步、搜索、发送。 基于 `whatsmeow` 构建的 WhatsApp CLI,专注于: - 消息历史的尽力而为本地同步 + 持续捕获 - 快速离线搜索 - 发送消息 - 联系人 + 群组管理 这是一个第三方工具,通过 `whatsmeow` 使用 WhatsApp Web 协议,与 WhatsApp 没有关联。 ## 状态 核心实现已完成。完整的设计说明请参阅 `docs/spec.md`。 ## 近期更新 (0.2.0) - 消息:搜索/列表包含表情回复、回复和媒体类型的显示文本。 - 发送:`wacli send file --filename` 用于覆盖显示名称。 - 认证:可选的 `WACLI_DEVICE_LABEL` / `WACLI_DEVICE_PLATFORM` 环境变量覆盖。 ## 安装 / 构建 选择以下选项中的**一项**。 如果你通过 Homebrew 安装,则可以跳过本地构建步骤。 ### 选项 A:通过 Homebrew 安装 (tap) - `brew install steipete/tap/wacli` ### 选项 B:本地构建 - `go build -tags sqlite_fts5 -o ./dist/wacli ./cmd/wacli` 运行(仅限本地构建): - `./dist/wacli --help` ## 快速开始 默认存储目录是 `~/.wacli`(使用 `--store DIR` 覆盖)。 ``` # 1) 认证 (显示 QR),然后 bootstrap sync pnpm wacli auth # 或者:./dist/wacli auth (在 pnpm build 之后) # 2) 保持同步 (从不显示 QR;需要先前的认证) pnpm wacli sync --follow # 诊断 pnpm wacli doctor # 搜索消息 pnpm wacli messages search "meeting" # 为聊天回填旧消息 (尽力而为;需要您的主设备在线) pnpm wacli history backfill --chat 1234567890@s.whatsapp.net --requests 10 --count 50 # 为消息下载媒体 (同步后) ./wacli media download --chat 1234567890@s.whatsapp.net --id # 发送消息 pnpm wacli send text --to 1234567890 --message "hello" # 发送文件 ./wacli send file --to 1234567890 --file ./pic.jpg --caption "hi" # 或者覆盖显示名称 ./wacli send file --to 1234567890 --file /tmp/abc123 --filename report.pdf # 列出群组并管理参与者 pnpm wacli groups list pnpm wacli groups rename --jid 123456789@g.us --name "New name" ``` ## 前作 / 致谢 本项目深受 Vicente Reig 出色的 `whatsapp-cli` 启发(并向其学习): - [`whatsapp-cli`](https://github.com/vicentereig/whatsapp-cli) ## 高层用户体验 (UX) - `wacli auth`:交互式登录(显示二维码),随后立即执行初始数据同步。 - `wacli sync`:非交互式同步循环(从不显示二维码;如果未认证则报错)。 - 输出默认为人类可读格式;传递 `--json` 以获取机器可读输出。 ## 存储 默认为 `~/.wacli`(使用 `--store DIR` 覆盖)。 ## 环境变量覆盖 - `WACLI_DEVICE_LABEL`:设置已链接设备的标签(显示在 WhatsApp 中)。 - `WACLI_DEVICE_PLATFORM`:覆盖已链接设备的平台(如果未设置或无效,则默认为 `CHROME`)。 ## 回填旧历史记录 `wacli sync` 存储 WhatsApp Web 顺势发送的任何内容。要尝试获取*更旧*的消息,请向你的**主设备**(你的手机)发送按需历史记录同步请求。 重要说明: - 这是**尽力而为**的:WhatsApp 可能不会返回完整的历史记录。 - 你的**主设备必须在线**。 - 请求是**按聊天进行的**(私信或群组)。`wacli` 使用该聊天中*本地存储的最旧消息*作为锚点。 - 建议每个请求的 `--count` 为 `50`。 ### 回填单个聊天 ``` pnpm wacli history backfill --chat 1234567890@s.whatsapp.net --requests 10 --count 50 ``` ### 回填所有聊天(脚本) 这将遍历本地数据库中已知的聊天: ``` pnpm -s wacli -- --json chats list --limit 100000 \ | jq -r '.[].JID' \ | while read -r jid; do pnpm -s wacli -- history backfill --chat "$jid" --requests 3 --count 50 done ``` ## 许可证 参见 `LICENSE`。
标签:CLI, EVTX分析, EVTX分析, EVTX分析, Go, Homebrew, IP 地址批量处理, Ruby工具, sqlite, URL抓取, WhatsApp, whatsmeow, WiFi技术, 即时通讯, 威胁情报, 开发者工具, 开源, 数据抓取, 文件传输, 日志审计, 消息历史, 消息同步, 离线搜索, 第三方客户端, 网络信息收集, 网络调试, 群组管理, 自动化