WhatsApp

Личный аккаунт

WhatsApp: Читайте переписку, находите договорённости, собирайте документы и готовьте ответы с подключённым мессенджером.

Соберите контекст для конкретного решения: что изменилось, какие материалы нужны и кому ответить. Выберите задачу, подставьте свои чаты и отправьте запрос агенту. Для первого короткого запроса откройте «Первые задачи»; здесь — задачи, в которых нужно сопоставить несколько сообщений.

Что изменилось, пока меня не было

Запрос
Используй wa CLI. Я не читал рабочую группу три дня. Сравни последние договорённости с теми, что были до моего отсутствия: сроки, объём работы и ответственные. Покажи только изменения, спорные места и сообщения-источники. Ничего не отправляй.

Вы получите список «было → стало», а не пересказ всех сообщений. Например: срок перенесли с пятницы на понедельник; новый срок подтвердили, а нового ответственного пока только предложили.

Найти и проверить договорённости →

Собрать пакет материалов для встречи

Запрос
Используй wa CLI. Найди в рабочей группе и переписке с Анной материалы для завтрашней встречи: актуальную презентацию, расчёт стоимости и список открытых вопросов. Для каждого файла покажи сообщение с последним согласованием. Сначала покажи список, не скачивай и ничего не отправляй.

Вы получите список нужных файлов с объяснением, какая версия согласована, и вопросы для повестки. Потом попросите сохранить выбранные файлы в указанную папку.

Работа с файлами →

Разобраться в долгом обсуждении

Запрос
Используй wa CLI. В группе родителей найди обсуждение поездки за последний месяц. Собери в одном ответе дату, место встречи, стоимость и что нужно взять. Отдели подтверждённые решения от предложений, приложи исходные сообщения. Ничего не отправляй.

Вместо десятков сообщений получите памятку. Если место встречи обсуждали, но не выбрали, агент оставит этот вопрос открытым.

Поиск по теме →

Проверить обещания перед ответом

Запрос
Используй wa CLI. Перед ответом подрядчику проверь нашу личную переписку и группу ремонта за две недели. Что мы обещали друг другу, что уже выполнено и что ещё нужно уточнить? Подготовь ответ со ссылками на договорённости. Покажи черновик без отправки.

Вы получите проверяемый список обязательств и черновик, который учитывает обе переписки. Даты и обещания без подтверждения должны остаться вопросами.

Как уточнить запрос →

Команды и инструкции

Здесь вы узнаете, как устроена команда wa и откуда берутся её ответы.

wa <profile> <resource> <verb> [arguments] [options]
wa personal chats list
wa personal messages list "Book club" --limit 20
wa personal search messages "dinner"
  • Первым словом укажите профиль. Подойдёт любое имя; wa никогда не выбирает профиль за вас.
  • Чтение использует локальное хранилище, которое wa <profile> serve наполняет данными с телефона. Команда чтения не подключается к WhatsApp.
  • --json выводит одно значение JSON в stdout для скриптов и агентов; диагностика идёт в stderr.

Настроить профиль

wa personal setup                  # link, check five chats, offer the agent skill; about 5 minutes
wa personal setup --agent codex    # the same, and install the skill for Codex
wa personal setup --method phone   # a pairing code instead of the QR code

setup выполняет пять шагов: проверяет папки на компьютере, привязку устройства (существующая используется без вопросов), аккаунт, пять чатов из локального хранилища и навык агента. Уже привязанное устройство проверяется без повторной привязки. Без терминала QR-код выводится обычным текстом; агент может вставить его в чат для сканирования.

Привязать профиль

setup использует ту же привязку, что и session start, которая выполняет только подключение:

wa personal session start          # a QR code to scan in WhatsApp > Settings > Linked devices
wa personal session start phone    # type your number, then a pairing code on the phone

Сразу после привязки телефон один раз передаёт историю. session start сохраняет её в локальное хранилище и завершается, когда телефон перестаёт присылать данные. Затем wa personal server install поддерживает получение сообщений в фоне. wa personal session end отвязывает устройство и удаляет его ключи с компьютера.

К одному профилю одновременно может подключаться только одна команда wa: иначе WhatsApp разорвёт первое соединение. Пока работает serve, отправка от того же профиля проходит через него, используя его соединение. Там нельзя задать вопрос, поэтому при уровне разрешений ask нужен --yes (одно соединение на устройство).

Изменить сообщение

Идентификатор сообщения 3EB0A1B2C3D4E5F6A7B8 здесь вымышленный; возьмите настоящий из messages list -v.

