# Faça deploy de um bot Python

> Guia passo a passo para fazer deploy de um bot Python do Discord (discord.py ou py-cord) na Daki Hosting.

Este guia mostra como fazer deploy de um bot Python do Discord na Daki Hosting — desde a criação do seu servidor até ler o token do bot com segurança e colocá-lo online.

## O que você vai aprender

- Como criar um servidor Python para o seu bot
- Como enviar seu código
- Como configurar o comando de instalação, o comando de inicialização e a versão do Python
- 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 `requirements.txt` com todas as dependências (por exemplo, `discord.py` ou `py-cord`, e `python-dotenv`)

> **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 rodar um servidor HTTP (por exemplo, para webhooks ou um dashboard web), 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 Python**

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 **Python**.
3. Dê um nome ao seu servidor (por exemplo, `MeuBotPython`).

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 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`.
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):**
Use suas credenciais do SFTP na aba **Settings** para enviar a pasta diretamente. Veja [Gerenciador de arquivos](https://daki.cc/pt/wiki/guides/file-manager).

> **Info:** Inclua um `requirements.txt` na raiz do seu projeto. Ele é usado pelo comando de instalação para instalar suas dependências.

**Passo 4: Configure a aba Startup**

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

**1. Docker Image** — Selecione a versão do Python que seu bot exige (por exemplo, **Python 3.13**). O Python 3.13 é uma escolha segura se você não tiver certeza; versões mais novas funcionam se todas as suas bibliotecas forem compatíveis. 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:
```
pip install -r requirements.txt
```
**3. Startup Command** — Defina como o comando que executa seu bot:
- `python main.py` — se o seu arquivo de entrada é `main.py`
- `python bot.py` — se o seu arquivo de entrada é `bot.py`
- `python -m mypackage` — se o seu projeto está estruturado como um pacote

Você é livre para ajustar esses comandos para a estrutura e as necessidades 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**

Guarde o token do seu bot do Discord em um arquivo `.env` no servidor para que ele nunca apareça 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**.

Certifique-se de que o `python-dotenv` está no seu `requirements.txt` e, depois, carregue o arquivo no seu código:

```python

from dotenv import load_dotenv

import os

import discord



load_dotenv()

TOKEN = os.environ.get("BOT_TOKEN")



intents = discord.Intents.default()

client = discord.Client(intents=intents)



@client.event

async def on_ready():

    print(f"Logged in as {client.user}")



client.run(TOKEN)

```
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:

```

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

**ModuleNotFoundError: No module named 'discord'**

Suas dependências não foram instaladas. Verifique se o `discord.py` ou o `py-cord` está listado no `requirements.txt` e se o comando de instalação está definido como `pip install -r requirements.txt` na aba Startup. Reinicie o servidor para disparar a instalação.

**ModuleNotFoundError: No module named 'dotenv'**

Adicione o `python-dotenv` ao seu `requirements.txt` e reinicie o servidor.

**discord.errors.LoginFailure: Improper token has been passed**

O token no arquivo `.env` está incorreto ou ausente. Abra o arquivo `.env` na aba Files e confira o valor com atenção. Remova espaços ou aspas extras.

**Erro PrivilegedIntentsRequired**

Seu bot está solicitando intents que não estão ativados no Discord Developer Portal. Ative os intents privilegiados necessários (por exemplo, Message Content Intent) nas configurações da aplicação do seu bot e certifique-se de que o seu código solicita os mesmos intents.

**O servidor cai imediatamente ao iniciar**

Leia a saída do Console para ver o erro. Causas comuns: comando de inicialização errado (erro de digitação no nome do arquivo ou caminho incorreto), `requirements.txt` ausente ou um pacote faltando. 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 regularmente para manter seu servidor do Free Tier rodando.
- [Gerenciador de arquivos](https://daki.cc/pt/wiki/guides/file-manager) — Atualize seu código depois de fazer mudanças.

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