> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Como Hospedar Bots do WhatsApp

> Aprenda a criar e hospedar bots do WhatsApp na Square Cloud. Tutorial completo com configuração, deploy e exemplo prático em Node.js.

export const RecommendedPlan = ({lang, plan, tier, cpu, appType}) => {
  const url = `https://squarecloud.app/${lang}/pay?plan=${plan.toLowerCase()}&tier=${tier}`;
  if (lang == 'en') {
    return <Note>
        <b>Wondering how much RAM and CPU your plan needs to host {appType}?</b><br />
        Don't worry, we're here to help.
        Our <a href={url}>{plan}</a> plan offers <b>{tier}GB</b> of RAM and <b>{cpu}vCPU</b>, which should be sufficient for most {appType}. 
        However, if you are working on a larger project and seeking extra stability, we recommend considering our <b>Pro</b> plan. With additional resources, you can maintain stability even during demand spikes. 
        To purchase, simply click <a href="https://squarecloud.app/en/pay?plan=pro">here</a>.
      </Note>;
  } else {
    return <Note>
          <b>Está se perguntando quanta RAM e CPU seu plano precisa para hospedar {appType}?</b><br />
          Não se preocupe, estamos aqui para ajudar.
          Nosso plano <a href={url}>{plan}</a> oferece <b>{tier}GB</b> de RAM e <b>{cpu}vCPU</b>, o que deve ser suficiente para a maioria dos {appType}.
          No entanto, se você estiver trabalhando em um projeto maior e precisar de mais estabilidade, recomendamos considerar nosso plano <b>Pro</b>.
          Com recursos adicionais, você pode manter a estabilidade mesmo durante picos de demanda.
          Para comprar, basta clicar <a href={`https://squarecloud.app/${lang}/pay?plan=pro`}>aqui</a>.
        </Note>;
  }
};

export const appType_0 = "um bot do WhatsApp"

## Introdução

Para desenvolver e hospedar um aplicativo {appType_0} no Square Cloud, é essencial seguir uma sequência estruturada de configurações e pré-requisitos.
Este guia técnico abordará todo o processo, desde a configuração inicial até a implantação em produção.

### Pré-requisitos