wa personal messages edit "Book club" 3EB0A1B2C3D4E5F6A7B8 "the new text"
wa personal messages delete "Book club" 3EB0A1B2C3D4E5F6A7B8                 # for you only
wa personal messages delete "Book club" 3EB0A1B2C3D4E5F6A7B8 --for-everyone
wa personal reactions add "Book club" 3EB0A1B2C3D4E5F6A7B8 👍
wa personal messages pin "Book club" 3EB0A1B2C3D4E5F6A7B8 --expire-time 24h
wa personal messages unpin "Book club" 3EB0A1B2C3D4E5F6A7B8
wa personal chats mark-read "Book club"

WhatsApp определяет сообщение по отправителю и идентификатору, поэтому эти команды работают с сообщениями из локального хранилища; оставьте serve работающим. Своё текстовое сообщение можно исправить в течение 15 минут после отправки; см. справку WhatsApp. По умолчанию удаление затрагивает только вас: wa просит WhatsApp убрать сообщение с вашего телефона и других устройств, оставить его у собеседников и сохранить фотографии и файлы, уже сохранённые телефоном. --for-everyone удаляет сообщение у всех. О каждом закреплении узнают участники чата: тихого закрепления в WhatsApp нет, поэтому отдельный флаг не нужен. Срок закрепления — 24 часа, 7 или 30 дней (--expire-time 24h, 7d, 30d); без --expire-time команда wa закрепляет на 7 дней. Чтение не помечает сообщения прочитанными. Чтобы явно отправить уведомление о прочтении, используйте chats mark-read.

Отметить сообщение звёздочкой

wa personal messages star "Book club" 3EB0A1B2C3D4E5F6A7B8
wa personal messages unstar "Book club" 3EB0A1B2C3D4E5F6A7B8

Звёздочка — ваша личная отметка, которую WhatsApp синхронизирует с другими вашими устройствами; участники чата не получают уведомлений. Как и для редактирования, сообщение должно быть в локальном хранилище. Хранилище сохраняет отметку, поставленную через wa: такие сообщения находят wa personal messages list "Book club" starred:true и wa personal search messages is:starred. Пока работает serve или watch, поставленная или снятая на телефоне отметка тоже попадает в хранилище, а watch --events выводит событие. Сохраняются и отметки сообщений из истории, которую телефон передаёт сразу после привязки. Публикацию канала отмечайте на телефоне.

Отключить звук чата

wa personal chats mute "Book club"              # for good
wa personal chats mute "Book club" --until 8h   # or until a time: --until 2026-10-09T09:00
wa personal chats unmute "Book club"

Отключение звука — ваша настройка, синхронизируемая между устройствами; участники чата не получают уведомлений. У недавно привязанного устройства может пока не быть ключей настроек WhatsApp: оставьте serve работающим и повторите попытку позже. Звук канала отключайте на телефоне.

Пока работает serve или watch, отключение звука с телефона сохраняется вместе со сроком, поэтому inbox и review исключают чат до окончания этого срока. chats show --offline показывает muted и muted_until (без срока — навсегда).

Архивировать, закрепить или пометить чат непрочитанным

wa personal chats archive "Book club"       # wa personal chats unarchive "Book club" brings it back
wa personal chats pin "Book club"           # at the top of the chat list; wa personal chats unpin "Book club"
wa personal chats mark-unread "Book club"

Это тоже ваши настройки, синхронизируемые между устройствами; участники чата не получают уведомлений. chats pin закрепляет чат, а не сообщение. Архивирование также открепляет чат: операция архивирования whatsmeow делает и то и другое. Приложения WhatsApp поддерживают три закреплённых чата; wa их не считает. Архивирование, возврат из архива и отметка непрочитанного используют последнее сообщение чата в локальном хранилище, как и chats delete; пустой для хранилища чат отклоняется. Каналы не поддерживаются. Отметка непрочитанного не отправляет уведомления о прочтении.

chats mark-read сначала отправляет изменение настройки «прочитано» до последнего сохранённого сообщения (либо --until-id), затем уведомление о прочтении: одно уведомление не снимает отметку непрочитанного на телефоне. Пока WhatsApp не прислал ключи настроек, команда отклоняется и не отправляет ни того, ни другого. Для канала отправляется только уведомление.

