Skip to main content
O Baileys comunica tudo que acontece na sua conexão WhatsApp por um event emitter tipado disponível em sock.ev. Cada nome de evento mapeia para um payload específico definido em BaileysEventMap.

Escutando eventos

Use sock.ev.on para se inscrever e sock.ev.off para sair.
A interface BaileysEventEmitter:

O padrão ev.process()

Para a maioria das aplicações, use sock.ev.process em vez de chamadas individuais a sock.ev.on. O callback recebe um mapa de todos os eventos que dispararam num único tick.
ev.process agrupa eventos disparados no mesmo tick. Se uma sincronização entrega 500 mensagens e 200 atualizações juntas, seu handler recebe tudo numa chamada só.

Referência de eventos

connection.update

Dispara sempre que o estado do WebSocket muda. Payload é Partial<ConnectionState>:

creds.update

Dispara sempre que suas credenciais mudam. Você deve persistir imediatamente.

messages.upsert

Evento principal para mensagens recebidas e enviadas.
  • type: 'notify' — mensagens em tempo real. Devem disparar notificações.
  • type: 'append' — mensagens de histórico/backfill. Não notifique.
Sempre itere com for...of. O array pode conter mais de uma mensagem por evento.

messages.update

Status de mensagens — recibos, reações, votos de enquete.

messaging-history.set

Lote de sincronização de histórico do celular.
O histórico é entregue em pedaços em ordem cronológica reversa. isLatest no último pedaço indica que terminou.

chats.upsert / chats.update / chats.delete

contacts.upsert / contacts.update

groups.upsert / groups.update / group-participants.update

presence.update

call

Sequência de eventos na primeira conexão

1

connection.update — connecting

O socket inicia o handshake. connection é 'connecting'.
2

connection.update — QR ou open

Se faltam credenciais, qr é populado. Após confirmação, connection vira 'open'.
3

messaging-history.set (lotes)

Se syncFullHistory for true, o celular envia mensagens passadas em pedaços.
4

connection.update — receivedPendingNotifications

Após o histórico, receivedPendingNotifications vira true.
5

Eventos em tempo real

Daqui pra frente, eventos disparam em tempo real.

Exemplo completo com ev.process