* **Conta Square Cloud**: Cadastre-se através da [página de cadastro](https://squarecloud.app/pt-br/signup) usando seu e-mail.
* **Plano Pago Ativo**: Garante recursos dedicados e desempenho otimizado para seu aplicativo. Confira nossos [planos disponíveis](https://squarecloud.app/pt-br/pricing) e escolha o mais adequado às suas necessidades.

<RecommendedPlan appType="Bots do WhatsApp" plan="Standard" tier="4" cpu="4" lang="pt-br" />

## Criando o projeto

Ter o WhatsApp instalado e configurado é um requisito para a autenticação e vinculação do bot. Se você não tem o aplicativo, visite o [site oficial do WhatsApp](https://www.whatsapp.com/coronavirus/get-started?lang=pt_br) para download e configuração.

<AccordionGroup>
  <Accordion title="Configuração de Caminho Remoto para WhatsApp Web" icon="file" iconType="solid">
    Se sua implementação precisar acessar o caminho remoto para a versão do WhatsApp Web, siga este procedimento técnico:

    1. Acesse o repositório [wa-version](https://github.com/wppconnect-team/wa-version/tree/main/html)
    2. Selecione a versão desejada (sempre é recomendado usar a mais recente)
    3. Clique em "Raw" para visualizar o arquivo
    4. Copie a URL gerada para uso posterior

    **Exemplo de URL configurada:**

    ```
    [https://raw.githubusercontent.com/wppconnect-team/wa-version/main/html/2.2412.54.html](https://raw.githubusercontent.com/wppconnect-team/wa-version/main/html/2.2412.54.html)
    ```
  </Accordion>
</AccordionGroup>

### Desenvolvendo o projeto

1. **Verificação do Node.js**: Confirme se o Node.js está instalado em seu sistema. Caso contrário, baixe-o no [site oficial do Node.js](https://nodejs.org/).

2. **Inicialização do projeto**: Configure um novo projeto Node.js executando o comando de inicialização:

```bash Terminal theme={null}
npm init -y
```

3. **Instalação de dependências**: Instale as bibliotecas essenciais para a funcionalidade do bot:

```bash Terminal theme={null}
npm install whatsapp-web.js qrcode
```

4. **Criação do arquivo principal**: Desenvolva o arquivo `index.js` com a estrutura base do bot:

```javascript index.js theme={null}
// Importa os módulos necessários
const { Client } = require("whatsapp-web.js");
const qrcode = require("qrcode");

// Cria uma nova instância do cliente WhatsApp
const client = new Client({
  puppeteer: {
    // Roda o Chrome em modo headless (sem interface gráfica)
    headless: true,
    args: [
      // Desabilita recursos de sandboxing do Chrome
      // Necessário para execução em ambientes conteinerizados
      "--no-sandbox",
      // Flag adicional de sandboxing para desabilitar setuid sandbox
      "--disable-setuid-sandbox",
    ],
  },
  // Configuração de cache da versão Web
  webVersionCache: {
    // O tipo "remote" indica que a versão do WhatsApp Web será buscada de uma URL remota
    type: "remote",
    // Caminho remoto para a versão do WhatsApp Web
    remotePath: "INSIRA_SUA_URL_AQUI",
  },
});

// Listener de evento para geração do QR Code
client.on("qr", async (qr) => {
  // Usa a biblioteca qrcode para gerar e salvar o QR Code
  try {
    await qrcode.toFile("./qrcode.png", qr);
    console.log("QR Code gerado e salvo como qrcode.png");
  } catch (err) {
    console.error("Erro ao gerar o QR Code:", err);
  }
});

// Listener de evento para cliente pronto
client.on("ready", () => {
  // Log de confirmação quando a sessão do WhatsApp Web é estabelecida
  console.log("Cliente WhatsApp inicializado com sucesso!");
});

// Listener de evento para mensagens criadas
client.on("message_create", (msg) => {
  // Log do conteúdo da mensagem no console
  console.log("Mensagem recebida:", msg.body);

  // Implementação de comando de teste
  if (msg.body === "!ping") {
    // Resposta automática para o comando ping
    msg.reply("pong - Bot funcionando corretamente!");
  }
});

// Inicializa o cliente WhatsApp
client.initialize();
```

## Realizando o Deploy

Após preparar os arquivos do seu projeto, você pode enviá-los para a Square Cloud e hospedar seu projeto.
Para fazer isso, crie um arquivo ZIP contendo todos os arquivos do seu projeto.

### Via dashboard

<Steps>
  <Step title="Acesse a página de upload">
    Acesse a [página de upload](https://squarecloud.app/pt-br/dashboard/new) e envie seu arquivo zip.
  </Step>

  <Step title="Configure seu ambiente">
    Após fazer o upload do seu arquivo zip, você precisará configurar o nome, o arquivo principal ou o ambiente de execução e outras configurações do seu projeto.\
    Se você estiver enviando um projeto web, certifique-se de selecionar "Publicação na Web" e definir um subdomínio para o seu projeto.
  </Step>

  <Step title="Faça o deploy do projeto">
    Por fim, clique no botão "Deploy" para hospedar seu projeto no Square Cloud.
    Após o deploy, você poderá monitorar o status e os registros do seu projeto no painel.

    <Frame>
      <img src="https://cdn.squarecloud.app/docs/articles/dashboard/uploading-pt-br.gif" alt="Enviando aplicação para a Square Cloud" style={{ borderRadius: "0.2rem" }} />
    </Frame>
  </Step>
</Steps>

### Via CLI

Para usar esse método, você precisa criar um arquivo de configuração chamado `squarecloud.app` no diretório raiz do seu projeto. Esse arquivo conterá a configuração necessária para o seu projeto.

<Card title="Saiba mais sobre: Como criar arquivo de configuração da Square Cloud." icon="link" href="/pt-br/getting-started/config-file">
  O arquivo squarecloud.app é um arquivo de configuração que será usado para configurar seu aplicativo; ele será usado para definir seu ambiente.
</Card>

<Steps>
  <Step title="Primeiro Passo">
    Primeiro, você precisa ter a CLI instalada em seu ambiente. Se você ainda não a possui, execute o seguinte comando em seu terminal:

    ```
    npm install -g @squarecloud/cli
    ```

    Se você já a possui, recomendamos atualizá-la. Para fazer isso, execute o seguinte comando em seu terminal:

    <Tabs>
      <Tab title="Windows">
        ```bash theme={null}
        squarecloud update
        ```
      </Tab>

      <Tab title="Linux, macOS, e WSL">
        ```bash theme={null}
        curl -fsSL https://cli.squarecloud.app/install | bash
        ```
      </Tab>
    </Tabs>
  </Step>

  <Step title="Segundo Passo">
    Agora, para autenticar e usar outros comandos da CLI, você encontrará sua chave de autorização [aqui](https://squarecloud.app/pt-br/account/security) clicando em "Solicitar Chave da API". Após obter sua chave de autorização, execute o seguinte comando:

    ```bash theme={null}
    squarecloud auth login
    ```
  </Step>

  <Step title="Terceiro Passo">
    Finalmente, para fazer o deploy da sua aplicação para a Square Cloud usando a CLI, você precisa executar o seguinte comando:

    ```bash theme={null}
    squarecloud upload
    ```

    Ou se já possui o zip criado:

    ```bash theme={null}
    squarecloud upload --file <caminho/para/zip>
    ```
  </Step>
</Steps>

## Recursos Adicionais

Para aprofundar seus conhecimentos sobre o desenvolvimento de bots do WhatsApp usando o whatsapp-web.js, consulte a [documentação oficial da biblioteca whatsapp-web.js](https://wwebjs.dev/). A documentação oferece guias técnicos detalhados, tutoriais avançados e referência completa da API para maximizar o potencial de implementação.

## Contate-nos

Se você continuar enfrentando **dificuldades técnicas**, nossa **equipe de suporte especializada** está disponível para auxiliá-lo. [**Entre em contato conosco**](https://squarecloud.app/pt-br/support) e teremos prazer em ajudá-lo a resolver qualquer questão.