Пока работает serve или watch, чтение чата на телефоне обнуляет число непрочитанных и снимает отметку в локальном хранилище; inbox перестаёт показывать чат. Каждое новое входящее сообщение, сохранённое через serve или watch, увеличивает счётчик на единицу. Архивирование и отметка непрочитанного с телефона также сохраняются (archived, marked_unread): inbox исключает архивный чат и показывает помеченный непрочитанным. Закрепление, удаление или очистка чата с телефона пока не сохраняются. watch --events не выводит эти изменения.

Ответ (messages send --reply-to 3EB0A1B2C3D4E5F6A7B8) на сообщение из локального хранилища показывает на телефоне цитату и отправителя. Если сообщения в хранилище нет, ответ всё равно отправляется, но только с идентификатором исходного сообщения; приложения WhatsApp могут показать недоступную цитату.

Удалить или очистить чат

wa personal chats clear "Book club" --allow-dangerous    # every message, starred ones too; the chat stays
wa personal chats delete "Book club" --allow-dangerous   # the chat itself

Обе команды действуют только на ваших устройствах: у собеседников чат и сообщения остаются. Без --allow-dangerous в терминале запрашивается подтверждение, а в скрипте команда отклоняется. WhatsApp удаляет сообщения до указанного wa сообщения — последнего в локальном хранилище. Для актуальности оставьте serve работающим; чат без сохранённых сообщений отклоняется. wa просит WhatsApp оставить сохранённые телефоном фотографии и файлы. Локальное хранилище wa по-прежнему содержит сообщения.

Форматировать сообщение

wa personal messages send "Book club" "**Friday** at _8_, see [the notes](https://example.com/n)" --md
printf '**Agenda**\n- the _new_ book\n> a quote\n' | wa personal messages send "Book club" --md
wa personal messages edit "Book club" 3EB0A1B2C3D4E5F6A7B8 "**moved** to Friday" --md

