Pular para o conteúdo principal

Eventos

WhatsmeowClient estende EventEmitter e emite eventos tipados. Os eventos do whatsmeow listados abaixo sao encaminhados.

observação

Muitos eventos upstream do whatsmeow ainda nao sao encaminhados — por exemplo, eventos de sincronizacao de app state (silenciar, fixar, arquivar), atualizacoes em tempo real de newsletters, mudancas de lista de bloqueio/privacidade, PairSuccess e UndecryptableMessage.

Uso​

client.on("message", ({ info, message }) => { /* ... */ });
client.on("connected", ({ jid }) => { /* ... */ });

Eventos de Conexao​

EventoPayloadDescricao
connected{ jid: string }Conexao com o WhatsApp estabelecida. Seguro para enviar mensagens.
disconnected{}Conexao perdida. A reconexao automatica e feita internamente.
logged_out{ reason: string }Sessao revogada. E necessario parear novamente.
stream_error{ code: string }Erro de protocolo. Geralmente seguido por reconexao automatica.
temporary_ban{ code: string, expire: string }Banimento temporario do WhatsApp.
stream_replaced{}Outro cliente conectou com a mesma sessao. O whatsmeow para e nao reconecta; rode um processo por store.
client_outdated{}O WhatsApp rejeitou a versao do cliente (405). O whatsmeow nao reconecta; atualize o whatsmeow-node.
connect_failure{ code: number, reason: string, message: string }Conexao recusada por um motivo que o whatsmeow nao trata. Nao reconecta.
keep_alive_timeout{ errorCount: number }Pings de keep-alive falhando. A conexao pode estar degradada.
keep_alive_restored{}Keep-alive recuperado. A conexao esta saudavel.

Eventos de Mensagem​

EventoPayloadDescricao
message{ info: MessageInfo, message: Record<string, unknown> }Nova mensagem recebida.
message:receipt{ type: string, chat: string, sender: string, isGroup: boolean, ids: string[], timestamp: number }Confirmacao de leitura/entrega.

MessageInfo​

interface MessageInfo {
id: string;
chat: string; // JID do chat
sender: string; // JID do remetente
isFromMe: boolean;
isGroup: boolean;
timestamp: number; // Timestamp Unix
pushName: string; // Nome de exibicao do remetente
}

Eventos de Presenca​

EventoPayloadDescricao
presence{ jid: string, presence: "available" | "unavailable", lastSeen?: number }Status online/offline do contato.
chat_presence{ chat: string, sender: string, state: "composing" | "paused", media: "audio" | "" }Indicador de digitacao/gravacao.

Eventos de Grupo​

EventoPayloadDescricao
group:infoGroupInfoEventMetadados do grupo alterados.
group:joined{ jid: string, name: string }Voce entrou em um grupo.

GroupInfoEvent​

interface GroupInfoEvent {
jid: string;
name?: string; // Novo nome do grupo
description?: string; // Nova descricao
announce?: boolean; // Modo de anuncio alterado
locked?: boolean; // Status de bloqueio alterado
ephemeral?: boolean; // Mensagens temporarias alteradas
join?: string[]; // JIDs que entraram
leave?: string[]; // JIDs que sairam
promote?: string[]; // JIDs promovidos a admin
demote?: string[]; // JIDs rebaixados de admin
}

Eventos de Midia​

EventoPayloadDescricao
picture{ jid: string, remove: boolean, pictureId?: string }Foto de perfil/grupo alterada.

Eventos de Chamada​

EventoPayloadDescricao
call:offer{ from: string, callId: string }Chamada recebida.
call:accept{ from: string, callId: string }Chamada aceita.
call:terminate{ from: string, callId: string, reason: string }Chamada encerrada.

Outros Eventos​

EventoPayloadDescricao
identity_change{ jid: string, timestamp: number }Chave de identidade do contato alterada (recadastro).
history_sync{ type, chunkOrder, progress, conversations: { id, name, unreadCount, messages }[] }Fragmento de sincronizacao de historico. conversations[].messages usam o mesmo formato { info, message } dos eventos message. Sincronizacoes iniciais podem ser grandes.
qr{ code: string }QR code para pareamento.
qr:timeoutnullTempo de pareamento por QR expirou.
qr:error{ event: string }Erro no canal QR.
log{ level: string, msg: string, [key: string]: unknown }Saida de log do binario Go. Util para depuracao.
errorErrorErro interno.
exit{ code: number | null }O binario Go encerrou.