Zum Inhalt springen
Aktueller Gutschein:10 % RabattIn der Bestellung einlösen

Discord-Bot: Anwendung, Token, Intents und sichere Token-Speicherung

Erstellen Sie eine Anwendung im Discord Developer Portal, holen Sie sich einen Token, aktivieren Sie nur die nötigen Intents, laden Sie den Bot auf Ihren Server ein und speichern Sie den Token sicher in einer .env-Datei.

  • Einsteiger
  • ~10 Min.
  • Aktualisiert am 9.10.2026

Jeder Discord-Bot braucht eine Anwendung im Discord Developer Portal und einen Token, mit dem er sich anmeldet. Wir zeigen Ihnen, wie Sie die Anwendung erstellen, welche Intents Sie aktivieren, wie Sie den Bot auf einen Server einladen und wie Sie den Token so speichern, dass er nie nach außen gelangt.

Was Sie brauchen

  • Ein Discord-Konto mit bestätigter E-Mail-Adresse
  • Ein Discord-Server, auf dem Sie die Berechtigung Server verwalten haben (legen Sie zum Testen einen eigenen an)
  • Etwa 10 Minuten

Anwendung erstellen#

  1. Öffnen Sie das Discord Developer Portal (öffnet sich in einem neuen Fenster) und melden Sie sich an.

  2. Klicken Sie auf New Application.

  3. Geben Sie einen Namen ein (zum Beispiel MujBot), akzeptieren Sie die Bedingungen und klicken Sie auf Create.

    Die Seite General Information öffnet sich. Hier können Sie ein Symbol und eine Beschreibung festlegen.

  4. Kopieren Sie die Application ID. Sie wird auch Client ID genannt, und Sie brauchen sie zum Registrieren von Slash-Befehlen. Sie ist nicht geheim.

Bot-Token#

Der Token ist das Passwort des Bots. Wer ihn hat, kann den Bot steuern: Nachrichten senden, Kanäle löschen und Personen auf jedem Server bannen, auf dem der Bot ist.

  1. Klicken Sie im linken Menü der Anwendung auf Bot.
  2. Klicken Sie im Abschnitt Token auf Reset Token und bestätigen Sie. Discord fragt möglicherweise nach Ihrem Passwort oder einem Code der Zwei-Faktor-Authentifizierung.
  3. Kopieren Sie den Token (Copy) und speichern Sie ihn sofort (siehe „Token speichern“).

Der Token wird nur einmal angezeigt. Wenn Sie ihn verlieren, erzeugen Sie mit Reset Token einen neuen. Das macht den alten Token ungültig.

Den Token nie in den Code oder auf GitHub

Schreiben Sie den Token nicht direkt in eine Codedatei, und senden Sie ihn nicht über Discord, in einem Screenshot oder an den Support. Wenn er nach außen gelangt, klicken Sie sofort auf Reset Token und tragen Sie den neuen Token in .env auf dem Server ein. Der Bot mit dem alten Token wird getrennt.

Nicht verwechseln: Die kurze Zeichenkette Client Secret auf der Seite OAuth2 ist nicht der Bot-Token. Der Token ist länger und besteht aus drei durch Punkte getrennten Teilen.

Privileged Gateway Intents#

Intents sagen Discord, welche Ereignisse es dem Bot senden soll. Die meisten sind frei verfügbar, drei sind jedoch privilegiert, und Sie müssen sie auf der Seite Bot im Abschnitt Privileged Gateway Intents einschalten:

IntentWas der Bot erhältWann einschalten
Presence IntentStatus der Mitglieder (online, spielt ein Spiel, benutzerdefinierter Status).Nur wenn der Bot den Status der Mitglieder wirklich nutzt (Aktivitätsstatistiken).
Server Members IntentDie Mitgliederliste des Servers sowie Ereignisse beim Beitritt und Verlassen.Willkommensnachrichten, automatische Rollen beim Beitritt, Arbeit mit der Mitgliederliste.
Message Content IntentText, Anhänge und Embeds gewöhnlicher Nachrichten.Nur wenn der Bot gewöhnliche Nachrichten liest (Präfix-Befehle wie !help, Textmoderation). Slash-Befehle brauchen ihn nicht.
  • Schalten Sie nur ein, was der Bot braucht. Ein Intent muss im Developer Portal aktiviert und im Code angefordert werden (GatewayIntentBits in discord.js).
  • Wenn der Code einen Intent anfordert, der im Developer Portal nicht aktiviert ist, schließt Discord die Verbindung und der Bot meldet Used disallowed intents.
  • Ein Bot auf 100 oder mehr Servern muss die App-Verifizierung durchlaufen, und Discord muss seine privilegierten Intents genehmigen. Wenn mehr als 10 000 Nutzer die Anwendung sehen können, verlangt Discord für die weitere Nutzung privilegierter Intents einen Antrag und eine Prüfung, die dann jedes Jahr erneuert werden muss.

