Hospedar um bot de Discord em Python com discord.py
requirements.txt, arquivo de inicialização, logs: os passos para colocar um bot discord.py online e descobrir por que ele para.
Um bot escrito com discord.py é feito de poucos arquivos: o código, a lista de dependências e um arquivo de inicialização. Com os três prontos, hospedar significa enviá-los, instalar as dependências, iniciar o bot e ler os logs quando algo der errado.
- Um bot discord.py é feito de três arquivos: o código, requirements.txt e o arquivo de inicialização.
- O token nunca deve estar no código nem no Git.
- Os logs mostram a causa: leia a última exceção antes de reiniciar.
Preparar os arquivos
O bot deve caber em uma pasta simples. Mantenha o token fora do código (veja o artigo sobre variáveis de ambiente) e liste as dependências em um arquivo requirements.txt, que a instalação lê linha por linha.
- bot.py: o arquivo de inicialização, que cria o cliente e chama client.run().
- requirements.txt: um pacote por linha, por exemplo discord.py>=2.3 como versão mínima que você testou.
- Um arquivo .env local, apenas para os seus testes: ele nunca deve ir para o servidor nem para o Git.
Instalar e iniciar
Em um ambiente Python, o comando de instalação das dependências é o mesmo do seu PC. Depois que os pacotes estiverem instalados, o bot inicia pelo arquivo de inicialização.
- pip install -r requirements.txt: instala os pacotes listados.
- python bot.py: inicia o bot localmente para verificar se ele se conecta.
- Se o console indicar um arquivo de inicialização que não encontra, ele procura nas subpastas e oferece uma correção com um clique.
Ler os logs
Os logs são o primeiro lugar para olhar. Um bot que para quase sempre deixa um rastro: uma exceção Python, um login recusado ou um erro de token.
- Um Traceback seguido do nome de uma exceção: o arquivo e a linha indicados apontam o código a corrigir.
- discord.errors.LoginFailure: o token está ausente ou é inválido, veja o artigo sobre erros comuns de bots do Discord.
- Intents privilegiados: Message Content deve estar ativado no portal de desenvolvedores do Discord se o código lê o texto das mensagens.
Por que a ACLClouds para um bot discord.py
O plano gratuito oferece 1 bot, 315 MB de RAM, 0,25 vCPU e 715 MB de armazenamento. ffmpeg, yt-dlp e deno já vêm instalados, e cada bot tem seu próprio acesso SFTP.
- Plano gratuito: 1 bot, 315 MB de RAM, 0,25 vCPU, 715 MB de armazenamento, envios de até 100 MB.
- A imagem Python inclui ffmpeg, yt-dlp e deno.
- Acesso SFTP por bot na porta 2222, para enviar seus arquivos com o FileZilla.
Perguntas frequentes
Qual versão do Python o discord.py precisa?
O discord.py 2.x precisa do Python 3.8 ou mais recente. Em um projeto novo, use uma versão recente que ainda seja mantida.
O bot conecta, mas não responde às mensagens. Por quê?
Verifique se o intent Message Content está ativado no portal de desenvolvedores e se o bot pode ler e enviar mensagens no canal.
O bot pode funcionar com o PC desligado?
Sim, esse é o objetivo da hospedagem: o bot roda no servidor. Ainda assim, veja os logs após cada atualização do código.