# Hospedar um bot do WhatsApp

URL: https://0.0.0.0:3002/docs/guias/bot-whatsapp

Rode um bot com Baileys 24/7 no Hydro sem perder a sessão a cada deploy.

O ponto delicado de um bot do WhatsApp fora do computador é a **sessão**: se ela se perde, o bot pede o QR code de novo. No Hydro, grave a sessão na **pasta do projeto**, que continua entre deploys e reinícios e entra no backup diário.

## 1. Grave a sessão numa pasta do projeto [#1-grave-a-sessão-numa-pasta-do-projeto]

Com o Baileys, use um caminho relativo, dentro do projeto:

```js title="index.js"
import makeWASocket, { useMultiFileAuthState } from '@whiskeysockets/baileys';

const { state, saveCreds } = await useMultiFileAuthState('./auth');
const sock = makeWASocket({ auth: state, printQRInTerminal: true });
sock.ev.on('creds.update', saveCreds);
```

Não versione a pasta `auth` no Git: ela é criada no servidor no primeiro acesso.

## 2. Crie o worker [#2-crie-o-worker]

Em **Aplicações → Criar aplicação**, escolha a origem, o tipo **Worker** e a memória. O comando de início é o script `start` do `package.json`.

## 3. Faça o deploy e escaneie o QR code [#3-faça-o-deploy-e-escaneie-o-qr-code]

Faça o deploy e abra os **Logs**: o QR code impresso pela biblioteca aparece ali. No celular do número do bot, abra **Aparelhos conectados → Conectar um aparelho** e escaneie.

Nos próximos deploys e reinícios, o bot reaproveita a sessão da pasta `auth`.

## whatsapp-web.js [#whatsapp-webjs]

O whatsapp-web.js controla um Chromium. Publique uma **imagem Docker** com o navegador e as bibliotecas dele (origem *Imagem Docker*) e reserve mais memória. Guarde a pasta `.wwebjs_auth` dentro do projeto do mesmo jeito.

## Boas práticas [#boas-práticas]

* Bibliotecas não oficiais podem levar a bloqueios do número se o uso violar os termos do WhatsApp. Para uso comercial em escala, prefira a API oficial (Cloud API), que recebe webhooks: rode como aplicação **Web**, com HTTPS automático.
* O celular principal precisa entrar na conta de tempos em tempos para manter os aparelhos conectados.
* Chaves de outros serviços (OpenAI, banco) vão como [variáveis secretas](/docs/guias/variaveis-e-tokens).