Ohne Message Content Intent sieht der Bot nur den Text von Nachrichten, die ihn erwähnen, von Direktnachrichten mit ihm und von Nachrichten, die er selbst gesendet hat.

Bot auf einen Server einladen#

  1. Klicken Sie im linken Menü der Anwendung auf Installation.

  2. Lassen Sie im Abschnitt Installation Contexts die Option Guild Install angehakt (Installation auf einem Server). User Install brauchen Sie nur für Befehle, die Nutzer ihrem eigenen Konto hinzufügen.

  3. Wählen Sie im Abschnitt Install Link die Option Discord Provided Link.

  4. Fügen Sie im Abschnitt Default Install Settings unter Guild Install die Einträge applications.commands und bot zu Scopes hinzu.

    • bot – fügt den Bot-Benutzer zum Server hinzu.
    • applications.commands – erlaubt dem Bot, Slash-Befehle auf dem Server anzulegen.
  5. Nachdem Sie bot hinzugefügt haben, erscheint Permissions. Wählen Sie nur die Berechtigungen, die der Bot braucht (siehe Tabelle unten), und speichern Sie die Änderungen.

  6. Kopieren Sie den Link aus Install Link und öffnen Sie ihn in Ihrem Browser.

  7. Wählen Sie Add to server, wählen Sie den Server aus und bestätigen Sie mit Authorize.

    Der Bot erscheint in der Mitgliederliste des Servers (offline, bis Sie ihn starten).

BerechtigungWofür der Bot sie braucht
View ChannelsDie Kanäle sehen, in denen er arbeitet.
Send MessagesNachrichten senden.
Embed LinksEmbeds senden (Nachrichten mit Rahmen und Titel).
Read Message HistoryÄltere Nachrichten lesen (Antworten, Aufräumen).
Manage RolesNur wenn der Bot Rollen vergibt. Er kann nur Rollen unterhalb seiner eigenen höchsten Rolle verwalten.
AdministratorNicht erteilen. Ein Bot mit dieser Berechtigung kann auf dem Server alles. Wenn der Token nach außen gelangt, ist das eine Katastrophe.

Sie können den Link auch manuell auf der Seite OAuth2 im Abschnitt OAuth2 URL Generator erstellen: Haken Sie bot und applications.commands an, wählen Sie die Berechtigungen und kopieren Sie die erzeugte URL.

Token speichern#

Der Token gehört in eine .env-Datei, nicht in Ihren Code. Legen Sie .env direkt auf dem Server an, damit Sie den Token nirgendwohin übertragen müssen:

  1. Öffnen Sie im Kundenbereich den Bot und wechseln Sie zur Registerkarte Dateien, in den Stammordner /.

  2. Klicken Sie auf Neue Datei und nennen Sie sie .env (mit Punkt am Anfang, ohne Endung).

  3. Tragen Sie im Editor Folgendes ein:

    .envini
    DISCORD_TOKEN=<BOT_TOKEN>
    CLIENT_ID=<APPLICATION_ID>
    GUILD_ID=<SERVER_ID>
    • DISCORD_TOKEN – der Bot-Token. Ersetzen Sie <BOT_TOKEN> durch den Token aus dem Developer Portal, ohne Anführungszeichen und ohne Leerzeichen um das =.
    • CLIENT_ID – die Application ID von der Seite General Information.
    • GUILD_ID – die ID Ihres Discord-Servers (schalten Sie in Discord Benutzereinstellungen › Erweitert › Entwicklermodus ein, dann Rechtsklick auf den Servernamen › Server-ID kopieren).
  4. Speichern Sie mit Strg+S.

.env im Code laden#

Node.js lädt .env nicht von selbst; Sie müssen es dazu anweisen. Da Sie den Startbefehl auf unseren Servern nicht ändern können, laden Sie .env direkt in Ihrem Code. Der zuverlässigste Weg ist das Paket dotenv (installieren Sie es auf Ihrem Computer mit npm install dotenv):

index.jsJavaScript
const path = require('node:path');
require('dotenv').config({ path: path.join(__dirname, '.env'), quiet: true });

const token = process.env.DISCORD_TOKEN;
  • require('dotenv').config({ … }) – lädt die Variablen aus der Datei in process.env. Es muss ganz oben stehen, vor jedem Code, der den Token verwendet.
  • path: path.join(__dirname, '.env') – sucht .env im selben Ordner wie index.js, egal von wo der Bot gestartet wird.
  • quiet: true – gibt beim Start keine Meldung über das Laden der Datei aus.
  • process.env.DISCORD_TOKEN – der Wert aus .env. Er ist immer Text (ein String).

