Skip to main content
Este guia mostra como criar uma aplicação Baileys mínima que conecta ao WhatsApp, persiste sua sessão, escuta mensagens recebidas e responde a elas. Ao final, você terá um bot funcional que pode estender com sua própria lógica.
O Baileys é uma biblioteca não oficial e não é afiliada ao WhatsApp. Use-o com responsabilidade e em conformidade com os Termos de Serviço do WhatsApp. Os mantenedores não compactuam com mensagens em massa, spam ou stalkerware.

Exemplo completo

Os passos abaixo levam a este script funcional completo. Use-o como ponto de partida para o seu projeto.

Passo a passo

1

Instale o Baileys

Adicione o Baileys e seu peer @hapi/boom ao projeto. @hapi/boom é uma dependência direta do Baileys, usada para inspecionar códigos de erro de desconexão.
Garanta que você está rodando Node.js 20.0.0 ou superior. Caso contrário, a instalação falhará.
2

Configure o estado de autenticação

O Baileys precisa de um objeto de estado de autenticação para gerenciar credenciais de sessão e chaves do Signal Protocol. O utilitário interno useMultiFileAuthState salva tudo em uma pasta local.
state contém as credenciais e chaves atuais. saveCreds é um callback que você passa ao evento creds.update, para que a sessão seja gravada em disco sempre que mudar.
O nome da pasta (auth_info_baileys neste exemplo) pode ser qualquer caminho que você quiser. Guarde-o fora do código-fonte e adicione ao .gitignore — ele contém chaves criptográficas de longa duração da sua conta do WhatsApp.
3

Crie o socket

Crie um socket chamando makeWASocket com seu estado de autenticação. Escute o campo qr em connection.update e renderize você mesmo — printQRInTerminal está obsoleto.
Quando você executar pela primeira vez, um QR code aparece no terminal. Abra o WhatsApp no celular, vá em Configurações → Aparelhos conectados → Conectar um aparelho e escaneie o código. Em execuções subsequentes, as credenciais salvas são reutilizadas e nenhum QR code é mostrado.
4

Trate atualizações de conexão

Escute connection.update para reagir quando a conexão abrir, fechar ou encontrar erros. A lógica de reconexão abaixo reinicia o socket automaticamente — exceto quando você foi explicitamente deslogado.
DisconnectReason.loggedOut significa que sua sessão foi revogada. Nesse caso, apague a pasta de autenticação e escaneie um novo QR code.
5

Escute mensagens recebidas

O evento messages.upsert dispara sempre que novas mensagens chegam. Itere sobre event.messages para tratar cada uma.
Filtrar por event.type === 'notify' e !m.key.fromMe evita responder ao próprio bot e processar backfills de histórico como se fossem novas mensagens.m.key.remoteJid é o ID do WhatsApp (JID) da conversa de origem da mensagem. Passe-o como primeiro argumento de sock.sendMessage para responder.
6

Salve as credenciais quando atualizadas

Registre o callback saveCreds no evento creds.update. O Baileys o chama sempre que suas credenciais de sessão mudam.
Se pular este passo, sua sessão não será salva e você precisará escanear o QR novamente a cada reinicialização.

E agora?

Autenticação

Use código de pareamento em vez de QR code, ou aprenda a gerenciar sessões em banco de dados.

Envio de mensagens

Envie texto, imagens, vídeo, áudio, enquetes, reações e mais.

Eventos

Veja a lista completa de eventos que o Baileys emite.

Grupos

Crie e gerencie grupos, processe pedidos de entrada e configure mensagens efêmeras.