DiscordSRV: konfiguracja bota Discord dla serwera Minecraft
Discord dawno stał się drugim domem dla większości społeczności growych. Gracze siedzą tam nawet, gdy nie grają, więc sensowne jest, żeby chat serwera był dostępny z tego samego miejsca. DiscordSRV to najpopularniejszy plugin do połączenia Minecrafta z Discordem. Robi dwukierunkowy most czatu, kopiuje konsolę do kanału, synchronizuje role, wiąże konta i wysyła alerty o zdarzeniach serwera.
Ten przewodnik pokrywa całość: od stworzenia bota w Developer Portal po dostrajanie group sync i wiadomości webhook. Instrukcja dla Paper/Spigot/Purpur, ale większość stosuje się też do innych forków.
Co potrafi DiscordSRV
Główne funkcje, dla których się go instaluje:
- Most czatu: wiadomości z gry trafiają do kanału Discord i odwrotnie
- Kanał konsoli: konsola serwera jest kopiowana do prywatnego kanału, można uruchamiać polecenia z Discord
- Alerty: join/leave graczy, śmierć, osiągnięcia, start/stop serwera
- Powiązanie kont: połączenie nicku Minecraft z kontem Discord przez kod
- Group sync: grupy LuckPerms automatycznie mapują się na role Discord i z powrotem
- Wiadomości webhook: wiadomości z gry pojawiają się w Discord z avatarem głowy gracza, nie jako bot
- Addon API: wiele pluginów rozszerza DiscordSRV (reakcje jako emoji, chat per kanał, moderacja)
Alternatywy
Krótko o konkurentach, żebyś nie zgadywał.
- DiscordIntegrator - prostszy, lżejszy, bez group sync i konsoli. Ok, jeśli potrzebujesz tylko podstawowego mostu czatu
- EssentialsDiscord - część EssentialsX, podłączone do jej ekosystemu. Brak group sync, ograniczone funkcje
- DiscordChat - minimalny, tylko czat
- UltimateChat z dodatkiem Discord - płatny, dopracowany, dla większości overkill
DiscordSRV jest faktycznym standardem. Żywa społeczność, regularne aktualizacje, obsługuje wszystkie aktualne wersje Minecraft od 1.8 do 1.21+. Reszta tego przewodnika ustawia właśnie jego.
Instalacja pluginu
- Otwórz stronę pluginu na SpigotMC lub GitHub Releases
- Pobierz najnowszy
.jarpod twoją wersję Minecraft - Wrzuć plik do folderu
plugins/serwera - Zrestartuj serwer (pełny restart, nie reload)
Po starcie pojawi się plugins/DiscordSRV/ z configami: config.yml, messages.yml, alerts.yml, synchronization.yml, linking.yml. Na razie nie ruszaj, najpierw bot.
Sprawdź, czy plugin się załadował:
/plugins
DiscordSRV powinien być zielony. Czerwony to znak, żeby zajrzeć do konsoli. Zwykle niezgodność wersji Javy lub Minecraft.
Tworzenie bota Discord
Krok 1: aplikacja
- Otwórz Discord Developer Portal
- Kliknij New Application w prawym górnym rogu
- Wpisz nazwę (np.
MyServer Bot) i zaakceptuj warunki - W zakładce General Information możesz ustawić ikonę i opis. To zobaczą gracze w Discord
Krok 2: utwórz bota
- W lewym menu wybierz Bot
- Kliknij Add Bot -> Yes, do it!
- Ustaw nick i avatar bota (niezależne od nazwy aplikacji)
Krok 3: pobierz token
Na tej samej stronie Bot kliknij Reset Token -> Yes, do it!. Zobaczysz coś takiego:
MTIzNDU2Nzg5MDEyMzQ1Njc4.Xy7Z_A.abcdefghijklmnopqrstuvwxyz
Skopiuj go od razu. Discord nie pokazuje tokenu ponownie, tylko pozwala zresetować. Nie publikuj tokenu, nie wrzucaj do gita, nie pokazuj na screenshotach. Jeśli wyciekł, natychmiast zresetuj na tej samej stronie.
Krok 4: privileged intents
Krytyczny krok. Bez niego bot nie widzi wiadomości użytkowników.
Na stronie Bot znajdź Privileged Gateway Intents i włącz:
- PRESENCE INTENT (opcjonalnie, dla statusów)
- SERVER MEMBERS INTENT (wymagane dla group sync)
- MESSAGE CONTENT INTENT (wymagane dla czatu)
Kliknij Save Changes.
Krok 5: zaproś bota
- Przejdź do OAuth2 -> URL Generator
- W Scopes zaznacz:
bot,applications.commands - W Bot Permissions minimum:
- View Channels
- Send Messages
- Embed Links
- Attach Files
- Read Message History
- Manage Messages (dla edycji/usuwania)
- Manage Roles (dla group sync)
- Manage Webhooks (dla wiadomości z avatarami)
- Add Reactions
- Skopiuj wygenerowany URL na dole
- Otwórz URL w przeglądarce, wybierz swój serwer Discord, potwierdź
Bot pojawi się na liście członków, ale jeszcze offline.
Pobieranie ID kanałów i guild
DiscordSRV pracuje z numerycznymi ID, nie nazwami. Żeby je dostać, włącz Developer Mode w kliencie Discord:
- User Settings -> Advanced -> Developer Mode: On
- Prawy klik na serwer (guild) -> Copy Server ID - to ID guildu
- Prawy klik na kanał -> Copy Channel ID - to ID kanału
ID wyglądają tak: 948273194820394820. Zapisz ID kanałów, których użyjesz: #minecraft-chat (globalny chat), #console (jeśli kopiujesz konsolę), #server-events (dla alertów).
Konfiguracja DiscordSRV
Otwórz plugins/DiscordSRV/config.yml. Najważniejsze parametry:
BotToken
BotToken: "MTIzNDU2Nzg5MDEyMzQ1Njc4.Xy7Z_A.abcdefghijklmnopqrstuvwxyz"
Wklej token z Developer Portal. Bez niego bot się nie uruchomi.
Channels
Tu mapujesz kanały in-game DiscordSRV na kanały Discord. global to domyślny dla ogólnego czatu.
Channels:
global: "948273194820394820"
staff: "948273194820394821"
Lewa wartość (global, staff) to nazwa kanału w DiscordSRV, prawa to ID kanału Discord. Kilka kanałów pozwala rozdzielić chat staff od publicznego.
Kanał konsoli
Osobna sekcja na kopiowanie konsoli:
DiscordConsoleChannelId: "948273194820394822"
DiscordConsoleChannelUsageLog: true
DiscordConsoleChannelBlacklistedCommands:
- "?"
- "op"
- "deop"
- "stop"
Kanał musi być prywatny i dostępny tylko dla adminów. Każdy, kto może pisać w kanale, może wykonywać polecenia na serwerze.
MinecraftChatToDiscordMessageFormat
Format wiadomości z Minecrafta do Discord, edytujesz w messages.yml:
MinecraftChatToDiscordMessage:
Content: "%message%"
Webhook:
Enable: true
AvatarUrl: "https://mc-heads.net/avatar/%uuid%/128"
Username: "%username%"
Tryb webhook sprawia, że wiadomości wyglądają jak normalne wiadomości Discord: z avatarem głowy gracza i jego nickiem, zamiast postowania jako bot. Polecany.
DiscordChatChannelMinecraftMessage
Format dla odwrotnego kierunku: z Discord do Minecrafta.
DiscordToMinecraftChatMessageFormat: "&b[Discord] &r<%username%> %message%"
DiscordToMinecraftChatMessageFormatNoPrimaryGroup: "&b[Discord] &r<%username%> %message%"
Kolory przez &-kody. %username% to nick Discord, %message% to treść wiadomości.
Minimalny działający 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"
Zapisz, w grze wykonaj /discord reload, plugin podchwyci zmiany bez restartu serwera.
Powiązanie kont
Żeby DiscordSRV wiedział, który użytkownik Discord to który gracz, potrzebuje powiązania. Bez tego group sync i osobiste avatary nie działają.
Proces powiązania
- Gracz wpisuje
/discord linkw Minecraft - Plugin zwraca 4-cyfrowy kod, np.
4829 - Gracz wysyła botowi w Discord przez DM:
link 4829 - Bot odpowiada potwierdzeniem, powiązanie zapisane
Kod jednorazowy, wygasa (15 minut domyślnie). Rozłączenie: /discord unlink w grze lub unlink przez DM.
Auto-rola przy powiązaniu
linking.yml konfiguruje auto-nadawanie ról:
MinecraftDiscordAccountLinkedRoleNameToAddUserTo: "Verified"
MinecraftDiscordAccountLinkedConsoleCommands:
- "lp user %player% parent add verified"
- "say %player% powiazal Discord!"
Gracz dostanie rolę Verified w Discord i grupę verified w LuckPerms zaraz po powiązaniu. Wygodne, żeby oddzielić zweryfikowanych od losowych.
Wymuszenie powiązania
Można zablokować wejście na serwer dla niepowiązanych. W config.yml:
Require linked account to play:
Enabled: true
Subtract from online count: true
Kick message: "Powiaz Discord: /discord link | Invite: discord.gg/twojserwer"
Whitelisted players bypass check: true
Tylko powiązani wchodzą. Gracze z whitelisty mogą omijać.
Group sync
Jedna z najużyteczniejszych funkcji. Konfigurowana w synchronization.yml.
GroupRoleSynchronizationGroupsAndRolesToSync:
"admin": "948273194820394830"
"moderator": "948273194820394831"
"vip": "948273194820394832"
"donator": "948273194820394833"
"member": "948273194820394834"
GroupRoleSynchronizationOneWay: false
GroupRoleSynchronizationCycleTime: 10
Po lewej grupa LuckPerms (lub permission), po prawej ID roli Discord. Domyślnie sync jest dwukierunkowy: dostałeś admina w LuckPerms, dostałeś @Admin w Discord i odwrotnie.
OneWay: true każe DiscordSRV tylko czytać z Minecrafta i pisać do Discord, bez dotykania LuckPerms w drugą stronę. Bezpieczniej, jeśli nie chcesz, żeby ktoś z uprawnieniami Discord przypadkiem dostał uprawnienia na serwerze.
CycleTime: 10 to interwał w minutach dla przeliczania sync. Dodatkowo triggeruje się na zdarzenia (join, zmiana roli).
Hierarchia ról
Bot może nadawać tylko role, które są pod jego własną w hierarchii Discord. W ustawieniach serwera Discord przeciągnij rolę bota ponad wszystkie synchronizowane role. Inaczej dostaniesz Missing Permissions w konsoli.
Alerty
Plik alerts.yml. Pozwala wysłać dowolne zdarzenie serwera jako custom wiadomość do kanału.
Alerts:
- Trigger: "PlayerJoinEvent"
Async: true
Channel: "server-events"
Content: ":green_circle: **%player%** dolaczyl do serwera"
- Trigger: "PlayerDeathEvent"
Async: true
Channel: "server-events"
Content: ":skull: %player% zginal: `%event.deathMessage%`"
- Trigger: "PlayerAdvancementDoneEvent"
Async: true
Conditions:
- "event.advancement.display != null"
Channel: "server-events"
Content: ":trophy: **%player%** zdobyl **%event.advancement.display.title%**"
Triggery to dowolne zdarzenia Bukkit. Conditions pozwalają filtrować, np. pomijać ukryte osiągnięcia.
Dla zdarzeń serwera (start, stop, crash) są wbudowane w config.yml:
DiscordChatChannelServerStartupMessage: ":green_circle: Serwer uruchomiony"
DiscordChatChannelServerShutdownMessage: ":red_circle: Serwer zatrzymany"
Wiadomości webhook dla lepszego wyglądu
Jeśli włączysz w messages.yml:
MinecraftChatToDiscordMessage:
Webhook:
Enable: true
AvatarUrl: "https://mc-heads.net/avatar/%uuid%/128"
Username: "%username%"
Wiadomości z gry pokażą się jako osobni "użytkownicy" w Discord, każdy z własnym avatarem, głową Minecraft gracza. Wizualnie dużo lepiej niż bot wrzucający wszystko pod jednym imieniem.
Ważne: bot potrzebuje Manage Webhooks w kanale, inaczej nic nie działa. Discord ogranicza też liczbę wiadomości webhook na minutę. Na małym serwerze ok, przy 100+ online można trafić na limity. Wtedy wyłącz webhook lub rób batching.
Whitelist przez Discord
Można powiązać wejście na serwer z rolą Discord. Np. rola @Member ma dawać whitelist.
Przez group sync: mapuj @Member na grupę whitelisted w LuckPerms, która ma essentials.whitelist.bypass, albo dodawaj do whitelist.json przez custom polecenia:
MinecraftDiscordAccountLinkedConsoleCommands:
- "whitelist add %player%"
MinecraftDiscordAccountUnlinkedConsoleCommands:
- "whitelist remove %player%"
Albo napisz własny alert na RoleAddEvent DiscordSRV API przez plugin-dodatek. Dla większości serwerów starczy prosta kombinacja group sync.
Troubleshooting
"No such channel" przy starcie
Plugin loguje Could not find Discord channel by ID.... Przyczyny:
- ID kanału skopiowane źle (spacje, litery zamiast cyfr)
- Bot nie zaproszony na serwer, na którym jest kanał
- Bot nie ma uprawnienia View Channel
- Kanał to kategoria lub voice, a DiscordSRV oczekuje tekstowego
Sprawdź: ustawienia kanału Discord -> Permissions, znajdź rolę bota, włącz View Channel.
"Missing Permissions" przy nadawaniu ról
WARN: Tried to assign role but lacks permissions
Dwie przyczyny:
- Rola bota w hierarchii Discord niższa niż rola nadawana. Fix: przeciągnij rolę bota w Server -> Roles
- Bot nie ma Manage Roles. Fix: Server Settings -> Roles -> rola bota -> włącz Manage Roles
Wiadomości nie idą z Minecrafta do Discord
- Sprawdź, czy
globalwChannels:ma właściwe ID - Sprawdź, czy bot jest online (
/discordw grze pokazuje status) - Zajrzyj do konsoli serwera na błędy JDA (biblioteka używana przez DiscordSRV)
Wiadomości nie idą z Discord do Minecrafta
Prawie zawsze: Message Content Intent nie jest włączone w Developer Portal. Polityka Discord od 2022, bez tego intentu bot nie widzi treści. Włącz, zrestartuj serwer, sprawdź ponownie.
Webhook-i nie działają
- Bot nie ma Manage Webhooks w kanale
- Osiągnięty limit Discord (10 webhooków na kanał)
- Proxy/CDN blokuje wychodzące zapytania webhook z serwera Minecraft
Bot utknął na "Connecting..."
- Token zły lub zresetowany, wygeneruj nowy
- Token ma spacje lub nową linię
- Hosting blokuje połączenia wychodzące do gateway.discord.gg
Group sync działa tylko w jedną stronę
Sprawdź GroupRoleSynchronizationOneWay. Przy true sync idzie tylko MC -> Discord. Ustaw false dla dwukierunkowego.
Sprawdź też, czy grupy LuckPerms istnieją (/lp group <name> info).
Bezpieczeństwo i dobre praktyki
- Kanał konsoli tylko dla adminów. Każdy, kto może tam pisać, może wykonywać polecenia na serwerze. Dawaj dostęp tylko zaufanym
- Backup tokenu w menedżerze haseł. Przy wycieku natychmiast resetuj
- Osobne kanały według roli:
#minecraft-chatpubliczny,#staff-chatprywatny do moderacji,#server-eventsna alerty,#consoledla adminów - Unikaj webhook dla czatu przy 200+ online. Limity webhook Discorda zaczynają zawodzić
- Rola bota nad rolami sync. Oszczędza godziny debugowania
- Alerty z umiarem. Kanał z 100 alertów na minutę nikt nie czyta
- Aktualizuj DiscordSRV. Discord zmienia API regularnie, stare wersje dryfują
Lista kontrolna na koniec
- Plugin DiscordSRV w
plugins/, serwer uruchomiony, plugin zielony - Bot utworzony w Developer Portal, token zapisany
- Trzy privileged intents aktywne (SERVER_MEMBERS, MESSAGE_CONTENT, PRESENCE)
- Bot zaproszony przez URL OAuth2 z odpowiednimi uprawnieniami
- Developer Mode włączony, ID kanałów skopiowane
config.ymlmaBotToken,Channels,DiscordConsoleChannelIdwypełnionesynchronization.ymlustawione dla group sync (jeśli trzeba)- Rola bota nad wszystkimi rolami sync w hierarchii Discord
- Kanał konsoli prywatny
- Powiązanie konta przetestowane przez
/discord link - Wiadomości idą w obie strony
Jeśli wszystkie punkty są zaznaczone, DiscordSRV jest gotowy na produkcję. Dalej można dokładać dodatki: DiscordSRV-Reactions na emoji w grze, DiscordSRV-Voice na wyświetlanie kanałów głosowych, SRVLinker na rozszerzone wiązanie, i zamienić serwer w pełny ekosystem.
Chroń swój serwer przed atakami DDoS
Darmowa ochrona z konfiguracją w 5 minut. 1 TB ruchu w zestawie.
Wypróbuj za darmoPowiązane artykuły
TCPShield vs MineGuard: uczciwe porównanie ochrony DDoS dla Minecraft w 2026
Szczegółowe porównanie dwóch popularnych usług ochrony Minecraft przed atakami DDoS. Rozkładamy funkcje, ceny, wsparcie i pomagamy wybrać.
server.properties: pełna referencja wszystkich opcji (Minecraft 2026)
Każda linia server.properties w jednej referencji: co robi, wartość domyślna, co ustawić na SMP, minigrach i hardcore. Z nowościami 1.21: simulation-distance, log-ips, accept-transfers, enforce-secure-profile.
Ustawienia bezpieczeństwa Paper i Spigot: co włączyć, a co wyłączyć
Szczegółowy rozbiór ustawień bezpieczeństwa server.properties, spigot.yml, paper-global.yml, paper-world-defaults.yml i bukkit.yml. Każdy parametr z wyjaśnieniem, po co jest potrzebny, i gotowymi wartościami pod produkcję.