Ein auf Ihrem Computer gestarteter Discord-Bot wird getrennt, sobald Sie den Computer ausschalten, und Ihre Mitglieder sehen, wie sein Symbol grau wird. Auf einem VPS bleibt er Tag und Nacht verbunden, startet nach einem Fehler automatisch neu und ist nicht mehr von Ihrer Internetverbindung abhängig. Diese Anleitung führt Sie von der Erstellung des Bots bis zu seinem dauerhaften Betrieb in Python mit discord.py, einschließlich der entsprechenden Anleitung für discord.js.
1. Erstellen Sie den Bot im Entwicklerportal
- Öffnen Sie das Entwicklerportal von Discord und erstellen Sie eine Anwendung.
- Erstellen Sie auf der Registerkarte Bot das Token („Token zurücksetzen“) und kopieren Sie es. Es wird anschließend nicht mehr angezeigt; bewahren Sie es wie ein Passwort auf.
- Aktivieren Sie in Bot die bevorzugten Intents bitte nur, wenn Sie diese benötigen. Message Content dient lediglich dazu, den Text von Nachrichten auszulesen; ein Bot mit Slash-Befehlen kommt ohne diese Funktion aus.
- Erstellen Sie in OAuth2 einen Einladungslink mit den folgenden Bereichen:
botundapplications.commands, und zwar nur die erforderlichen Berechtigungen. Öffnen Sie die Datei, um den Bot zu Ihrem Server hinzuzufügen.
2. Das VPS vorbereiten
Installieren Sie auf einem Debian- oder Ubuntu-VPS, auf dem Sie als Root angemeldet sind, Python und richten Sie einen eigenen Benutzer ein: Der Bot darf niemals als Root ausgeführt werden.
apt update && apt install -y python3 python3-venv
adduser --disabled-password --gecos "" bot
su - bot
mkdir monbot && cd monbot
python3 -m venv venv
venv/bin/pip install discord.py
3. Der erste Bot
Erstellen Sie bot.py. Dieser Bot reagiert auf den Slash-Befehl /ping :
import os
import discord
from discord import app_commands
intents = discord.Intents.default()
client = discord.Client(intents=intents)
tree = app_commands.CommandTree(client)
@tree.command(name="ping", description="Vérifie que le bot répond")
async def ping(interaction: discord.Interaction):
await interaction.response.send_message("pong")
@client.event
async def on_ready():
await tree.sync()
print(f"Connecté en tant que {client.user}")
client.run(os.environ["DISCORD_TOKEN"])
Probieren Sie es zunächst einmal von Hand aus:
DISCORD_TOKEN="VOTRE_JETON" venv/bin/python bot.py
Es kann einige Minuten dauern, bis der Befehl nach der ersten Synchronisierung in Discord angezeigt wird. Beenden Sie den Bot anschließend mit Ctrl+C.
4. Den Dienst mit systemd im Dauerbetrieb ausführen
Kehren Sie in das Root-Verzeichnis zurück und speichern Sie das Token in einer Datei, die nur für Root lesbar ist:
install -m 600 /dev/null /etc/monbot.env
echo 'DISCORD_TOKEN=VOTRE_JETON' > /etc/monbot.env
Erstellen Sie /etc/systemd/system/monbot.service :
[Unit]
Description=Bot Discord
After=network-online.target
Wants=network-online.target
[Service]
User=bot
WorkingDirectory=/home/bot/monbot
EnvironmentFile=/etc/monbot.env
ExecStart=/home/bot/monbot/venv/bin/python bot.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now monbot
journalctl -u monbot -f # journal en direct
Der Bot startet nun nach einem Fehler und nach einem Neustart des VPS wieder. Nach einer Änderung am Code: systemctl restart monbot.
5. Mit discord.js
Die Vorgehensweise ist in Node.js dieselbe: Installieren Sie eine aktuelle LTS-Version von Node.js, und dann npm install discord.js im Ordner des Bots. Ersetzen Sie im Dienst die Zeile ExecStart von ExecStart=/usr/bin/node index.js. PM2 ist eine gängige Alternative zu systemd für Node.js-Projekte.
6. Ports, Intents und häufige Fehler
- Es müssen keine Ports geöffnet werden : Der Bot stellt selbst eine Verbindung zu Discord her. Behalten Sie ihn bei Firewall geschlossen, es sei denn, Sie fügen eine Website oder ein Dashboard hinzu.
- Fehler bei den privilegierten Intents Beim Start: Der im Code angeforderte Intent ist im Portal nicht aktiviert oder umgekehrt.
- Der Bot kann den Text der Nachrichten nicht sehen : Das ist die Absicht Inhalt der Nachricht. Verwenden Sie vorzugsweise Befehle mit Schrägstrich, da diese keinen Schrägstrich benötigen.
- Mehr als 2.500 Server, Discord schreibt Sharding vor: discord.py verwaltet dies mithilfe von
AutoShardedClient.
7. Welcher VPS ist für Ihren Bot geeignet?
| Bot-Typ | RAM |
|---|---|
| Moderation, Befehle, Tickets auf einigen Servern | 1 bis 2 GB |
| Datenbank, Web-Dashboard, mehrere Bots | 2 bis 4 GB |
| Musik mit ffmpeg oder Lavalink | 4 GB und mehr |
| Bot, der mit einem lokalen KI-Modell (Ollama) verbunden ist | 8 bis 16 GB |
Auf einem einzigen VPS können mehrere Bots gehostet werden, wobei pro Bot ein Dienst und ein Token zur Verfügung stehen. Siehe unsere Seite VPS für Discord-Bot. Entwickeln Sie auch für Telegram? Lesen Sie Einen Telegram-Bot auf einem VPS hosten.
Häufig gestellte Fragen
Benötigt man einen VPS, um einen Discord-Bot zu hosten?
Nicht für die Entwicklung: Ihr Computer reicht aus. Für einen ständig aktiven Bot benötigen Sie einen Rechner, der stets eingeschaltet und mit dem Internet verbunden ist – genau das bietet ein VPS.
Wie viel RAM benötigt ein Discord-Bot?
1 bis 2 GB reichen für einen Moderations- oder Befehlsbot aus. Rechnen Sie mit 4 GB und mehr für einen Musikbot und noch mehr, wenn mehrere Bots auf demselben Server laufen.
Muss ich einen Port auf dem VPS öffnen?
Nein. Der Bot stellt die Verbindung zu Discord selbst her. Ein Port ist nur erforderlich, wenn Sie eine Website, eine API oder ein Dashboard hinzufügen.
Warum wird meine Bestellung bei Slash nicht angezeigt?
Bitte überprüfen Sie, ob der Einladungslink den Bereich enthielt applications.commands und dass die Synchronisierung beim Systemstart stattgefunden hat. Es kann einige Minuten dauern, bis ein globaler Befehl angezeigt wird.










