DEV Community

Monica Hillman for Magalu Cloud

Posted on

Criando um bot para o Discord e hospedando em uma máquina virtual na Magalu Cloud

O Discord é uma plataforma cada vez mais presente no dia a dia de comunidades, empresas, grupos de estudo e projetos colaborativos. Com sua interface acessível e suporte a bots personalizados, ele se tornou um ambiente ideal para criar experiências interativas e automatizadas.

Bots no Discord podem desempenhar diversas funções. Eles podem responder dúvidas, integrar sistemas externos, automatizar tarefas repetitivas ou até mesmo interagir com APIs personalizadas. O desafio comum está em mantê-los ativos constantemente, com estabilidade e baixo custo.

Neste artigo, mostraremos como criar um bot do Discord utilizando Node.js e hospedá-lo de forma prática na Magalu Cloud.

Criando o bot no Discord

Começamos acessando o Discord Developer Portal para registrar um novo bot:

  1. Crie uma nova aplicação;
  2. Vá até a aba “Bot” e clique em Add Bot;
  3. Vá até a seção "Privileged Gateway Intents";
  4. Ative a opção “Message Content Intent”;
  5. Copie o token (será usado mais tarde);
  6. Em “OAuth2 → URL Generator”, selecione bot e adicione permissões como Send Messages, Read Message History, etc.;
  7. Gere a URL, abra no navegador e adicione o bot ao seu servidor.

Atenção: nunca exponha o token do bot em repositórios públicos.

Desenvolvendo o bot com Node.js

Para desenvolver o código do bot, você pode utilizar as bibliotecas discord.js, dotenv e axios.

Dentro de um novo projeto Node.js (npm init -y), instalamos as dependências:

npm install discord.js dotenv axios
Enter fullscreen mode Exit fullscreen mode

Crie um arquivo chamado .env para adicionar o token.

Agora crie um index.js com a lógica principal:

import { Client, GatewayIntentBits } from 'discord.js';
import dotenv from 'dotenv';

dotenv.config();

const client = new Client({
  intents: [GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.MessageContent],
});

client.once('ready', () => {
  console.log(`Bot está online como ${client.user.tag}`);
});

client.on('messageCreate', message => {
  if (message.author.bot) return;

  if (message.content === '!ping') {
    message.channel.send('Pong!');
  }
});

client.login(process.env.DISCORD_TOKEN);
Enter fullscreen mode Exit fullscreen mode

Este código inicializa um bot do Discord usando discord.js. Ele escuta mensagens em canais e responde com "Pong!" quando alguém envia !ping. A biblioteca dotenv é usada para carregar o token do bot de um arquivo .env, mantendo o código mais seguro e limpo.

O bot é configurado com intents que permitem acessar mensagens e canais. Quando o bot está pronto, ele exibe uma mensagem no console, e ao receber uma nova mensagem, responde se for o comando esperado.

Para mais detalhes sobre a biblioteca e suas funcionalidades, acesse a documentação oficial do discord.js.

Agora, precisamos manter esse bot sendo sempre executado, para que os usuários do seu servidor possam utilizá-lo. Para isso, vamos colocar esse projeto em uma máquina virtual.

Inicializando uma máquina virtual na Magalu Cloud

Usaremos uma máquina virtual (VM) para manter o bot do Discord rodando continuamente, sem depender de um computador local. A VM funciona como um servidor sempre disponível, ideal para projetos que precisam ficar online 24 horas por dia.

Para criar uma VM, você pode acessar o painel da Magalu Cloud e criar uma nova instância com a imagem Ubuntu 22.04. Durante a criação, associamos a chave pública gerada anteriormente. Também ativamos um IP público para a VM e liberamos a porta 22 no firewall para permitir conexões SSH.
Com a VM configurada, acessamos o servidor de qualquer lugar pelo terminal usando:

ssh ubuntu@<ip-publico-da-vm>
Enter fullscreen mode Exit fullscreen mode

Esse comando inicia uma conexão segura com a máquina virtual, usando o usuário padrão ubuntu. A partir daí, temos controle total sobre o ambiente da VM, podendo instalar dependências, rodar scripts, configurar o bot e manter tudo funcionando de forma autônoma.

Antes de seguir com a instalação do projeto, é importante garantir que o sistema esteja atualizado. Execute o comando:

sudo apt update
Enter fullscreen mode Exit fullscreen mode

Em seguida, instalamos o Node.js na versão recomendada (20.x), que é compatível com a discord.js:

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
Enter fullscreen mode Exit fullscreen mode

Para verificar se tudo está certo, execute:

