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
| Arquivo | Obrigatório | Descrição |
|---|---|---|
main.py | ✅ Sim | Ponto de entrada obrigatório |
requirements.txt | ⚠️ Recomendado | Lista de dependências (pip install) |
main.py é obrigatórioO 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
requirements.txt é opcionalSe 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
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 viapip installem 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)
| Biblioteca | Versão recomendada | Uso |
|---|---|---|
discord.py | 2.3.x | Bots do Discord |
py-cord | 2.6.x | Bots Discord com slash commands |
python-telegram-bot | 20.x+ | Bots do Telegram |
requests | qualquer | Requisições HTTP |
python-dotenv | 1.x | Carregar .env local |
aiohttp | 3.x | Requisições HTTP assíncronas |
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