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

# Como deixar seu bot de Discord online 24 horas

> Como deixar seu bot de Discord online 24 horas sem o PC ligado. Passo a passo com discord.js e discord.py, token em variável de ambiente e logs.

Seu bot funciona no PC, mas cai quando você fecha o terminal ou desliga o computador. Este guia coloca o bot na Hyze Cloud, onde ele roda sem depender da sua máquina. Vale para bots em discord.js (Node.js) e discord.py (Python).

> [!NOTE]
>
> Bot de Discord não precisa de porta nem de site. A Hyze reconhece discord.js e discord.py pelas dependências e considera o bot no ar quando o processo fica de pé.

## Antes de começar

* O bot já liga no seu computador com um comando só, como `node index.js` ou `python bot.py`.
* Você tem o token do bot. Ele fica no [Discord Developer Portal](https://discord.com/developers/applications), em **Bot → Reset Token**.
* Você tem uma conta na Hyze Cloud. Todo cadastro ganha 7 dias de teste.

## 1. Prepare o código

A Hyze lê o manifesto de dependências para descobrir o runtime e o comando que liga o bot. Deixe os arquivos assim:

**discord.js (Node.js)**

```text theme={"system"}
meu-bot/
├── index.js
├── package.json
└── package-lock.json
```

```json package.json theme={"system"}
{
  "name": "meu-bot",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "discord.js": "^14.16.0"
  }
}
```

```js index.js theme={"system"}
const { Client, Events, GatewayIntentBits } = require("discord.js");

const client = new Client({ intents: [GatewayIntentBits.Guilds] });

client.once(Events.ClientReady, (c) => {
  console.log(`Online como ${c.user.tag}`);
});

client.login(process.env.DISCORD_TOKEN);
```

* Com o script `start`, a Hyze liga o bot com `npm run start`.
* Sem o script, ela procura um arquivo de entrada como `index.js`, `main.js` ou `bot.js`.
* Toda biblioteca que o bot importa precisa estar em `dependencies` (ou `devDependencies`).
* Envie o `package-lock.json`. Com ele, as versões instaladas são as mesmas do seu PC.

> [!TIP]
>
> Usa Bun? Envie o `bun.lock`. A Hyze escolhe o runtime Bun e roda arquivos `.ts` direto. O runtime Node.js não executa TypeScript: compile antes ou use Bun.

**discord.py (Python)**

```text theme={"system"}
meu-bot/
├── bot.py
└── requirements.txt
```

```text requirements.txt theme={"system"}
discord.py>=2.4
```

```python bot.py theme={"system"}
import os

import discord

intents = discord.Intents.default()
client = discord.Client(intents=intents)


@client.event
async def on_ready():
    print(f"Online como {client.user}")


client.run(os.environ["DISCORD_TOKEN"])
```

* A Hyze instala o que está no `requirements.txt` e liga o bot com `python bot.py`.
* Sem comando definido, ela procura `main.py`, `app.py`, `index.py` ou `bot.py` na raiz, nessa ordem.
* Forks como `py-cord`, `nextcord` e `disnake` também são reconhecidos como bot de Discord.
* O `print` aparece nos logs na hora: a Hyze já define `PYTHONUNBUFFERED=1`.

## 2. Tire o token do código

O token é a senha do bot. Quem tem o token controla o bot. Por isso ele nunca vai no código nem no repositório: o bot lê o valor da variável de ambiente `DISCORD_TOKEN`.

Para testar no seu PC, crie um arquivo `.env` e coloque ele no `.gitignore`:

```bash .env theme={"system"}
DISCORD_TOKEN=cole-o-token-aqui
```

```bash Node.js 20.6+ theme={"system"}
node --env-file=.env index.js
```

```python Python (python-dotenv) theme={"system"}
# pip install python-dotenv
# No topo do bot.py. Sem arquivo .env (como na Hyze), não faz nada.
from dotenv import load_dotenv

load_dotenv()
```

Na Hyze, você cadastra `DISCORD_TOKEN` nas **Variáveis de ambiente** do app (passo 3). O `.env` não precisa subir.

> [!WARNING]
>
> Se o token já foi para o GitHub ou para algum chat, gere outro em **Bot → Reset Token**. O token antigo para de funcionar na hora.

## 3. Suba o bot pelo GitHub ou por ZIP

**1. Crie o app**

No [dashboard](https://hyzecloud.com/pt-br/dashboard), clique em **Novo projeto** e escolha **Importar do GitHub** ou **Arquivo ZIP**.

* **GitHub**: conecte sua conta, escolha o repositório e a branch. Com **Deploy automático** ligado, cada push publica uma versão nova.
* **ZIP**: os arquivos ficam na raiz do ZIP, não dentro de uma pasta. Não inclua `node_modules`, `.venv` nem o `.env`.

**2. Confira a configuração**

* **Memória**: 256 MB é o mínimo por app e costuma bastar para um bot pequeno.
* **Acesso público**: deixe desligado. Bot não atende HTTP.
* **Comando de start**: deixe em **Automático**. Use **Personalizado** só se o bot liga com outro comando, como `node src/index.js`.
* **Reinício automático**: já vem ligado. Deixe assim.

**3. Cadastre o token**

Em **Variáveis de ambiente**, adicione a chave `DISCORD_TOKEN` com o token do bot. Se você já tem um `.env`, use **Importar .env**.

**4. Faça o deploy**

Clique em **Fazer deploy**. A Hyze instala as dependências, liga o bot e acompanha o processo.

> [!TIP]
>
> Prefere automatizar? O mesmo deploy funciona pela API. Veja [Fazer deploy de um app](https://docs.hyzecloud.app/pt/guides/deploy-an-app.md) e [Deploy pelo GitHub](https://docs.hyzecloud.app/pt/guides/deploy-from-github.md).

## 4. Veja os logs

Abra o app e vá em **Observabilidade → Console**. Os logs aparecem em tempo real, como no terminal do seu PC. Procure a linha `Online como ...`: se ela apareceu, o bot está conectado ao Discord.

Se o deploy falhou antes de o bot ligar, o motivo fica na aba **Deploys**, em **Logs** daquele deploy.

Desligue a cópia do bot no seu PC. Com o mesmo token rodando em dois lugares, o bot pode responder duas vezes a cada comando.

## 5. O que acontece quando o bot cai

Com **Reinício automático** ligado:

* **O processo morreu por um erro**: a Hyze reinicia o bot sozinha.
* **A máquina reiniciou**: o bot volta quando ela sobe de novo.
* **O bot morreu mais de 3 vezes em 10 minutos**: a Hyze desliga o app e te manda uma notificação. Reiniciar em loop não resolve: leia o erro no **Console**, corrija e faça um novo deploy.
* **O bot passou do limite de memória**: a Hyze para o app, sem reiniciar em loop, e te avisa. Aumente a **Memória** em **Configurações** e inicie o app de novo.

No discord.js, uma promise rejeitada sem `catch` derruba o processo inteiro. Registre um tratador para o erro ir para o log sem levar o bot junto:

```js index.js theme={"system"}
client.on(Events.Error, (error) => console.error(error));
process.on("unhandledRejection", (error) => console.error(error));
```

No discord.py, um erro dentro de um evento já vai para o log sem derrubar o bot.

Viu um erro com nome estranho no log? A página [Erros comuns ao hospedar um bot de Discord](https://docs.hyzecloud.app/pt/guides/discord-bot-erros-comuns.md) tem a causa e a correção dos mais frequentes.

## Quanto custa

Todo cadastro ganha 7 dias de teste. Para manter o bot no ar depois disso, o plano Starter custa R\$ 5,99 por mês, pago em reais via Pix. A memória do plano é dividida entre os seus apps, então vários bots pequenos cabem no mesmo plano.

## Coloque seu bot no ar

> **[Abrir o dashboard](https://hyzecloud.com/pt-br/dashboard)**
>
> Crie o app, cadastre o `DISCORD_TOKEN` e faça o primeiro deploy.

> **[Bot desliga quando fecho o terminal](https://docs.hyzecloud.app/pt/guides/discord-bot-desliga-terminal.md)**
>
> Entenda por que isso acontece e compare as opções.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.