ACLClouds
ACLClouds

Hospedar bot Discord em Node.js: discord.js v14

Projeto npm, intents, token, início: os passos para colocar um bot discord.js v14 online, um de cada vez.

Um bot discord.js v14 é um projeto Node.js clássico: um package.json, um arquivo de entrada e algumas dependências. Os passos úteis são sempre os mesmos: criar o projeto, declarar os intents, ler o token do ambiente e testar a inicialização antes de entregar o bot ao servidor.

  • O discord.js v14 funciona com Node.js 18 ou mais recente, e o cliente declara seus intents.
  • O token é lido das variáveis de ambiente, nunca do index.js.
  • Used disallowed intents e o erro 4014 vêm da mesma configuração: um intent privilegiado desativado no portal.

Criar o projeto

O discord.js v14 funciona com Node.js 18 ou mais recente. O projeto é formado por um package.json, que lista as dependências, e por um arquivo de entrada, index.js.

  • npm init -y: cria o package.json com os valores padrão.
  • npm install discord.js: adiciona o discord.js v14 às dependências.
  • Na seção scripts do package.json, adicione "start": "node index.js" para iniciar o bot com npm start.

Escrever o cliente

O cliente deve declarar os intents de que precisa. Um intent ausente no código não recebe eventos, e um intent privilegiado que não está ativado no portal faz a conexão falhar.

  • GatewayIntentBits.Guilds e GatewayIntentBits.GuildMessages: eventos de servidores e de mensagens.
  • GatewayIntentBits.MessageContent: intent privilegiado, a ativar no portal de desenvolvedores para ler o texto das mensagens.
  • client.login(process.env.DISCORD_TOKEN): o token vem do ambiente, nunca do código.

Iniciar e verificar

Teste o bot localmente antes do envio. Um bot conectado deve exibir a confirmação prevista no evento de início.

  • npm install: instala as dependências listadas no package.json.
  • npm start: inicia o bot com o script start.
  • Se o console mostrar Used disallowed intents, um intent privilegiado está desativado no portal: ative-o e reinicie o bot.

Por que a ACLClouds para um bot discord.js

O plano gratuito inclui 1 bot, 315 MB de RAM e 715 MB de armazenamento. Node.js, ffmpeg, yt-dlp e deno já estão na imagem Node.js, e os arquivos são enviados por SFTP.

  • Plano gratuito: 1 bot, 315 MB de RAM, 0,25 vCPU, 715 MB de armazenamento, envios de até 100 MB.
  • Imagem Node.js: ffmpeg, yt-dlp e deno já instalados.
  • Acesso SFTP por bot na porta 2222, com os dados do cartão «Acesso SFTP».

Perguntas frequentes

Qual versão do Node.js usar?

Para um projeto novo com discord.js v14, use Node.js 18 ou mais recente, que ainda é mantido. Versões antigas acabam causando problemas de segurança.

Devo enviar a pasta node_modules?

Não. Ela é pesada, e o armazenamento gratuito é de 715 MB. Envie o package.json e o package-lock.json e deixe a instalação recriar a pasta.

Por que o bot mostra Used disallowed intents?

O código pede um intent privilegiado, como MessageContent, que não está ativado no portal de desenvolvedores do Discord. Ative-o e reinicie o bot.