node -v
npm -v
Enter fullscreen mode Exit fullscreen mode

Com o ambiente atualizado e o Node.js instalado, a VM está pronta para receber o código do bot.

Enviando o projeto para a máquina virtual

Com a estrutura pronta localmente, você pode enviar seu projeto para a VM de duas formas: via Git ou via scp.

Via Git

Se o seu projeto está versionado em uma plataforma como GitHub ou GitLab, você pode simplesmente clonar o repositório direto na VM:

git clone https://github.com/usuario/repositorio.git bot
cd bot
Enter fullscreen mode Exit fullscreen mode

Esse comando clona o projeto para uma pasta chamada bot e já navega até ela.

Via scp

Se o projeto estiver em uma pasta local (por exemplo, BotMagaluCloud), você pode fazer o upload diretamente para a VM. Primeiro remova a pasta node_modules e envie todos os arquivos com o seguinte comando:

scp -r /nome-da-pasta/* ubuntu@<ip-da-vm>:/home/ubuntu/bot
Enter fullscreen mode Exit fullscreen mode
  • scp: comando para copiar arquivos via SSH
  • -r: copia a pasta recursivamente
  • bot: nome da pasta local com seu projeto
  • ubuntu@<ip-da-vm>: usuário e IP da sua VM
  • :/home/ubuntu/bot: caminho de destino onde o projeto será salvo na VM

Agora, precisamos instalar as dependências desse projeto.

Instalando dependências

Após o upload ou clone do projeto, acesse a pasta do bot:

cd ~/bot
Enter fullscreen mode Exit fullscreen mode

Instale as dependências definidas no package.json:

npm install
Enter fullscreen mode Exit fullscreen mode

Em seguida, crie o arquivo .env com:

nano .env
Enter fullscreen mode Exit fullscreen mode

No editor nano, adicione suas variáveis de ambiente:

DISCORD_TOKEN=seu_token_do_discord
Enter fullscreen mode Exit fullscreen mode

Como salvar no nano:

  1. Pressione Ctrl + O para salvar o arquivo
  2. Pressione Enter para confirmar o nome .env
  3. Pressione Ctrl + X para sair do editor

Agora o ambiente está pronto para rodar o bot com segurança, sem expor seus tokens diretamente no código. Mas então, como deixar esse código sendo executado mesmo após falhas ou reinicialização da máquina?

Mantendo o bot sempre ativo com PM2

Para garantir que o bot continue rodando mesmo após uma queda ou reinicialização da máquina, usaremos o pm2, um gerenciador de processos para aplicações Node.js.

Instale o pm2 globalmente na sua VM com:

sudo npm install -g pm2
Enter fullscreen mode Exit fullscreen mode

Agora, dentro da pasta do seu projeto, inicie o bot com o comando:

pm2 start index.js --name bot-magalu
Enter fullscreen mode Exit fullscreen mode

Esse comando executa o bot e atribui o nome “bot-magalu” ao processo. Você pode verificar se está rodando com:

pm2 list
Enter fullscreen mode Exit fullscreen mode

Para garantir que o bot volte automaticamente se a máquina for reiniciada, execute:

pm2 save
pm2 startup
Enter fullscreen mode Exit fullscreen mode

O pm2 irá exibir um comando extra, copie e cole no terminal para finalizar a configuração.

Se quiser visualizar os logs do bot em tempo real, use:

pm2 logs bot-magalu
Enter fullscreen mode Exit fullscreen mode

Agora seu bot está rodando de forma contínua e confiável na Magalu Cloud.

Conclusão

Ao longo deste artigo, mostramos como criar um bot funcional do Discord usando Node.js e hospedá-lo de forma estável na Magalu Cloud. Desde a configuração inicial no Discord até a publicação em uma máquina virtual Linux, passamos por todos os passos necessários para colocar seu projeto em produção, com segurança e autonomia.

Essa abordagem é acessível tanto para quem está começando a desenvolver quanto para quem já trabalha com bots ou automações em ambientes de produção. Usar uma VM permite total controle sobre o ambiente, enquanto ferramentas como pm2 garantem que seu bot fique online mesmo em casos de falhas ou reinicializações.

Seja para comunidades, empresas, projetos de estudo ou simplesmente para aprender algo novo, criar e hospedar seu próprio bot é uma ótima forma de aplicar conceitos práticos de programação, infraestrutura e integração com APIs.

Agora que você tem a base pronta, pode expandir o bot com comandos personalizados, interações com bancos de dados, comandos com barra, ou até criar um painel de controle web. As possibilidades são muitas.

Top comments (0)