关于 whatsapp
whatsapp(pywhats)是通过异步 Python 和命令行操作 WhatsApp 关联设备的非官方客户端,适合自动发送消息及监听事件。它支持文本、图片和多账户会话。
主要功能
- 01二维码配对与会话恢复
- 02发送单聊文本和图片
- 03发送群组文本并查看群信息
- 04监听 JSON 事件流
- 05管理在线状态、已读和输入状态
适用场景
- 01脚本向个人聊天发送文本或图片
- 02向群组发送消息并读取群组信息
- 03监听指定聊天或事件并处理消息
- 04在多个 WhatsApp 账户间切换会话
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ sanjay3290/ ai-skills --skill whatsapp安装后在 Claude Code 中输入/whatsapp确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdreferences/api.mdscripts/_bootstrap.shwa.py详细介绍
WhatsApp(pywhats)
通过异步 Python 和 pywhats 将 WhatsApp 账号作为已关联的伴侣设备(类似 WhatsApp Web)使用(预 Alpha 阶段,仅支持文本和图片)。这是一个非官方的多设备客户端,不是官方 WhatsApp Business / Cloud API。
CLI 入口:scripts/wa.py(首次运行时会自动初始化托管的虚拟环境)。
基本概念
- 配对 = 一次性扫描二维码。
wa.py pair会显示 ASCII 二维码;在 WhatsApp → 已关联的设备中扫描。 凭据会保存到$PYWHATS_HOME/<session>.session(以及.signal.db)。 - 恢复会话 = 静默进行。 后续命令会使用同一会话重新连接,无需扫描二维码。
- JID 用于指定聊天。 纯电话号码
15550001234→[email protected]; 群组使用[email protected]。 - 通过事件接收消息。
wa.py listen会为每个事件打印一个 JSON 对象。
⚠️ 绝不要在处理程序中直接等待 Client 调用
事件处理程序会直接在接收循环中运行。在处理程序中等待 send_*、
mark_read、get_group_info、download_media 等调用会导致连接死锁。始终使用 asyncio.create_task(...)。listen
子命令已为 --read 执行此操作。
命令
scripts/wa.py pair # one-time QR pair
scripts/wa.py send-text 15550001234 "hello" # 1:1 text
scripts/wa.py send-image 15550001234 photo.jpg --caption hi # 1:1 image
scripts/wa.py group-info [email protected] # group metadata JSON
scripts/wa.py group-send [email protected] "hi all" # group text
scripts/wa.py mark-read 15550001234 MSGID [--sender JID] # blue ticks
scripts/wa.py presence available # global presence
scripts/wa.py typing 15550001234 composing [--media audio] # typing indicator
scripts/wa.py listen --read --events message,receipt # JSONL event stream
scripts/wa.py --session work send-text 15550001234 "hi" # named session
| 命令 | 行为 |
|---|---|
pair | 使用 ASCII 二维码建立新关联;若已配对则不会重复操作 |
send-text <to> <text> | 发送一对一文本;打印消息 ID |
send-image <to> <path> [--caption C] | 发送图片(jpg/png/webp,≤16MB);打印 ID |
group-info <gid> | 打印群组 JSON(主题、所有者、参与者等) |
group-send <gid> <text> | 解析成员后发送群组文本;打印 ID |
mark-read <chat> <ids...> | 标记为已读;群组使用 --sender |
presence <available|unavailable> | 全局在线状态 |
typing <to> <composing|paused> | 聊天在线状态;可选 --media audio |
listen | 长时间运行并输出 JSON 行;--read、--events、--subscribe JID(接收在线状态事件时必需) |
全局选项:--session NAME(默认为 default,或使用环境变量 PYWHATS_SESSION)——
必须放在子命令之前:wa.py --session work pair。
会话 / 多账号
$PYWHATS_HOME/ # default: ~/.pywhats
venv/ # managed Python + pywhats
default.session # --session default
default.session.signal.db
work.session # --session work
使用 PYWHATS_HOME 覆盖默认目录。未配对 / 已登出的会话会显示明确提示,要求重新运行 wa.py --session <name> pair。
如果 pair 在扫描后立即提示设备已登出,这是 WhatsApp 清理设备变更造成的,并非此技能故障——失效的会话会自动删除;请按照打印的恢复步骤操作(移除已关联的设备,等待 15–20 分钟,然后重新配对一次)。
完整参考
references/api.md — 所有 Client 方法、所有事件负载、JID 构造方式,以及 download_media 说明。