Saltar al contenido principal

Eventos

WhatsmeowClient extiende EventEmitter y emite eventos tipados. Los eventos de whatsmeow listados abajo son reenviados.

nota

Muchos eventos upstream de whatsmeow aún no se reenvían — por ejemplo, eventos de sincronización de app state (silenciar, fijar, archivar), actualizaciones en vivo de newsletters, cambios de lista de bloqueo/privacidad, PairSuccess y UndecryptableMessage.

Uso​

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

Eventos de Conexión​

EventoPayloadDescripción
connected{ jid: string }Conexión con WhatsApp establecida. Es seguro enviar mensajes.
disconnected{}Conexión perdida. La reconexión automática es automática.
logged_out{ reason: string }Sesión revocada. Debes volver a emparejar.
stream_error{ code: string }Error de protocolo. Generalmente seguido por reconexión automática.
temporary_ban{ code: string, expire: string }Suspensión temporal de WhatsApp.
stream_replaced{}Otro cliente se conectó con la misma sesión. whatsmeow se detiene y no se reconecta; ejecuta un proceso por store.
client_outdated{}WhatsApp rechazó la versión del cliente (405). whatsmeow no se reconecta; actualiza whatsmeow-node.
connect_failure{ code: number, reason: string, message: string }Conexión rechazada por un motivo que whatsmeow no maneja. No se reconecta.
keep_alive_timeout{ errorCount: number }Los pings de keep-alive están fallando. La conexión puede estar degradada.
keep_alive_restored{}Keep-alive recuperado. La conexión está saludable.

Eventos de Mensajes​

EventoPayloadDescripción
message{ info: MessageInfo, message: Record<string, unknown> }Nuevo mensaje recibido.
message:receipt{ type: string, chat: string, sender: string, isGroup: boolean, ids: string[], timestamp: number }Confirmación de lectura/entrega.

MessageInfo​

interface MessageInfo {
id: string;
chat: string; // JID of the chat
sender: string; // JID of the sender
isFromMe: boolean;
isGroup: boolean;
timestamp: number; // Unix timestamp
pushName: string; // Sender's display name
}

Eventos de Presencia​

EventoPayloadDescripción
presence{ jid: string, presence: "available" | "unavailable", lastSeen?: number }Estado en línea/fuera de línea del contacto.
chat_presence{ chat: string, sender: string, state: "composing" | "paused", media: "audio" | "" }Indicador de escritura/grabación.

Eventos de Grupos​

EventoPayloadDescripción
group:infoGroupInfoEventMetadatos del grupo cambiaron.
group:joined{ jid: string, name: string }Te uniste a un grupo.

GroupInfoEvent​

interface GroupInfoEvent {
jid: string;
name?: string; // New group name
description?: string; // New description
announce?: boolean; // Announcement mode changed
locked?: boolean; // Lock status changed
ephemeral?: boolean; // Disappearing messages changed
join?: string[]; // JIDs that joined
leave?: string[]; // JIDs that left
promote?: string[]; // JIDs promoted to admin
demote?: string[]; // JIDs demoted from admin
}

Eventos de Medios​

EventoPayloadDescripción
picture{ jid: string, remove: boolean, pictureId?: string }Foto de perfil/grupo cambió.

Eventos de Llamadas​

EventoPayloadDescripción
call:offer{ from: string, callId: string }Llamada entrante.
call:accept{ from: string, callId: string }Llamada aceptada.
call:terminate{ from: string, callId: string, reason: string }Llamada finalizada.

Otros Eventos​

EventoPayloadDescripción
identity_change{ jid: string, timestamp: number }La clave de identidad del contacto cambió (se registró nuevamente).
history_sync{ type, chunkOrder, progress, conversations: { id, name, unreadCount, messages }[] }Fragmento de sincronización de historial. conversations[].messages usan la misma forma { info, message } que los eventos message. Las sincronizaciones iniciales pueden ser grandes.
qr{ code: string }Código QR para emparejar.
qr:timeoutnullEl emparejamiento por QR expiró.
qr:error{ event: string }Error en el canal QR.
log{ level: string, msg: string, [key: string]: unknown }Salida de log del binario de Go. Útil para depuración.
errorErrorError interno.
exit{ code: number | null }El binario de Go terminó.