LIDs (Linked Identity JIDs)
O WhatsApp finalizou o rollout de LID em 2024. Um LIDJID (Linked Identity Jabber Identifier) é um identificador por usuário no servidor@lid que anonimiza números em grupos grandes, em contraste ao PNJID legado (Phone Number Jabber Identifier) em @s.whatsapp.net. Por padrão, todas as novas sessões Signal no Baileys 7.x são criadas em LID. Veja JIDs do WhatsApp explicados.
Pontos-chave:
- Um LID é um JID. Único por usuário, não por grupo.
- A resolução pela rede é unidirecional: PN → LID. Use
onWhatsApp()ou o USyncProtocol para descobrir o LID a partir de um número; o caminho inverso não é exposto pelo WhatsApp. O Baileys mantém um mapeamento local emsock.signalRepository.lidMappingcomstoreLIDPNMapping,getLIDForPN,getLIDsForPNsegetPNForLID. OgetPNForLIDsó retorna pares que o Baileys já tenha visto em tráfego anterior — ele não consulta um PN para um LID desconhecido. onWhatsAppnão retorna mais LIDs. UsegetLIDForPN/getLIDsForPNs.isJidUserfoi removido em favor deisPnUser.
Mudanças em MessageKey
remoteJidAlt— JID alternativo para mensagens diretasparticipantAlt— JID alternativo para grupos, transmissões e canais
Mudanças em GroupMetadata
Todo campo de ID tem um par PN:owner é LID; ownerPn tem o PN. descOwner / descOwnerPn, etc.
Mudanças em Contact
Contact não tem mais jid e lid separados:
idé o identificador preferido.phoneNumberpopulado quandoidé LID.lidpopulado quandoidé PN.
Compartilhamento de número
- Empresas:
{ requestPhoneNumber: true } - Usuários:
{ sharePhoneNumber: true }
Novo evento
lid-mapping.update dispara quando um par PN ↔ LID novo é descoberto.
Novo enum
WAMessageAddressingMode.
Não tente “restaurar” PN JIDs. Migre para LIDs.
ACKs não são mais enviados
O WhatsApp tem banido contas que enviam ACKs em entregas com sucesso — desligar é o padrão seguro agora.Meta Coexistence
O Baileys 7.x consegue enviar, receber e parear com contas com Coexistence. Suporte experimental — reporte issues.Apenas ESM
Baileys 7.x é só ESM.Opção 1 — Converter para ESM (recomendado)
Defina"type": "module" no package.json e troque require() por import.
Opção 2 — Importar dinamicamente do CommonJS
corepack.
Protobufs mais enxutos
Restantes:.create()— em vez de.fromObject()..encode()e.decode().
BufferJSON ao (de)serializar protos. Use decodeAndHydrate() em vez de decode() puro.