# Faça deploy de um bot Discord.js

> Guia passo a passo para fazer deploy de um bot Discord.js (Node.js) na Daki Hosting.

Este guia mostra como fazer deploy de um bot Discord.js na Daki Hosting — desde a criação do seu servidor até o bot online, com o token lido de forma segura.

## O que você vai aprender

- Como criar um servidor Node.js para o seu bot
- Como enviar seu código
- Como configurar o comando de instalação, o comando de inicialização e a imagem Docker
- Como definir o token do bot com segurança usando um arquivo `.env`
- Como iniciar o bot e verificar se ele funciona

---

## Pré-requisitos

- Uma conta na Daki (Free Tier ou paga) — veja [Criar uma conta](https://daki.cc/pt/wiki/guides/account-create)
- Um bot do Discord com um **bot token**, criado no [Discord Developer Portal](https://discord.com/developers/applications)
- O código-fonte do seu bot, incluindo um `package.json` com `discord.js` e `dotenv` como dependências

> **Info:** Bots do Discord se conectam **de saída** aos servidores do Discord e não precisam de uma porta de entrada. Isso significa que bots do Discord funcionam tanto no Free Tier quanto nos planos pagos. Se o seu bot também atender requisições HTTP (por exemplo, para interações de slash commands ou webhooks), você vai precisar de um plano pago, já que portas acessíveis publicamente só existem nos planos pagos. Veja [Rede e alocações](https://daki.cc/pt/wiki/guides/network-allocations).

---

## Deploy

**Passo 1: Crie um servidor Node.js**

1. Entre no Free Tier Dashboard em [free.daki.cc](https://free.daki.cc) ou no Billing Panel em [billing.daki.cc](https://billing.daki.cc).
2. Crie um novo servidor e selecione o egg **Node.js**.
3. Dê um nome ao seu servidor (por exemplo, `MeuBotDiscord`).

Veja [Crie seu primeiro servidor gratuito](https://daki.cc/pt/wiki/guides/create-server) para o passo a passo completo.

**Passo 2: Acesse o Portal**

Entre no Portal via SSO (**Open Portal** na página Account do dashboard ou na página do seu serviço no Billing Panel), ou diretamente em [portal.daki.cc](https://portal.daki.cc). Veja [Visão geral do Portal](https://daki.cc/pt/wiki/guides/portal).

**Passo 3: Envie o código do seu bot**

**Opção A — enviar como ZIP (mais simples):**
1. Compacte a pasta do seu projeto em um arquivo `.zip` localmente.
2. No Portal, vá para a aba **Files** e clique em **Upload**.
3. Clique com o botão direito no `.zip` e clique em **Extract**.

**Opção B — usar SFTP (sem limite de tamanho):**
Conecte-se com suas credenciais do SFTP na aba **Settings** e envie sua pasta diretamente. Veja [Gerenciador de arquivos](https://daki.cc/pt/wiki/guides/file-manager).

> **Info:** **Não** inclua a pasta `node_modules` no envio — ela será instalada automaticamente pelo comando de instalação. Inclua o `package.json` e o `package-lock.json`.

**Passo 4: Configure a aba Startup**

Abra a aba **Startup** e configure os três campos:

**1. Docker Image** — Selecione a versão do Node.js que seu bot exige (por exemplo, **Node.js 22** ou **Node.js 24**). O Node.js 24 LTS é uma escolha segura se você não tiver certeza. Evite versões marcadas como **EOL**, pois elas não recebem mais atualizações de segurança.

**2. Install Command** — Defina como o comando que instala suas dependências automaticamente:
```
npm install
```
**3. Startup Command** — Defina como o comando que inicia seu bot:
- `node index.js` — se o seu arquivo de entrada é `index.js`
- `node bot.js` — se o seu arquivo de entrada é `bot.js`
- `npm start` — se você tem um script `start` no `package.json`

Você é livre para ajustar esses comandos para a estrutura do seu projeto.

Veja [Configurações de inicialização](https://daki.cc/pt/wiki/guides/startup-settings) para uma explicação completa.

**Passo 5: Adicione o token do bot por meio de um arquivo .env**

Seu bot precisa do token do Discord para se conectar. Guarde-o em um arquivo `.env` no servidor para que ele nunca acabe no seu código-fonte.

1. Na aba **Files**, clique em **New File** e dê o nome `.env`.
2. Adicione seu token:
   ```
   BOT_TOKEN=your_discord_bot_token_here
   ```
3. Clique em **Save**.

No código do seu bot, carregue-o com o `dotenv`:
```js
require('dotenv').config();

const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });

client.once('ready', () => {
    console.log(`Logged in as ${client.user.tag}`);
});

client.login(process.env.BOT_TOKEN);
```
Certifique-se de que o `dotenv` está listado nas dependências do seu `package.json`, para que ele seja instalado pelo comando de instalação.

Veja [Variáveis de ambiente](https://daki.cc/pt/wiki/guides/environment-variables) para mais detalhes sobre o uso de arquivos `.env`.

**Passo 6: Inicie seu bot**

Clique em **Start** na aba **Console**. Um lançamento bem-sucedido imprime a confirmação de login do seu bot:

```

Logged in as MyBot#1234!

```
Se aparecerem erros, consulte o guia de [Solução de problemas](https://daki.cc/pt/wiki/guides/troubleshooting).

---

## Problemas comuns

**Erro: Cannot find module 'discord.js'**

Suas dependências não foram instaladas. Verifique se o seu `package.json` lista o `discord.js` como dependência e se o comando de instalação está definido como `npm install` na aba Startup. Reinicie o servidor para disparar a instalação.

**Erro: Cannot find module 'dotenv'**

Adicione o `dotenv` às dependências do seu `package.json` e reinicie o servidor para reinstalar.

**Erro: An invalid token was provided**

O token do bot no arquivo `.env` está incorreto ou ausente. Vá para a aba Files, abra o `.env` e confira o valor. Certifique-se de que não há espaços extras, aspas ou quebras de linha.

**O bot inicia, mas desconecta logo em seguida**

Isso normalmente é causado por Gateway Intents ausentes. No Discord Developer Portal, ative os intents privilegiados necessários (por exemplo, Message Content Intent) para a aplicação do seu bot e garanta que o seu código os solicite.

**O servidor cai imediatamente ao iniciar**

Abra a aba Console e leia o erro. Causas comuns: comando de inicialização errado (erro de digitação no nome do arquivo), versão errada do Node.js ou `node_modules` ausente. Veja [Solução de problemas](https://daki.cc/pt/wiki/guides/troubleshooting).

---

## Próximos passos

- [Variáveis de ambiente](https://daki.cc/pt/wiki/guides/environment-variables) — Guia completo sobre arquivos `.env` e como ler variáveis no código.
- [Mantenha seu servidor gratuito ativo](https://daki.cc/pt/wiki/guides/save-free-server-from-purge) — Assista a anúncios para manter seu servidor do Free Tier no ar.
- [Gerenciador de arquivos](https://daki.cc/pt/wiki/guides/file-manager) — Atualize os arquivos do seu código depois de fazer mudanças.

---
Source: https://daki.cc/pt/wiki/guides/deploy-discordjs
