DiscordSRV: Discord-Bot fuer Minecraft-Server einrichten
Discord ist laengst das zweite Zuhause fuer fast jede Gaming-Community. Spieler haengen dort auch ohne Spiel ab, also macht es Sinn, den Server-Chat von dort erreichbar zu machen. DiscordSRV ist das beliebteste Plugin fuer die Verbindung von Minecraft mit Discord. Es baut eine Zwei-Wege-Chat-Bruecke, spiegelt die Konsole in einen Kanal, synchronisiert Rollen, verknuepft Accounts und sendet Alerts zu Server-Events.
Dieser Guide deckt alles ab: vom Anlegen eines Bots im Developer Portal bis zum Feintuning von Group Sync und Webhook-Nachrichten. Anleitung fuer Paper/Spigot/Purpur, gilt aber meist auch fuer andere Forks.
Was DiscordSRV kann
Die Hauptfeatures, wegen denen man es installiert:
- Chat-Bruecke: In-Game-Chat landet in einem Discord-Kanal und umgekehrt
- Konsolen-Kanal: Die Server-Konsole wird in einen privaten Kanal gespiegelt, Befehle lassen sich aus Discord ausfuehren
- Alerts: Join/Leave von Spielern, Tode, Erfolge, Server-Start/Stop
- Account Linking: Minecraft-Nick mit Discord-Account per Code verbinden
- Group Sync: LuckPerms-Gruppen mappen automatisch auf Discord-Rollen und zurueck
- Webhook-Nachrichten: In-Game-Nachrichten erscheinen in Discord mit dem Kopf-Avatar des Spielers, nicht als Bot
- Addon-API: Viele Plugins erweitern DiscordSRV (Reaktionen als Emoji, Per-Channel-Chat, Moderation)
Alternativen
Kurz zu den Konkurrenten, damit du nicht raten musst.
- DiscordIntegrator - einfacher, leichter, ohne Group Sync und Konsole. Gut, wenn nur eine Basic-Chat-Bruecke noetig ist
- EssentialsDiscord - Teil von EssentialsX, in dessen Oekosystem eingebettet. Kein Group Sync, wenig Features
- DiscordChat - minimal, nur Chat
- UltimateChat mit Discord-Addon - kostenpflichtig, schick, fuer die meisten Overkill
DiscordSRV ist der De-facto-Standard. Aktive Community, regelmaessige Updates, unterstuetzt alle aktuellen Minecraft-Versionen von 1.8 bis 1.21+. Der Rest dieses Guides richtet genau das ein.
Plugin installieren
- Oeffne die Plugin-Seite auf SpigotMC oder GitHub Releases
- Lade die aktuelle
.jarfuer deine Minecraft-Version herunter - Leg die Datei in den
plugins/-Ordner des Servers - Starte den Server neu (voller Restart, kein Reload)
Nach dem Start erscheint plugins/DiscordSRV/ mit Configs: config.yml, messages.yml, alerts.yml, synchronization.yml, linking.yml. Jetzt noch nicht anfassen, erst den Bot bauen.
Pruefe, ob das Plugin geladen ist:
/plugins
DiscordSRV sollte in gruener Farbe stehen. Rot heisst: Konsole checken. Meist eine Java- oder Minecraft-Version-Inkompatibilitaet.
Discord-Bot anlegen
Schritt 1: Anwendung erstellen
- Oeffne das Discord Developer Portal
- Klicke New Application oben rechts
- Name waehlen (z.B.
MyServer Bot) und AGB bestaetigen - Im Tab General Information kann man Icon und Beschreibung setzen. Das sehen die Spieler in Discord
Schritt 2: Bot-User erstellen
- Links im Menue Bot waehlen
- Add Bot -> Yes, do it!
- Nickname und Avatar setzen (unabhaengig vom App-Namen)
Schritt 3: Token holen
Auf derselben Bot-Seite Reset Token -> Yes, do it! klicken. Du siehst etwas wie:
MTIzNDU2Nzg5MDEyMzQ1Njc4.Xy7Z_A.abcdefghijklmnopqrstuvwxyz
Sofort kopieren. Discord zeigt den Token nicht erneut, nur Reset geht. Token niemals veroeffentlichen, nicht ins Git einchecken, nicht in Screenshots zeigen. Bei Leak sofort auf derselben Seite zuruecksetzen.
Schritt 4: Privileged Intents aktivieren
Kritischer Schritt. Ohne ihn sieht der Bot keine Nachrichten.
Auf der Bot-Seite den Abschnitt Privileged Gateway Intents aktivieren:
- PRESENCE INTENT (optional, fuer Statusanzeigen)
- SERVER MEMBERS INTENT (Pflicht fuer Group Sync)
- MESSAGE CONTENT INTENT (Pflicht fuer Chat)
Save Changes klicken.
Schritt 5: Bot einladen
- In OAuth2 -> URL Generator wechseln
- Bei Scopes ankreuzen:
bot,applications.commands - Bei Bot Permissions mindestens:
- View Channels
- Send Messages
- Embed Links
- Attach Files
- Read Message History
- Manage Messages (fuer Edit/Delete)
- Manage Roles (fuer Group Sync)
- Manage Webhooks (fuer schicke Avatar-Nachrichten)
- Add Reactions
- Unten die generierte URL kopieren
- URL im Browser oeffnen, deinen Discord-Server waehlen, bestaetigen
Der Bot taucht in der Mitgliederliste auf, ist aber noch offline.
Channel- und Guild-IDs holen
DiscordSRV arbeitet mit numerischen IDs, nicht mit Kanalnamen. Um sie zu bekommen, Developer Mode im Discord-Client aktivieren:
- User Settings -> Advanced -> Developer Mode: On
- Rechtsklick auf Server (Guild) -> Copy Server ID - das ist die Guild-ID
- Rechtsklick auf Kanal -> Copy Channel ID - das ist die Channel-ID
IDs sehen so aus: 948273194820394820. Speichere die IDs der Kanaele, die du brauchst: #minecraft-chat (globaler Chat), #console (falls Konsole spiegeln), #server-events (fuer Alerts).
DiscordSRV konfigurieren
Oeffne plugins/DiscordSRV/config.yml. Die wichtigsten Einstellungen:
BotToken
BotToken: "MTIzNDU2Nzg5MDEyMzQ1Njc4.Xy7Z_A.abcdefghijklmnopqrstuvwxyz"
Token aus dem Developer Portal einfuegen. Ohne ihn startet der Bot nicht.
Channels
Hier werden die In-Game-Kanaele von DiscordSRV auf Discord-Kanaele gemappt. global ist der Default fuer allgemeinen Chat.
Channels:
global: "948273194820394820"
staff: "948273194820394821"
Linker Wert (global, staff) ist der DiscordSRV-Kanalname, rechts die Discord-Channel-ID. Mehrere Kanaele erlauben, Staff-Chat von Public zu trennen.
Konsolen-Kanal
Eigener Abschnitt fuer Konsolen-Mirror:
DiscordConsoleChannelId: "948273194820394822"
DiscordConsoleChannelUsageLog: true
DiscordConsoleChannelBlacklistedCommands:
- "?"
- "op"
- "deop"
- "stop"
Der Kanal muss privat sein und nur fuer Admins zugaenglich. Jeder, der dort posten kann, kann Server-Befehle ausfuehren.
MinecraftChatToDiscordMessageFormat
Format fuer In-Game-Nachrichten in Discord, in messages.yml:
MinecraftChatToDiscordMessage:
Content: "%message%"
Webhook:
Enable: true
AvatarUrl: "https://mc-heads.net/avatar/%uuid%/128"
Username: "%username%"
Der Webhook-Modus laesst Nachrichten wie normale Discord-Nachrichten aussehen: Kopf-Avatar des Spielers und sein Nickname, statt als Bot. Empfohlen.
DiscordChatChannelMinecraftMessage
Format fuer die Rueckrichtung von Discord nach Minecraft.
DiscordToMinecraftChatMessageFormat: "&b[Discord] &r<%username%> %message%"
DiscordToMinecraftChatMessageFormatNoPrimaryGroup: "&b[Discord] &r<%username%> %message%"
Farben per &-Codes. %username% ist der Discord-Nick, %message% der Text.
Minimale funktionierende config.yml:
BotToken: "YOUR_TOKEN_HERE"
Channels:
global: "948273194820394820"
DiscordConsoleChannelId: "948273194820394822"
DiscordConsoleChannelUsageLog: true
DiscordChatChannelPrefixRequiredToProcessMessage: ""
MinecraftDiscordAccountLinkedConsoleCommands:
- "lp user %player% parent add verified"
MinecraftDiscordAccountUnlinkedConsoleCommands:
- "lp user %player% parent remove verified"
Speichern, im Spiel /discord reload ausfuehren, das Plugin zieht Aenderungen ohne Server-Restart.
Account Linking
Damit DiscordSRV weiss, welcher Discord-User zu welchem Spieler gehoert, braucht es Linking. Ohne laufen Group Sync und persoenliche Avatare nicht.
Link-Ablauf
- Spieler tippt
/discord linkin Minecraft - Plugin gibt einen 4-stelligen Code zurueck, z.B.
4829 - Spieler schreibt dem Bot per DM in Discord:
link 4829 - Bot bestaetigt, Link ist gespeichert
Code ist einmalig und laeuft ab (15 Minuten Default). Trennen: /discord unlink im Spiel oder unlink per DM.
Automatische Rolle beim Link
linking.yml konfiguriert Auto-Rollen:
MinecraftDiscordAccountLinkedRoleNameToAddUserTo: "Verified"
MinecraftDiscordAccountLinkedConsoleCommands:
- "lp user %player% parent add verified"
- "say %player% hat Discord verknuepft!"
Der Spieler bekommt die Rolle Verified in Discord und die Gruppe verified in LuckPerms direkt nach dem Link. Praktisch, um verifizierte Spieler von zufaelligen Besuchern zu trennen.
Link erzwingen
Man kann den Server hinter Discord-Linking sperren. In config.yml:
Require linked account to play:
Enabled: true
Subtract from online count: true
Kick message: "Verknuepfe Discord: /discord link | Invite: discord.gg/deinserver"
Whitelisted players bypass check: true
Nur verknuepfte Spieler kommen rein. Whitelisted koennen umgehen.
Group Sync
Eines der nuetzlichsten Features. Konfiguriert in synchronization.yml.
GroupRoleSynchronizationGroupsAndRolesToSync:
"admin": "948273194820394830"
"moderator": "948273194820394831"
"vip": "948273194820394832"
"donator": "948273194820394833"
"member": "948273194820394834"
GroupRoleSynchronizationOneWay: false
GroupRoleSynchronizationCycleTime: 10
Links eine LuckPerms-Gruppe (oder Permission), rechts die Discord-Rollen-ID. Default ist Zwei-Wege-Sync: bekommst du Admin in LuckPerms, bekommst du @Admin in Discord und umgekehrt.
OneWay: true macht DiscordSRV nur zum Leser aus Minecraft und Schreiber nach Discord, ohne LuckPerms zurueck zu beruehren. Sicherer, falls jemand mit Discord-Rechten nicht versehentlich Serverrechte bekommen soll.
CycleTime: 10 ist das Intervall in Minuten fuer die Neuberechnung. Zusaetzlich triggert es bei Events (join, Rollenaenderung).
Rollen-Hierarchie
Der Bot kann nur Rollen vergeben, die unter seiner eigenen in der Discord-Hierarchie stehen. In den Server-Settings die Bot-Rolle ueber alle synchronisierten Rollen ziehen. Sonst bekommst du Missing Permissions in der Konsole.
Alerts
Datei alerts.yml. Erlaubt, beliebige Server-Events als Custom-Nachrichten in einen Kanal zu schicken.
Alerts:
- Trigger: "PlayerJoinEvent"
Async: true
Channel: "server-events"
Content: ":green_circle: **%player%** ist dem Server beigetreten"
- Trigger: "PlayerDeathEvent"
Async: true
Channel: "server-events"
Content: ":skull: %player% ist gestorben: `%event.deathMessage%`"
- Trigger: "PlayerAdvancementDoneEvent"
Async: true
Conditions:
- "event.advancement.display != null"
Channel: "server-events"
Content: ":trophy: **%player%** hat **%event.advancement.display.title%** erhalten"
Trigger sind beliebige Bukkit-Events. Conditions filtern, z.B. versteckte Erfolge ausschliessen.
Fuer Server-Events (Start, Stop, Crash) gibt es Built-ins in config.yml:
DiscordChatChannelServerStartupMessage: ":green_circle: Server gestartet"
DiscordChatChannelServerShutdownMessage: ":red_circle: Server gestoppt"
Webhook-Nachrichten fuer bessere Optik
Wenn du in messages.yml aktivierst:
MinecraftChatToDiscordMessage:
Webhook:
Enable: true
AvatarUrl: "https://mc-heads.net/avatar/%uuid%/128"
Username: "%username%"
Erscheinen In-Game-Nachrichten als eigene "User" in Discord, jeder mit eigenem Avatar, dem Minecraft-Kopf. Visuell deutlich besser als alles ueber den Bot mit einem Namen.
Wichtig: Der Bot braucht Manage Webhooks im Kanal, sonst funktioniert nichts. Discord limitiert auch Webhook-Nachrichten pro Minute. Auf kleinen Servern egal, bei 100+ Online kann es Grenzen treffen. Dann Webhook abschalten oder batchen.
Whitelist per Discord
Man kann Server-Zugang an eine Discord-Rolle binden. Z.B. die Rolle @Member soll Whitelist geben.
Per Group Sync: @Member auf die LuckPerms-Gruppe whitelisted mappen, die essentials.whitelist.bypass hat, oder per Custom-Commands in whitelist.json eintragen:
MinecraftDiscordAccountLinkedConsoleCommands:
- "whitelist add %player%"
MinecraftDiscordAccountUnlinkedConsoleCommands:
- "whitelist remove %player%"
Oder einen eigenen Alert auf DiscordSRVs RoleAddEvent per Addon-Plugin schreiben. Fuer die meisten Server reicht die einfache Group-Sync-Kombi.
Troubleshooting
"No such channel" beim Start
Plugin loggt Could not find Discord channel by ID.... Ursachen:
- Channel-ID falsch kopiert (Leerzeichen, Buchstaben statt Ziffern)
- Bot nicht auf dem Server eingeladen, auf dem der Kanal liegt
- Bot hat keine View-Channel-Berechtigung
- Kanal ist Kategorie oder Voice-Channel, DiscordSRV erwartet Text
Check: Discord-Kanal-Settings -> Permissions, Bot-Rolle finden, View Channel aktivieren.
"Missing Permissions" beim Rollen-Zuweisen
WARN: Tried to assign role but lacks permissions
Zwei Ursachen:
- Bot-Rolle in Discord-Hierarchie niedriger als die zugewiesene Rolle. Fix: Bot-Rolle in Server -> Roles hochziehen
- Bot hat kein Manage Roles. Fix: Server Settings -> Roles -> Bot-Rolle -> Manage Roles aktivieren
Nachrichten gehen nicht von Minecraft nach Discord
- Pruefe, ob
globalinChannels:die richtige ID hat - Pruefe, ob der Bot online ist (
/discordim Spiel zeigt Status) - Schau in die Server-Konsole auf JDA-Fehler (DiscordSRVs Library)
Nachrichten gehen nicht von Discord nach Minecraft
Fast immer: Message Content Intent ist im Developer Portal nicht aktiviert. Discord-Policy seit 2022, ohne dieses Intent sieht der Bot keinen Inhalt. Aktivieren, Server neu starten, erneut pruefen.
Webhook-Nachrichten funktionieren nicht
- Bot hat kein Manage Webhooks im Kanal
- Discord-Limit pro Kanal (10 Webhooks) erreicht
- Proxy/CDN blockiert ausgehende Webhook-Requests vom Minecraft-Server
Bot haengt bei "Connecting..."
- Token falsch oder wurde zurueckgesetzt, neuen generieren
- Token hat Leerzeichen oder Zeilenumbruch
- Hosting blockt ausgehende Verbindungen zu gateway.discord.gg
Group Sync geht nur in eine Richtung
Pruefe GroupRoleSynchronizationOneWay. Bei true geht Sync nur MC -> Discord. Auf false setzen fuer beide Richtungen.
Auch pruefen, ob die LuckPerms-Gruppen existieren (/lp group <name> info).
Sicherheit und Best Practices
- Konsolen-Kanal nur fuer Admins. Wer dort posten darf, kann Server-Befehle ausfuehren. Nur an Vertrauenspersonen geben
- Token im Passwort-Manager sichern. Bei Leak sofort zuruecksetzen
- Getrennte Kanaele nach Rolle:
#minecraft-chatoeffentlich,#staff-chatprivat fuer Moderation,#server-eventsfuer Alerts,#consolefuer Admins - Webhook fuer Chat bei 200+ Online meiden. Discord-Ratelimits fangen an zu zicken
- Bot-Rolle ueber Sync-Rollen. Spart Stunden an Debugging
- Alerts sparsam. Ein Kanal mit 100 Alerts pro Minute wird von niemandem gelesen
- DiscordSRV aktuell halten. Discord aendert die API regelmaessig, alte Versionen treiben weg
Finale Checkliste
- DiscordSRV-Plugin in
plugins/, Server gestartet, Plugin gruen - Bot im Developer Portal erstellt, Token gespeichert
- Drei Privileged Intents aktiv (SERVER_MEMBERS, MESSAGE_CONTENT, PRESENCE)
- Bot ueber OAuth2-URL mit passenden Permissions eingeladen
- Developer Mode an, Kanal-IDs kopiert
config.ymlmitBotToken,Channels,DiscordConsoleChannelIdgefuelltsynchronization.ymlfuer Group Sync gesetzt (falls noetig)- Bot-Rolle ueber allen Sync-Rollen in der Hierarchie
- Konsolen-Kanal ist privat
- Account Linking per
/discord linkgetestet - Nachrichten laufen in beide Richtungen
Wenn alle Haken sitzen, ist DiscordSRV produktionsreif. Danach kann man Addons nachziehen: DiscordSRV-Reactions fuer Emoji-Reaktionen im Spiel, DiscordSRV-Voice fuer Voice-Channel-Anzeige, SRVLinker fuer erweitertes Linking, und den Server in ein volles Oekosystem verwandeln.
Schützen Sie Ihren Server vor DDoS-Angriffen
Kostenloser Schutz mit 5-Minuten-Einrichtung. 1 TB Traffic inklusive.
Kostenlos testenWeitere Artikel
Velocity SMP-Netzwerk: Lobby, Survival, Creative und Minigames hinter einem Proxy
Multi-Server-SMP-Netzwerk auf Velocity bauen: velocity.toml einrichten, modern forwarding, Permissions und Chat zwischen Lobby, Survival und Creative syncen.
Towny: SMP-Server mit Städten und Nationen, der komplette Guide
Komplette Towny-Einrichtung auf Paper 1.20-1.21: Befehle, townyperms.yml, Steuern, SiegeWar-Kriege, Web-Karte, LuckPerms und Anti-Grief.
Server wird gerade angegriffen: Notfall-Leitfaden fuer Minecraft-Admins
Schritt-fuer-Schritt Notfall-Checkliste: Was tun, wenn der Minecraft-Server gerade angegriffen wird. Diagnose, schnelle iptables-Massnahmen, temporaere Whitelist, wann den Hoster kontaktieren und wie man sich auf den naechsten Angriff vorbereitet.