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.
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
- Apri il Discord Developer Portal e crea una nuova applicazione.
- Aggiungi un Bot, copia il suo token e tienilo segreto.
- In OAuth2, genera un link di invito con gli scope
boteapplications.commandse 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
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.