Zum Inhalt springen

Bot-Starter: dein erster Discord-Bot

Drei Dateien, fünf Schritte, ein laufender Bot mit Slash-Command. Wähle deine Sprache, kopiere die Dateien und folge der Anleitung darunter.

index.js
// A minimal Discord bot with one slash command.
// Requires Node.js 18 or newer and discord.js v14.
require('dotenv').config();
const {
  Client,
  GatewayIntentBits,
  REST,
  Routes,
  SlashCommandBuilder,
} = require('discord.js');

const commands = [
  new SlashCommandBuilder()
    .setName('ping')
    .setDescription('Replies with the bot latency.'),
].map((command) => command.toJSON());

const client = new Client({ intents: [GatewayIntentBits.Guilds] });

client.once('clientReady', async () => {
  // Register the slash commands on every start. Newly registered
  // global commands can take a few minutes to appear in the client.
  const rest = new REST().setToken(process.env.DISCORD_TOKEN);
  await rest.put(Routes.applicationCommands(process.env.APPLICATION_ID), {
    body: commands,
  });
  console.log(`Logged in as ${client.user.tag}`);
});

client.on('interactionCreate', async (interaction) => {
  if (!interaction.isChatInputCommand()) return;

  if (interaction.commandName === 'ping') {
    await interaction.reply(`Pong! ${Math.max(0, client.ws.ping)} ms`);
  }
});

client.login(process.env.DISCORD_TOKEN);
package.json
{
  "name": "my-discord-bot",
  "private": true,
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "discord.js": "^14.16.3",
    "dotenv": "^16.4.5"
  }
}
.env
DISCORD_TOKEN=your-bot-token
APPLICATION_ID=your-application-id

So startest du

  1. Lege im Discord Developer Portal eine Anwendung an und kopiere Bot-Token und Application-ID.
  2. Speichere die drei Dateien in einen Ordner und trage Token und ID in .env ein. Nimm .env in deine .gitignore auf.
  3. Installiere die Abhängigkeiten: npm install
  4. Starte den Bot: npm start
  5. Lade ihn mit dem Invite-Link unten in deinen Server ein und tippe /ping.

Invite-Link erzeugen

Steht im Developer Portal unter General Information.

Der Starter fordert keine Rechte an; für Slash-Commands reicht das. Was einzelne Rechte bedeuten, zeigt der Invite-Checker

Was der Starter enthält

Ein vollständiger, lauffähiger Bot in einer Datei: Anmeldung am Gateway, ein registrierter Slash-Command /ping als Vorlage für eigene Befehle, saubere Fehlerbehandlung und der Token in einer `.env`-Datei statt im Code. Dazu die Paketdatei und eine Startanleitung. Kein Framework, keine Ordnerstruktur mit zwölf Dateien, nichts, was du erst verstehen musst, bevor etwas läuft.

Beide Vorlagen tun exakt dasselbe, einmal mit discord.js unter Node.js und einmal mit discord.py unter Python. Nimm die Sprache, die du schon kennst; für den Bot ist es egal, und wechseln kannst du später immer noch.

Der Token ist ein Passwort

Der Bot-Token aus dem Developer Portal ist der Vollzugriff auf deinen Bot. Er gehört in die `.env`-Datei und nirgendwo sonst hin: nicht in den Code, nicht in Screenshots, nicht in ein öffentliches Repository. Die Vorlage liest ihn aus der Umgebung, und die mitgelieferte `.gitignore`-Zeile hält die Datei aus Git heraus.

Ist ein Token doch einmal irgendwo gelandet, setze ihn im Developer Portal sofort zurück. Discord erkennt veröffentlichte Tokens teils selbst und macht sie ungültig, aber verlass dich nicht darauf; der Knopf „Reset Token" kostet drei Sekunden.

Vom ersten Start zum Bot, der bleibt

Zum Ausprobieren reicht dein Rechner: Abhängigkeiten installieren, Token eintragen, starten, den Bot mit dem generierten Link einladen. Der Slash-Command erscheint kurz darauf im Server, und ab da baust du eigene Befehle nach demselben Muster.

Dauerhaft laufen muss der Bot woanders, denn mit deinem Laptop geht er offline. Genau dafür gibt es das Bot-Hosting hier auf Topbot.gg: Repository verbinden, Token als Umgebungsvariable setzen, starten. Der kostenlose Tarif reicht für einen Bot dieser Größe, und der Eintrag im Verzeichnis entsteht dabei gleich mit.

Häufige Fragen

Brauche ich discord.js oder discord.py?
Beides führt zum selben Bot; entscheidend ist die Sprache, in der du dich wohlfühlst. discord.js läuft unter Node.js und passt, wenn du JavaScript kennst oder lernen willst; discord.py läuft unter Python und ist für Einsteiger oft leichter zu lesen. Die Vorlagen hier sind absichtlich deckungsgleich aufgebaut.
Wo bekomme ich Token und Application-ID her?
Im Discord Developer Portal unter discord.com/developers: Neue Anwendung anlegen, im Reiter Bot den Token erzeugen und kopieren, die Application-ID steht unter General Information. Beides trägst du in die .env-Datei der Vorlage ein. Den Token danach niemals öffentlich zeigen.
Warum taucht mein Slash-Command nicht auf?
Drei übliche Gründe: Der Bot wurde ohne den Scope applications.commands eingeladen, die Registrierung ist noch nicht durchgelaufen, oder der Client zeigt sie verzögert an. Prüfe zuerst den Invite-Link, warte ein paar Minuten und lade Discord mit Strg+R neu. Die Vorlage registriert die Befehle bei jedem Start.
Muss mein Bot laufen, wenn mein Rechner aus ist?
Ja, ein Bot ist nur online, solange sein Prozess irgendwo läuft. Für Tests reicht der eigene Rechner, für den Dauerbetrieb brauchst du einen Ort, der durchläuft: einen Server, einen Raspberry Pi oder ein Hosting wie das auf Topbot.gg, dessen kostenloser Tarif für einen kleinen Bot reicht.
Was kostet es, einen Discord-Bot zu betreiben?
Discord selbst verlangt nichts, weder für die Anwendung noch für die API. Kosten entstehen nur dort, wo der Bot läuft. Ein kleiner Bot kommt mit sehr wenig Arbeitsspeicher aus und läuft auf dem kostenlosen Tarif des Topbot.gg-Hostings; erst mit vielen Servern und Funktionen wächst der Bedarf.

Und wo läuft er jetzt dauerhaft?

Auf deinem Rechner geht der Bot offline, sobald du ihn zuklappst. Das Hosting hier hat einen freien Tarif, und dein Eintrag im Verzeichnis entsteht dabei mit.