--md читает Markdown и преобразует его в разметку WhatsApp: **bold** или *bold* становятся *bold*, _italic_ остаётся _italic_, ~~strike~~ становится ~strike~, `code` и блоки ``` сохраняются. Цитаты (>) и списки (-, 1.) остаются как есть, а заголовок # становится жирным. Ссылка превращается в подпись и адрес, который WhatsApp делает кликабельным. Подчёркивание, спойлеры и выделение не имеют аналогов и остаются обычным текстом. WhatsApp не умеет сохранять символ * буквально, поэтому \*word\* всё равно отображается жирным. Без --md текст отправляется как введён, и собственная разметка WhatsApp работает напрямую.

Опросы

wa personal polls create "Book club" "Which day?" Monday Tuesday            # one answer each
wa personal polls create "Book club" "Which books?" Dune Emma Ulysses --multiple
wa personal polls show "Book club" 3EB0A1B2C3D4E5F6A7B8        # the question, its answer ids and the counts
wa personal polls vote "Book club" 3EB0A1B2C3D4E5F6A7B8 a1b2c3d4
wa personal polls vote "Book club" 3EB0A1B2C3D4E5F6A7B8 --retract
wa personal polls voters "Book club" 3EB0A1B2C3D4E5F6A7B8      # who voted for what, newest first

Все участники чата видят, кто за что проголосовал; голос всегда можно изменить, поэтому нет --anonymous и --revote. В опросе WhatsApp от 2 до 12 разных ответов. Он не бывает викториной и не закрывается, поэтому нет polls close. Голосуйте по идентификаторам из polls show; a1b2c3d4 в примере вымышленный. polls show, polls vote и polls voters работают с опросом из локального хранилища, в том числе созданным через wa polls create. WhatsApp передаёт ключ опроса устройству только при получении опроса, поэтому голосование в опросе, созданном до привязки, может быть отклонено.

В WhatsApp нет запроса на получение всех голосов: каждый приходит один раз отдельным сообщением. wa serve и wa watch сохраняют последний голос каждого участника в локальном хранилище (watch --events выводит новые голоса), а также голоса из истории сразу после привязки. Поэтому счётчики отражают только полученные данные. Голос, отправленный, когда ничего не слушало, будет пропущен до повторного голосования того же участника.

Конфиденциальность

wa personal account privacy show                         # who sees last seen, the photo, about; receipts, groups, calls
wa personal account privacy set --last-seen contacts     # only contacts see when you were last online; the rest stays
wa personal account privacy set --hide-online on         # last seen to nobody, online only to those who see it
wa personal account privacy set --read-receipts off      # no read receipts sent, and none shown to you

show каждый раз запрашивает WhatsApp, а не локальную копию. set меняет только названные настройки и возвращает все действующие значения. Изменения касаются аккаунта на каждом устройстве и проходят через разрешения профиля, как отправка (permissions.account.privacy.set). Каждая настройка отправляется отдельным запросом: при ошибке ранее отправленные значения остаются изменёнными, о чём сообщает ошибка. Выполните show, чтобы проверить результат.

  • --last-seen, --profile-photo и --about-text принимают everyone, contacts или nobody. Настройка телефона «мои контакты, кроме…» отображается как contacts_except; set не может выбрать её, поскольку список исключений остаётся на телефоне. Другое значение заменяет её.
  • --hide-online on скрывает время последнего посещения от всех, а присутствие в сети — от тех же людей. --hide-online off показывает последнее посещение контактам: wa не знает значение до скрытия. --last-seen everyone задаёт аудиторию явно. Выберите один из двух параметров.
  • --read-receipts off действует в обе стороны, как на телефоне: собеседники не видят, когда вы прочитали сообщение, и вы не видите их прочтения. Тогда chats mark-read помечает чат прочитанным только на ваших устройствах (при выключенных уведомлениях whatsmeow отправляет их только вашим устройствам).
  • --chat-invites принимает everyone или contacts. По имеющимся данным WhatsApp отклоняет nobody, поэтому wa тоже отклоняет его. Настройка с исключениями на телефоне не выводится в show.
  • --calls contacts соответствует настройке телефона «заглушать неизвестных абонентов»: звонки незнакомых людей приходят без звука. В WhatsApp нет --calls nobody, поэтому wa его отклоняет.

WhatsApp не позволяет настроить, кто найдёт вас по номеру или увидит его, поэтому в wa нет --find-by-phone и --phone-number.

Отправить, сохранить и переслать файлы

wa personal messages send "Book club" "the agenda" --file agenda.pdf
wa personal messages send "Book club" "us, last week" --photo photo.jpg
wa personal messages send "Book club" --voice note.ogg
wa personal messages send "Book club" --sticker-file thumbs-up.webp
wa personal messages download "Book club" 3EB0A1B2C3D4E5F6A7B8 --output-dir ~/Downloads
wa personal messages transcribe "Book club" 3EB0A1B2C3D4E5F6A7B8 --local
wa personal messages forward "Book club" 3EB0A1B2C3D4E5F6A7B8 --to "Ann Lee"

Сообщение содержит один файл, а текст становится подписью; голосовое отправляется отдельно без текста. .mp4, .m4v и .mov отправляются как видео, если не задан --as-file. Вместе --photo и видео через --file отправляются одним альбомом с текстом в подписи к фотографии. --sticker-file отправляет .webp не больше 500 KiB как отдельный стикер без текста. В WhatsApp нет наборов стикеров для выбора по идентификатору, поэтому нет --sticker. Полученные и сохранённые фотографии, видео, голосовые, файлы и стикеры можно позже скачать или переслать: хранилище держит данные для повторного запроса. WhatsApp хранит файл ограниченное время; попытка скачать исчезнувший файл просит телефон загрузить его снова, но это пока не работает (пока нет в wa). Геопозиция и карточка контакта тоже сохраняются и могут быть пересланы, но это не файлы для скачивания. В WhatsApp нет собственного распознавания речи: transcribe использует модель на этом компьютере (wa models list kind:audio). Хранение, повторная загрузка и поиск текста файлов описаны во вложениях.

Старые сообщения

WhatsApp не хранит историю чатов на серверах: старые сообщения приходят только с телефона, по 50 за раз, пока приложение WhatsApp на нём открыто. wa personal messages sync "Book club" запрашивает их по одному чату (как это работает).

Каналы

Канал WhatsApp — односторонняя переписка: администраторы публикуют, остальные подписываются и читают. Идентификатор канала заканчивается на @newsletter (120363000000000001@newsletter).

wa personal chats join https://whatsapp.com/channel/AAAAAAAAAAAAAAAAAAAAAA   # follow a channel by its link
wa personal chats list 'kind:channel' --offline                            # the channels you follow
wa personal messages sync 120363000000000001@newsletter --limit 100         # read its posts into the local store
wa personal messages list 120363000000000001@newsletter
wa personal messages send 120363000000000001@newsletter "Meeting moved to 8"   # in a channel you run
wa personal messages send 120363000000000001@newsletter "New menu" --photo ~/menu.jpg
wa personal chats leave 120363000000000001@newsletter                     # unfollow it
  • Каналы, на которые вы подписаны, попадают в список чатов, когда подключается wa serve или wa watch: wa запрашивает их один раз за соединение. При работающем serve команда chats join сразу добавляет новый канал.
  • Публикации канала хранятся на серверах WhatsApp, поэтому messages sync читает их оттуда, а не с телефона: от новых к старым, по 50 за раз. messages list показывает сохранённые публикации из локального хранилища.
  • Отправитель публикации — канал, даже если её опубликовали вы, в том числе через wa. Она считается сообщением канала, а не вашим (outgoing: false): WhatsApp не сообщает авторство ваших публикаций.
  • Публикуют только владелец и администраторы канала. messages send сначала запрашивает вашу роль в WhatsApp и отклоняет остальных (выход 5) до загрузки файлов. Публикация — текст или один файл (--photo, --file, --voice, текст как подпись), без ответа на другое сообщение. Подписчики видят её сразу. Как и в приложениях WhatsApp, файлы канала не зашифрованы. Альбом, стикер, опрос, голосование, пересылка, редактирование и удаление в канале отклоняются. Отклоняется и пересылка файла канала в чат (media.channel-file-forward): без ключа файла он не откроется.
  • chats join и chats leave подчиняются разрешениям, как вступление в группу: администраторы канала видят подписку. Вместо списка участников, который WhatsApp не раскрывает, показывается число подписчиков.

Просмотр приглашений, устройств и списков

Проверьте приглашение в группу или канал до вступления, посмотрите связанные устройства или прочитайте собственный список, созданный на телефоне:

wa personal chats inspect https://chat.whatsapp.com/INVITECODE
wa personal account sessions list
wa personal chats folders list
wa personal chats folders show "Work"

Проверка ссылки никуда не вступает. Сеансы показывают числовые идентификаторы устройств: 0 — это телефон; текущее устройство отмечено. WhatsApp не передаёт привязанному устройству названия устройств и время последней активности. Отключайте другие устройства на телефоне в Настройки → Связанные устройства; wa personal session end отвязывает это устройство.

Папки — это собственные списки WhatsApp с названиями и явно добавленными чатами. Если у этого устройства ещё нет снимка, первое чтение загружает синхронизированные списки; последующие чтения используют последнее синхронизированное состояние. Встроенные фильтры и метки WhatsApp Business — отдельная вещь. Создавайте и меняйте списки на телефоне.

Чтение комментариев сообщества

messages comments читает ответы под публикацией в группе объявлений сообщества:

wa personal messages comments "Announcements" POST_ID --limit 20

В результате — комментарии, которые это привязанное устройство получило и расшифровало; они сохраняются под родительской публикацией. Чтобы пополнять эту историю, держите serve запущенным для приёма сообщений. Комментарии, для которых устройство не получило секрет родительской публикации, расшифровать нельзя. В каналах WhatsApp есть реакции, но нет комментариев. Отправка комментариев сообщества не поддерживается.

Чего пока нет в wa

Дерево команд wa общее с tg и max, поэтому некоторые команды присутствуют, хотя WhatsApp не может их выполнить. Они завершаются с кодом 2 и объясняют причину. До WhatsApp ничего не доходит.

Пока не реализованы:

  • больше файлов в сообщении, чем фотография и видео в одном альбоме;
  • список групп сообщества, добавление группы в сообщество и удаление из него (сообщества);
  • создание канала (chats create --channel);
  • скачивание файла, который WhatsApp больше не хранит: телефон загружает его с новым ключом, который не передаёт, поэтому загрузка завершается с media.retry-failed и ничего не сохраняет (вложения).

В WhatsApp отсутствуют или остаются на телефоне:

  • темы форумов и комментарии под публикациями каналов (в каналах есть только реакции);
  • несколько ссылок-приглашений для одной группы: chats links reset заменяет единственную;
  • администраторы с ограниченными правами: каждый администратор имеет все права;
  • закрываемые опросы, викторины и анонимное голосование;
  • тихие, отложенные сообщения и отправка от другого имени;
  • изменение и импорт адресной книги: управляйте контактами на телефоне; wa читает синхронизированную адресную книгу;
  • возраст аккаунта: правило newAccount в chats rules set отклоняется.

wa не отвечает сам: автоматических ответов нет, поскольку WhatsApp блокирует аккаунты с поведением бота. Планы — в дорожной карте.

Обновлять wa

wa upgrade устанавливает новую версию и перезапускает каждый работающий сервер (обновление).

Куда дальше

Все команды и параметры — в справочнике команд.