ODocumentation Index
Fetch the complete documentation index at: https://zapo.to/llms.txt
Use this file to discover all available pages before exploring further.
WaClient recebe um objeto WaClientOptions e um logger opcional:
store e sessionId são obrigatórios; todo o resto tem um valor padrão sensato.
Opções obrigatórias
A instância da store construída por
createStore. Mantém cada domínio por sessão (auth, signal, app-state, …).Identificador lógico da sessão — ele indexa cada domínio dentro da
store. Use uma string estável por dispositivo/conta. Trocá-lo entre execuções deixa as credenciais anteriores órfãs e força um novo pareamento.Sessões e multi-tenancy
Como cada domínio da store é indexado porsessionId, uma única store pode conter muitas contas independentes. Para rodar várias contas em um processo, crie um WaClient por sessionId sobre a mesma store:
Fingerprint do dispositivo
Estes controlam como o dispositivo aparece em Dispositivos conectados no celular:Id do navegador anunciado durante o pareamento (
'chrome', 'firefox', 'safari', …; veja WA_BROWSERS). Define o rótulo em Dispositivos conectados.Sobrescrita do id numérico de plataforma companion (
WA_COMPANION_PLATFORM_IDS). Inferido de deviceBrowser quando omitido; defina explicitamente para plataformas não-navegador.Sincronização de histórico
Controla o download inicial do histórico de mensagens.
enabled?: boolean— baixa o histórico na primeira sincronização.requireFullSync?: boolean— solicita o arquivo completo em vez de apenas os chats recentes.
history_sync_chunk.
Timeouts
Todos em milissegundos; os padrões são ajustados para produção.| Opção | Propósito |
|---|---|
iqTimeoutMs | Timeout padrão para queries IQ (padrão 60s). |
nodeQueryTimeoutMs | Timeout padrão para chamadas brutas de query() de node. |
keepAliveIntervalMs | Intervalo entre os IQs de ping de keep-alive. |
deadSocketTimeoutMs | Quanto tempo sem resposta antes do socket ser considerado morto. |
mediaTimeoutMs | Timeout de upload/download de mídia. |
appStateSyncTimeoutMs | Timeout de uma rodada de sincronização de app-state. |
messageAckTimeoutMs | Quanto tempo message.send espera pelo <ack> do servidor por tentativa. |
messageMaxAttempts | Máximo de tentativas para um único message.send. |
messageRetryDelayMs | Atraso entre as retentativas de envio de mensagem. |
Presença ao conectar
true— anuncia o client como online (igual ao WhatsApp Web com a aba em foco).false— anuncia como indisponível. Útil para bots que não devem aparecer como online. Com isso desligado, você também continua recebendo notificações de mensagens enquanto está “offline”.
Addons (reações, votos em enquetes)
Defina
autoDecrypt: true para descriptografar automaticamente addons criptografados (votos em enquetes, reações, …) e emiti-los como eventos tipados message_addon. Caso contrário, chame client.message.tryDecryptAddon(event) você mesmo.Persistência write-behind
Agrupa as mensagens recebidas em lotes antes de descarregá-las nas stores
messages / threads / contacts.maxPendingKeys?: numbermaxWriteConcurrency?: numberflushTimeoutMs?: number
Proxy
Roteie cada perna através de um proxy de forma independente:
ws— a conexão WebSocket.mediaUpload/mediaDownload— transferências de mídia.linkPreview— o fetcher padrão de preview de link.
WaProxyTransport, que é:
- um dispatcher do undici (
WaProxyDispatcher, por exemplo umProxyAgentdo undici) — usado para as pernas baseadas emfetch(mídia, preview de link), ou - um
Agenthttp/httpsdo Node (WaProxyAgent) — usado para a perna WebSocket (ws).
A perna
ws requer o pacote ws, porque o WebSocket nativo do runtime não consegue aceitar um Agent HTTP. Sem um proxy, nenhum pacote extra é necessário.Proxy HTTP / HTTPS
Use umProxyAgent do undici (um dispatcher) para as pernas de mídia/preview de link, e um https-proxy-agent (um http.Agent) para a perna ws:
Proxy SOCKS
Usesocks-proxy-agent (funciona como um http.Agent para todas as pernas, incluindo ws):
Hosts IPv4 e IPv6
O host do proxy pode ser um domínio ou um literal de IP. Endereços IPv6 devem ser envolvidos em colchetes:Limpeza da store no logout
Controle por domínio do que o
logout() apaga. O padrão é limpar tudo; defina um domínio como false para preservá-lo.Logging
Passe um logger como o segundo argumento do construtor. Duas implementações vêm com o pacote:ConsoleLogger padrão é usado. Níveis de log: trace, debug, info, warn, error.
