OffshoreVps
Tutoriais7 out. 20265 min de leituraPor a equipe da OffshoreVps

Como hospedar um bot do Discord em um VPS

Crie um bot do Discord, implante um bot discord.js em um VPS Linux e mantenha-o online com systemd, com dicas sobre token e intents.

Um bot do Discord se conecta ao gateway do Discord e permanece conectado, então precisa de uma máquina sempre ligada. Um VPS pequeno é barato, fica online e não depende da sua internet doméstica. Este guia implanta um bot Node.js com discord.js e o mantém vivo com o systemd.

Janela de terminal em um VPS mostrando os comandos usados para hospedar um bot do Discord, começando com “curl -fsSL https://deb.nodesource.com/setup_22.x”
O tipo de comandos que você executará no servidor neste guia.

Que tamanho de VPS?

1 vCPU e 1 a 2 GB de RAM bastam para a maioria dos bots. Bots maiores, que guardam muitos servidores em cache ou processam áudio, precisam de mais. Veja a hospedagem de bot do Discord para os planos.

Passo 1: crie o bot no Discord

  1. Abra o Discord Developer Portal e crie uma nova aplicação.
  2. Adicione um Bot, copie o token dele e mantenha-o em segredo.
  3. Em OAuth2, gere um link de convite com os escopos bot e applications.commands e adicione o bot ao seu servidor.

Passo 2: instale o Node.js

curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
node -v
sudo adduser --disabled-password --gecos "" discord
Os passos deste guia em ordem: 1. Que tamanho de VPS?; 2. crie o bot no Discord; 3. instale o Node.js; 4. mantenha o token fora do código; 5. execute-o com systemd; 6. Bons hábitos
Os passos deste guia, em ordem.

Passo 3: escreva o bot

sudo -iu discord
mkdir ~/bot && cd ~/bot
npm init -y
npm install discord.js
// index.js
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });

client.once('ready', () => console.log('Logged in as ' + client.user.tag));
client.on('interactionCreate', async (i) => {
  if (i.isChatInputCommand() && i.commandName === 'ping') await i.reply('Pong!');
});

client.login(process.env.DISCORD_TOKEN);

Registre o comando de barra /ping uma vez usando o método do guia do discord.js.

Passo 4: mantenha o token fora do código

echo "DISCORD_TOKEN=your-token-here" > ~/bot/.env
chmod 600 ~/bot/.env

Passo 5: execute-o com systemd

[Unit]
Description=Discord bot
After=network-online.target

[Service]
User=discord
WorkingDirectory=/home/discord/bot
EnvironmentFile=/home/discord/bot/.env
ExecStart=/usr/bin/node index.js
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now discordbot
journalctl -u discordbot -f

Dê ao arquivo o nome /etc/systemd/system/discordbot.service.

Bons hábitos

  • Use apenas as intents de que precisa. As intents privilegiadas precisam ser ativadas no portal.
  • Se um token vazar, redefina-o no portal imediatamente.
  • O reinício em caso de falha está definido acima. Adicione monitoramento se o bot for importante para uma comunidade.