Ein Discord-Bot verbindet sich mit dem Gateway von Discord und bleibt verbunden, braucht also eine Maschine, die immer eingeschaltet ist. Ein kleiner VPS ist günstig, bleibt online und hängt nicht von Ihrem Heim-Internet ab. Diese Anleitung stellt einen Node.js-Bot mit discord.js bereit und hält ihn per systemd am Leben.
Welche VPS-Größe?
1 vCPU und 1 bis 2 GB RAM genügen für die meisten Bots. Größere Bots, die viele Server zwischenspeichern oder Audio verarbeiten, brauchen mehr. Tarife finden Sie unter Discord-Bot-Hosting.
Schritt 1: Den Bot in Discord erstellen
- Öffnen Sie das Discord Developer Portal und erstellen Sie eine neue Anwendung.
- Fügen Sie einen Bot hinzu, kopieren Sie sein Token und halten Sie es geheim.
- Erzeugen Sie unter OAuth2 einen Einladungslink mit den Scopes
botundapplications.commandsund fügen Sie den Bot Ihrem Server hinzu.
Schritt 2: Node.js installieren
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
Schritt 3: Den Bot schreiben
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);
Registrieren Sie den Slash-Befehl /ping einmalig mit der Methode aus der discord.js-Anleitung.
Schritt 4: Das Token aus dem Code heraushalten
echo "DISCORD_TOKEN=your-token-here" > ~/bot/.env
chmod 600 ~/bot/.env
Schritt 5: Mit systemd ausführen
[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
Nennen Sie die Datei /etc/systemd/system/discordbot.service.
Gute Gewohnheiten
- Verwenden Sie nur die Intents, die Sie brauchen. Privilegierte Intents müssen im Portal eingeschaltet werden.
- Falls ein Token jemals geleakt wird, setzen Sie es sofort im Portal zurück.
- Der Neustart bei Fehlern ist oben eingestellt. Fügen Sie Monitoring hinzu, wenn der Bot für eine Community wichtig ist.