Pular para o conteúdo principal

Estrutura de um Bot Python

O BotGate Hosting oferece suporte nativo a bots escritos em Python, usando a imagem python:3.11-slim. Siga a estrutura abaixo para garantir um deploy sem erros.


✅ Arquivos Obrigatórios

ArquivoObrigatórioDescrição
main.py✅ SimPonto de entrada obrigatório
requirements.txt⚠️ RecomendadoLista de dependências (pip install)
perigo
main.py é obrigatório

O BotGate executa python main.py para iniciar o bot. Se esse arquivo não existir na raiz do projeto, o deploy irá falhar com um erro claro antes de criar o container.


📦 Exemplo de requirements.txt

discord.py==2.3.2
python-dotenv==1.0.0
informação
requirements.txt é opcional

Se o seu bot não tiver dependências externas, você pode omitir o arquivo. O BotGate detecta automaticamente e pula a instalação.


🤖 Exemplo de main.py (discord.py)

import discord
import os

TOKEN = os.getenv("DISCORD_TOKEN")

intents = discord.Intents.default()
intents.message_content = True

client = discord.Client(intents=intents)


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


@client.event
async def on_message(message):
if message.author == client.user:
return

if message.content.lower() == "!ping":
await message.channel.send("🏓 Pong!")

if message.content.lower() == "!hello":
await message.channel.send(f"👋 Olá, {message.author.mention}!")


if not TOKEN:
raise ValueError("DISCORD_TOKEN não encontrado nas variáveis de ambiente!")

client.run(TOKEN)

🤖 Exemplo com py-cord

import discord
import os

bot = discord.Bot()

@bot.event
async def on_ready():
print(f"✅ {bot.user} está online!")

@bot.slash_command(description="Responde com Pong!")
async def ping(ctx):
await ctx.respond("🏓 Pong!")

bot.run(os.getenv("DISCORD_TOKEN"))
# requirements.txt
py-cord==2.6.1

📂 Estrutura do ZIP ideal

meu-bot-python.zip
├── main.py ← entrada obrigatória
├── requirements.txt ← dependências (opcional mas recomendado)
├── .env ← opcional (vars serão importadas automaticamente)
└── utils/
├── helpers.py
└── config.py
Pasta comprimida?

Se o seu ZIP tiver uma pasta na raiz com main.py dentro (ex: meu-bot/main.py), o BotGate detecta e eleva o conteúdo para a raiz automaticamente.


🚫 Boas Práticas (O que NÃO fazer)

  • NÃO use venv/ ou .venv/ no seu ZIP — o BotGate instala tudo via pip install em ambiente próprio.
  • NÃO hardcode tokens — use sempre os.getenv("DISCORD_TOKEN").
  • NÃO use input() — bots em produção não têm terminal interativo.
  • NÃO esqueça do if not TOKEN: raise — isso evita que o bot suba sem token configurado.

🔑 Variáveis de Ambiente

Configure suas variáveis na aba Variáveis do painel antes do deploy:

DISCORD_TOKEN=seu_token_aqui

📚 Bibliotecas Python Suportadas (exemplos)

BibliotecaVersão recomendadaUso
discord.py2.3.xBots do Discord
py-cord2.6.xBots Discord com slash commands
python-telegram-bot20.x+Bots do Telegram
requestsqualquerRequisições HTTP
python-dotenv1.xCarregar .env local
aiohttp3.xRequisições HTTP assíncronas
Versão do Python

O BotGate usa Python 3.11 por padrão. Todas as bibliotecas compatíveis com Python 3.11+ são suportadas.

💡 Próxima etapa: Deploy do Bot