Für ES-Module ("type": "module" in package.json) verwenden Sie import 'dotenv/config'; in der ersten Zeile.

Seit Node.js 20.12 kommen Sie ohne das Paket aus und können die eingebaute Funktion process.loadEnvFile() verwenden:

index.jsJavaScript
process.loadEnvFile(require('node:path').join(__dirname, '.env'));

Wenn die Datei .env nicht existiert, wirft diese Funktion einen Fehler. Ihre Node.js-Version finden Sie unter Node.js-Version. Auf Ihrem Computer können Sie den Bot auch mit node --env-file=.env index.js starten.

Die Datei .gitignore#

Wenn Sie Ihren Code in Git verwalten (GitHub, GitLab), legen Sie im Projekt eine Datei .gitignore an:

.gitignoretext
node_modules
.env

Git lädt dann .env und node_modules nie hoch. Wenn Sie .env bereits versehentlich gepusht haben, reicht Löschen nicht (die Datei bleibt in der Historie). Setzen Sie den Token sofort zurück.

Weitere Geheimnisse#

Auch andere Passwörter und Schlüssel gehören in .env: das Datenbankpasswort, API-Schlüssel für andere Dienste, Webhooks. Es gelten dieselben Regeln:

  • Verwenden Sie im Code nur process.env.NAME, nie den Wert selbst,
  • geben Sie sie nie in der Konsole aus (auch ein Mitglied eines geteilten Dienstes kann die Konsole sehen),
  • wenn sie nach außen gelangen, widerrufen Sie sie sofort bei dem Dienst, der sie ausgestellt hat.

Überprüfung#

  • Nach dem Start geht der Bot auf Discord online, und die Konsole zeigt kein An invalid token was provided.
  • Um zu prüfen, ob der Token geladen wurde, geben Sie nur seine Länge aus, nie den Token selbst: console.log('Token-Länge:', process.env.DISCORD_TOKEN?.length);. Wird undefined ausgegeben, wurde .env nicht geladen.

Fehlerbehebung#

An invalid token was provided.#

Der Token ist falsch, funktioniert nach Reset Token nicht mehr oder wurde gar nicht geladen. Prüfen Sie die Token-Länge (siehe Überprüfung), den Variablennamen in .env und in Ihrem Code (DISCORD_TOKEN) und dass .env keine überflüssigen Anführungszeichen oder Leerzeichen enthält. Wenn Sie unsicher sind, erzeugen Sie einen neuen Token und tragen Sie ihn erneut ein.

Used disallowed intents#

Der Code fordert einen privilegierten Intent an, der im Developer Portal nicht aktiviert ist. Schalten Sie den Intent auf der Seite Bot unter Privileged Gateway Intents ein oder entfernen Sie ihn aus dem Code.

process.env.DISCORD_TOKEN ist undefined#

  • dotenv wird erst nach dem Code geladen, der den Token verwendet. Setzen Sie require('dotenv').config(…) in die ersten Zeilen.
  • Die Datei heißt in Wirklichkeit .env.txt (Windows blendet Dateiendungen aus). Benennen Sie sie auf dem Server in .env um.
  • .env liegt in einem anderen Ordner als die Hauptdatei. Verwenden Sie path.join(__dirname, '.env').

Sie haben auf der Seite Bot die Option Public Bot ausgeschaltet, auf der Seite Installation ist aber Discord Provided Link eingestellt. Ein privater Bot kann keinen Standardlink haben. Lassen Sie entweder Public Bot eingeschaltet oder wählen Sie bei Install Link die Option None und erstellen Sie den Link im OAuth2 URL Generator.

Bot requires a code grant#

Auf der Seite Bot ist Requires OAuth2 Code Grant eingeschaltet. Wenn Sie das nicht ausdrücklich brauchen, schalten Sie es aus.

Ich sehe meinen Server beim Einladen des Bots nicht in der Liste#

Sie haben auf diesem Server nicht die Berechtigung Server verwalten. Bitten Sie den Serverinhaber oder laden Sie den Bot auf Ihren eigenen Server ein.

Zusammenfassung

  • Die Anwendung erstellen Sie im Developer Portal (New Application), den Token holen Sie auf der Seite Bot mit Reset Token. Er wird nur einmal angezeigt.
  • Schalten Sie privilegierte Intents (Presence, Server Members, Message Content) nur ein, wenn der Bot sie braucht, sowohl im Developer Portal als auch im Code.
  • Laden Sie den Bot mit dem Link von der Seite Installation ein, mit den Scopes bot und applications.commands und so wenigen Berechtigungen wie möglich, nie Administrator.
  • Der Token gehört in .env auf dem Server. Laden Sie ihn im Code mit dotenv und tragen Sie .env in .gitignore ein.

Anleitungen durchsuchen