Notatki operatora
DiscordSRV: integracja czatu Minecraft z Discordem
Praktyczny przewodnik po DiscordSRV, pluginie, który łączy czat z serwera Minecraft z kanałem na Discordzie. Od utworzenia bota w Discord Developer Portal, przez token i intencje, podstawowy config.yml, linkowanie kont graczy, po synchronizację rang z LuckPerms i najczęstsze błędy. Z perspektywy kogoś, kto już raz tłumaczył, czemu „bot się łączy, ale nic nie pisze”.
W skrócie: DiscordSRV to plugin na Spigot/Paper, który robi most między czatem w grze a kanałem na Discordzie, plus powiadomienia o wejściach i śmierciach oraz linkowanie kont. Tworzysz bota w discord.com/developers, włączasz Message Content Intent i Server Members Intent, kopiujesz token do config.yml (pole BotToken) i podajesz ID kanału w Channels. Gracze łączą konta komendą /discord link, a rangi synchronizujesz z LuckPerms w pliku synchronization.yml. Jeśli nie chcesz grzebać w plikach, weź hosting z gotową obsługą wtyczek.
Czym jest DiscordSRV i co właściwie robi
DiscordSRV to jeden z najpopularniejszych pluginów łączących serwer Minecraft ze społecznością na Discordzie. Jego sercem jest most czatu: wiadomości napisane na serwerze pojawiają się na wybranym kanale Discorda, a wpisy z tego kanału trafiają na czat w grze. Dzięki temu osoby, które akurat nie grają, dalej są w kontakcie z resztą ekipy.
Poza samym czatem DiscordSRV oferuje kilka rzeczy, które na żywym serwerze szybko stają się niezbędne:
- Powiadomienia o zdarzeniach: wejścia i wyjścia graczy, śmierci, czasem osiągnięcia, wysyłane na kanał Discorda.
- Linkowanie kont gracz-Discord: gracz wiąże swoje konto Minecraft z kontem Discord, co odblokowuje funkcje zależne od tożsamości.
- Synchronizacja rang i ról: ranga z serwera (z pluginu uprawnień jak LuckPerms) zamienia się w rolę na Discordzie i odwrotnie.
- Kanał konsoli: opcjonalnie podgląd konsoli serwera i wykonywanie komend z Discorda, z kontrolą dostępu przez role.
W tym przewodniku skupiam się na rdzeniu, którego potrzebuje każdy: most czatu, linkowanie kont i synchronizacja rang. Resztę dołożysz później, gdy podstawa już działa.
Wymagania
Zanim cokolwiek pobierzesz, upewnij się, że masz dwie rzeczy:
- Serwer Spigot lub Paper. DiscordSRV to plugin Bukkit, więc potrzebuje serwera zgodnego z Bukkit, czyli Spigot albo Paper (Paper jest dziś standardem). Na czystym vanilla nie zadziała. Plugin obsługuje współczesne wersje Minecraft, więc na typowym serwerze nie ma z tym problemu.
- Bota Discord i serwer Discord. Musisz mieć własny serwer (guild) na Discordzie z uprawnieniami administratora oraz aplikację bota, którą za chwilę utworzysz. Bot to osobne konto, które DiscordSRV obsługuje w Twoim imieniu.
Opcjonalnie, jeśli planujesz synchronizację rang, przyda się plugin uprawnień, najczęściej LuckPerms. Bez niego most czatu i linkowanie kont i tak zadziałają.
Utworzenie bota w Discord Developer Portal
To krok, który najczęściej idzie nie tak, więc zrób go dokładnie. Cała robota dzieje się w panelu discord.com/developers/applications.
- Utwórz aplikację. Kliknij New Application, nadaj jej nazwę (to będzie nazwa bota widoczna na Discordzie) i potwierdź.
- Przejdź do zakładki Bot. W menu po lewej wybierz Bot. To tu zarządzasz tożsamością i uprawnieniami bota.
- Włącz wymagane intencje (Gateway Intents). To kluczowy moment. W sekcji Privileged Gateway Intents włącz:
- Message Content Intent, bez tego bot nie widzi treści wiadomości i most czatu nie zadziała w stronę Discord do gry,
- Server Members Intent, potrzebny do funkcji powiązanych z członkami serwera, w tym do synchronizacji rang.
- Pobierz token bota. W zakładce Bot kliknij Reset Token i skopiuj wygenerowany ciąg. To hasło do bota, potraktuj je jak sekret. Zostaw odznaczoną opcję Public Bot, żeby nikt obcy nie zaprosił Twojego bota na swój serwer.
- Zaproś bota na swój serwer Discord. Skopiuj Application ID i użyj go w narzędziu autoryzacji DiscordSRV, żeby dodać bota do swojego guildu. Następnie utwórz dla niego rolę z odpowiednimi uprawnieniami (na start często nadaje się rolę z uprawnieniem administratora, później można ją zawęzić).
Pamiętaj: token bota i intencje to dwa najczęstsze powody, że „nic nie działa”. Jeśli zapomnisz włączyć Message Content Intent, bot się połączy i będzie widać go online, ale wiadomości z Discorda nie trafią na czat. Zawsze sprawdzaj te dwa punkty w pierwszej kolejności.
Instalacja pluginu i podstawowy config.yml
Mając bota, czas wgrać sam plugin i go skonfigurować:
- Pobierz DiscordSRV. Ściągnij plik
.jarz oficjalnego źródła w wersji pasującej do wersji serwera. - Wrzuć do folderu plugins. Skopiuj plik
.jardo kataloguplugins/i zrestartuj serwer. Przy pierwszym starcie DiscordSRV utworzy folderplugins/DiscordSRVz plikiemconfig.yml. - Wstaw token. Otwórz
plugins/DiscordSRV/config.ymli w poluBotTokenwklej token skopiowany z Developer Portal. - Podaj kanał czatu. Włącz na Discordzie Tryb dewelopera (Developer Mode w ustawieniach), kliknij prawym na kanał i wybierz Copy ID. To ID wstawiasz w sekcji
Channelspod kluczemglobal(to wewnętrzny kanał gry, mapowany na kanał Discorda). - Przeładuj lub zrestartuj. Uruchom ponownie serwer (albo wpisz
/discord reload). W konsoli powinien pojawić się komunikat, że bot się połączył.
Minimalny fragment config.yml wygląda tak:
BotToken: "TWOJ_TOKEN_BOTA"
Channels: {"global": "ID_KANALU_DISCORD"}
Klucz global to domyślny kanał gry, a wartość po prawej to ID kanału na Discordzie, na który ma trafiać czat. Możesz dodać kolejne pary, gdy zechcesz mostkować więcej kanałów. Opcjonalnie ustawisz też pole DiscordConsoleChannelId, jeśli chcesz mieć kanał z konsolą serwera.
Linkowanie kont gracz-Discord
Most czatu działa od razu, ale funkcje zależne od tożsamości (synchronizacja rang, pseudonimu) wymagają, żeby gracz połączył swoje konto Minecraft z kontem Discord. Proces jest prosty:
- Gracz wpisuje na serwerze komendę
/discord link. - DiscordSRV odpowiada mu czterocyfrowym kodem.
- Gracz wysyła ten kod w prywatnej wiadomości do bota na Discordzie.
- Po wpisaniu kodu konta są połączone, gotowe.
Komenda dla gracza wymaga uprawnienia discordsrv.link. Jeśli musisz połączyć cudze konta ręcznie (na przykład gracz ma problem), administrator robi to komendą /discord link <gracz> <DiscordID> z uprawnieniem discordsrv.link.others.
Synchronizacja rang z LuckPerms
To funkcja, dla której wielu operatorów w ogóle wdraża DiscordSRV: ranga zdobyta na serwerze automatycznie nadaje graczowi odpowiednią rolę na Discordzie. Żeby zadziałała, potrzebujesz trzech rzeczy: pluginu uprawnień (najczęściej LuckPerms), połączonych kont graczy i poprawnego mapowania w konfiguracji.
Mapowanie ustawiasz w pliku plugins/DiscordSRV/synchronization.yml, w kluczu GroupRoleSynchronizationGroupsAndRolesToSync. To słownik par: nazwa grupy w Minecraft do ID roli na Discordzie:
GroupRoleSynchronizationGroupsAndRolesToSync: {"vip": "680679725206994947", "admin": "680679790025506861"}
Kilka rzeczy, które warto zapamiętać:
- Wielkość liter ma znaczenie. Mapowanie jest czułe na wielkość liter, więc nazwa grupy (po lewej) musi się dokładnie zgadzać z nazwą grupy w LuckPerms.
- ID roli, nie nazwa. Po prawej podajesz numeryczne ID roli Discord (skopiowane w trybie dewelopera), a nie jej nazwę.
- Tylko dla połączonych kont. Synchronizacja zadziała wyłącznie dla graczy, którzy wcześniej zrobili
/discord link. - Po zmianie przeładuj. Po edycji pliku wpisz
/discord reload, żeby DiscordSRV wczytał nowe mapowanie.
Przy większej liczbie grup wygodnie jest projektować rangi w LuckPerms i role na Discordzie równolegle, jedna ranga = jedna rola, żeby mapowanie było czytelne. Jak zbudować same rangi, opisuje osobny wpis o LuckPerms.
Przydatne komendy
Garść komend do trzymania pod ręką.
| Komenda | Co robi |
|---|---|
/discord link | Rozpoczyna linkowanie konta gracza, zwraca czterocyfrowy kod do wpisania botowi (uprawnienie discordsrv.link). |
/discord link <gracz> <DiscordID> | Administracyjne połączenie cudzych kont (uprawnienie discordsrv.link.others). |
/discord reload | Przeładowuje konfigurację pluginu (część zmian i tak wymaga restartu serwera). |
/discord | Wyświetla informacje pomocnicze pluginu. |
Typowe problemy
- Bot łączy się, ale nie przekazuje wiadomości. Najczęściej brak włączonej Message Content Intent w Developer Portal. Włącz ją (i Server Members Intent), a potem zrestartuj serwer Minecraft.
- Plugin nie startuje, błąd o tokenie. Sprawdź pole
BotTokenwconfig.yml, czy token jest kompletny i w cudzysłowach. Jeśli token wyciekł lub był publikowany, zresetuj go w Developer Portal i wstaw nowy. - Czat trafia do złego kanału albo donikąd. Zweryfikuj ID w sekcji
Channelspod kluczemglobal. To musi być numeryczne ID kanału (z trybu dewelopera), a nie jego nazwa. - Bot nie ma prawa pisać na kanale. Upewnij się, że rola bota ma na docelowym kanale uprawnienia do czytania i wysyłania wiadomości. Brak uprawnień na poziomie kanału Discord blokuje most niezależnie od poprawnego config.yml.
- Rangi się nie synchronizują. Sprawdź po kolei: czy gracz zrobił
/discord link, czy nazwa grupy wsynchronization.ymldokładnie (z wielkością liter) zgadza się z LuckPerms, czy podałeś ID roli a nie nazwę, i czy po zmianach zrobiłeś/discord reload.
Najczęstsze pytania
Czy do DiscordSRV trzeba mieć Spigot albo Paper?
Tak. DiscordSRV to plugin Bukkit, więc działa na Spigot i Paper (Paper jest standardem). Na czystym vanilla nie zadziała. Wgrywasz plik .jar do folderu plugins i restartujesz serwer.
Dlaczego bot nie czyta czatu, choć łączy się z Discordem?
Zwykle brak włączonej Message Content Intent w Developer Portal. Włącz ją oraz Server Members Intent w zakładce Bot i zrestartuj serwer Minecraft.
Jaką komendą gracz łączy konto Minecraft z Discordem?
Gracz wpisuje /discord link, dostaje czterocyfrowy kod i wysyła go w prywatnej wiadomości do bota. Komenda wymaga uprawnienia discordsrv.link.
Jak zsynchronizować rangi z rolami na Discordzie?
Potrzebujesz pluginu uprawnień (LuckPerms) i połączonych kont. Mapowanie ustawiasz w synchronization.yml w kluczu GroupRoleSynchronizationGroupsAndRolesToSync (para: nazwa grupy do ID roli). Po zmianie wpisz /discord reload.
Czy token bota jest bezpieczny w config.yml?
Token wklejasz tylko do pola BotToken w config.yml. To hasło do bota, nie publikuj go nigdzie. Jeśli wyciekł, zresetuj go w Developer Portal i trzymaj wyłączoną opcję Public Bot.
Powiązane
- Jeśli nie chcesz ręcznie wgrywać pluginów i pilnować zgodności wersji, gotowy serwer z obsługą wtyczek znajdziesz w hostingu Minecraft Java w Supercraft, DiscordSRV wgrywasz przez panel, a serwer aktualizuje się sam.
- LuckPerms: rangi i uprawnienia na serwerze Minecraft
- PlaceholderAPI: zmienne i placeholdery na serwerze Minecraft
- EssentialsX: podstawowe komendy i funkcje serwera
- Jak zrobić serwer Minecraft: od zera do pierwszego logowania