OffshoreVps
Tutorial7 ott 20265 min di letturaDi il team di OffshoreVps

Come ospitare un bot Discord su un VPS

Crea un bot Discord, distribuisci un bot discord.js su un VPS Linux e tienilo online con systemd, con consigli su token e intent.

Un bot Discord si collega al gateway di Discord e resta connesso, quindi ha bisogno di una macchina sempre accesa. Un piccolo VPS costa poco, resta online e non dipende dalla tua connessione di casa. Questa guida distribuisce un bot Node.js con discord.js e lo mantiene vivo con systemd.

Finestra del terminale su un VPS che mostra i comandi usati per ospitare un bot Discord, a partire da “curl -fsSL https://deb.nodesource.com/setup_22.x”
Il tipo di comandi che eseguirai sul tuo server in questa guida.

Che dimensione di VPS?

1 vCPU e da 1 a 2 GB di RAM bastano per la maggior parte dei bot. I bot più grandi che tengono in cache molti server o elaborano audio ne richiedono di più. Vedi l’hosting per bot Discord per i piani.

Passo 1: crea il bot in Discord

  1. Apri il Discord Developer Portal e crea una nuova applicazione.
  2. Aggiungi un Bot, copia il suo token e tienilo segreto.
  3. In OAuth2, genera un link di invito con gli scope bot e applications.commands e aggiungi il bot al tuo server.

Passo 2: installa 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
I passaggi di questa guida in ordine: 1. Che dimensione di VPS?; 2. crea il bot in Discord; 3. installa Node.js; 4. tieni il token fuori dal codice; 5. eseguilo con systemd; 6. Buone abitudini
I passaggi di questa guida, in ordine.

Passo 3: scrivi il 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);

Registra una sola volta il comando slash /ping con il metodo descritto nella guida di discord.js.

Passo 4: tieni il token fuori dal codice

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

Passo 5: eseguilo con 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

Chiama il file /etc/systemd/system/discordbot.service.

Buone abitudini

  • Usa solo gli intent che ti servono. Gli intent privilegiati vanno attivati nel portale.
  • Se un token trapela, reimpostalo subito nel portale.
  • Il riavvio in caso di errore è già impostato sopra. Aggiungi un monitoraggio se il bot è importante per una community.