Por padrão, o Baileys mantém suas credenciais de autenticação apenas em memória. Quando o processo reinicia, a sessão se perde e você precisa escanear o QR de novo. Persistir o estado de autenticação resolve isso.
useMultiFileAuthState
useMultiFileAuthState é o utilitário interno para persistir sessão em arquivos. Ele guarda credenciais e chaves de sessão Signal como arquivos JSON dentro de uma pasta.
Como o estado de autenticação é estruturado
O objeto state está em conformidade com o tipo AuthenticationState:
Ambas devem ser salvas e restauradas juntas. Perder uma quebra a sessão.
Salvando chaves do Signal
Toda vez que uma mensagem é enviada ou recebida, o Baileys pode atualizar as chaves de sessão Signal armazenadas em authState.keys. Se você não salvar essas atualizações, mensagens vão falhar para destinatários cujas sessões foram rotacionadas. Sempre escute creds.update e chame sua função de salvar prontamente.
Em produção, toda mensagem dispara consultas a chaves Signal que tocam o disco. Envolver seu key store com makeCacheableSignalKeyStore adiciona uma camada de cache em memória.
Exemplo completo de reconexão
A implementação de useMultiFileAuthState serializa credenciais usando BufferJSON, um utilitário que lida com Buffer e Uint8Array durante JSON.stringify / JSON.parse.
Construindo um auth store em banco de dados
Para produção, implemente um AuthenticationState respaldado por banco. Sua implementação deve satisfazer:
Estude como useMultiFileAuthState funciona — a implementação em arquivos espelha a interface que seu store de banco precisa satisfazer.
Nunca commite sua pasta de auth ou credenciais de banco. Os arquivos em auth_info_baileys/ contêm chaves Signal de longa duração equivalentes a uma chave SSH privada.