Discord to popularna platforma do komunikacji online, która zyskuje coraz większą popularność również w Polsce. Miliony użytkowników korzystają z niej na co dzień, tworząc własne społeczności i wymieniając się informacjami na różne tematy. Jedną z najciekawszych funkcji Discorda są boty - specjalne programy, które można dodać do serwera, aby zautomatyzować różne zadania i dodać nowe możliwości. W tym poradniku krok po kroku pokażemy, jak stworzyć własnego bota na Discord w języku Java.
Tworzenie projektu bota na Discord w Javie
Pierwszym krokiem do stworzenia bota na Discord jest utworzenie nowego projektu w Javie. Możesz użyć dowolnego środowiska programistycznego np. Eclipse lub IntelliJ IDEA. Ważne jest, aby utworzyć nowy projekt Java z pustą klasą główną. Klasa ta będzie zawierać cały kod naszego bota. Dobrze jest też dodać odpowiedni opis i nazwę dla projektu np. "MyBot". Dzięki temu nasz kod będzie dobrze zorganizowany od samego początku.
Konfiguracja projektu Java
Po utworzeniu nowego projektu Java, należy skonfigurować kilka rzeczy. Trzeba ustawić odpowiednią wersję JDK np. Java 11 lub 17, które mają długoterminowe wsparcie. Warto również dodać narzędzia budowania np. Maven lub Gradle, które ułatwią zarządzanie bibliotekami. Można też od razu dodać repozytoria np. Maven Central, aby usprawnić pobieranie zależności. Dzięki temu nasz projekt będzie gotowy do rozwoju i dodawania kolejnych funkcji bota.
Struktura projektu
Mając podstawowy projekt, warto pomyśleć o jego strukturze. Dobrze jest umieścić kod bota w osobnym pakiecie np. `com.mybot`. Warto też dodać osobne klasy dla różnych funkcji, zamiast trzymać cały kod w jednym pliku. Dzięki modułowej strukturze kod będzie bardziej czytelny i łatwiejszy w utrzymaniu. Można na przykład dodać osobne klasy do obsługi komend, logowania czy reakcji bota. Taka struktura pomoże w dalszym rozwoju naszego bota.
Instalacja biblioteki Discord4J
Podstawą naszego bota będzie biblioteka Discord4J, która ułatwia komunikację z API Discorda w Javie. Dzięki niej możemy w łatwy sposób odbierać zdarzenia z Discorda oraz wysyłać wiadomości i wykonywać inne akcje. Zintegrujmy więc tę bibliotekę z naszym projektem.
Dodawanie zależności
Pierwszym krokiem będzie dodanie samej biblioteki Discord4J jako zależności. W przypadku Mavena wystarczy dodać odpowiedni wpis w pliku `pom.xml`. Podobnie w Gradle można dodać zależność w pliku `build.gradle`. Dzięki temu biblioteka zostanie automatycznie pobrana przy kompilacji projektu.
Importowanie klas
Mając już zależność, możemy zaimportować potrzebne klasy z biblioteki Discord4J. W głównej klasie naszego bota dodajemy importy takich klas jak `DiscordClient`, `DiscordClientBuilder` czy `GatewayDiscordClient`. To pozwoli nam korzystać z funkcji biblioteki w dalszym kodzie.
Inicjalizacja klienta
Kluczowym elementem jest teraz utworzenie instancji klienta Discord4J, który połączy się z API Discorda. Robimy to przy pomocy klasy `DiscordClientBuilder`. Musimy przekazać do niej token bota, który wygenerujemy w dalszych krokach. Na razie można użyć dowolnego ciągu znaków jako token.
Czytaj więcej: Programowanie asertywne w Pythonie - poradnik z przykładami
Obsługa zdarzeń z Discorda
Teraz, gdy mamy połączenie z API Discorda, możemy zająć się odbieraniem zdarzeń i reagowaniem na nie. Discord4J udostępnia wiele metod, aby nasłuchiwać różnych zdarzeń jak np. nowe wiadomości czy wejście użytkownika na serwer.
Nasłuchiwanie wiadomości
Jednym z podstawowych zdarzeń jest przychodząca wiadomość od użytkownika. Aby je obsłużyć, możemy dodać prosty listener za pomocą metody `on` obiektu klienta. W jego wnętrzu możemy np. wypisać treść wiadomości lub przetworzyć ją dalej.
Reagowanie na komendy
Ciekawą opcją jest reagowanie tylko na wiadomości zawierające konkretne komendy. W tym celu możemy sprawdzić prefix wiadomości i jej dalszą zawartość. Jeśli użytkownik wpisał `!graj` to możemy np. uruchomić grę z botem.
Obsługa błędów
Ważne jest też obsłużenie potencjalnych błędów przy nasłuchiwaniu zdarzeń. Możemy na przykład dodać prosty catch, aby zapobiec przerwaniu działania bota przy wystąpieniu wyjątku. Pozwoli to zachować ciągłość jego działania.
Dodawanie funkcji bota
Mając podstawy związane z nasłuchiwaniem zdarzeń, możemy zaimplementować konkretne funkcje naszego bota. Discord4J udostępnia wiele metod do wysyłania wiadomości, dodawania reakcji czy integracji z grami.
Wysyłanie wiadomości
Jedną z podstawowych rzeczy, jakie może robić bot, jest wysyłanie wiadomości na czacie. Służy do tego metoda `sendMessage` obiektu kanału. Możemy wywołać ją np. w reakcji na konkretną komendę, aby bot odpowiedział użytkownikowi.
Reakcje na emoji
Ciekawą opcją jest też dodawanie reakcji emoji pod wiadomościami użytkowników. Może to być np. reakcja :+1: na podziękowanie lub :wave: na powitanie nowego członka. Służy do tego metoda `addReaction` obiektu wiadomości.
Gra w proste gry
Bardziej zaawansowaną opcją jest zintegrowanie bota z prostą grą jak kółko i krzyżyk. Możemy np. nasłuchiwać komendy "!graj" i rozpoczynać rozgrywkę z użytkownikiem. Wymaga to już więcej kodu, ale daje ciekawe możliwości interakcji.
Deploy bota na serwer Discord
Gdy mamy już gotowego bota, nadszedł czas aby uruchomić go na serwerze Discord. W tym celu musimy wygenerować specjalny token dla bota i dodać go do wybranego serwera.
Tworzenie aplikacji bota
Pierwszy krok to utworzenie specjalnej aplikacji bota na stronie developerskiej Discorda. Tam możemy ustawić nazwę, avatar i uprawnienia naszego bota. To pozwoli nam później go uruchomić.
Uzyskiwanie tokena bota
Kluczowym elementem jest wygenerowanie unikalnego tokena dla naszego bota. Jest to ciąg znaków, który służy do autoryzacji i logowania bota na Discordzie. Musimy go ustawić w kodzie za pomocą metody `setToken` obiektu klienta.
Dodawanie bota na serwer
Mając token, możemy dodać naszego bota na wybrany serwer Discord. W tym celu musimy wygenerować link z uprawnieniami i zaprosić bota. Możemy też to zrobić z poziomu ustawień serwera na Discordzie. Po chwili bot powinien połączyć się i działać na serwerze.
Zaawansowane funkcje i moduły
Mając działającego bota, możemy zaimplementować bardziej zaawansowane funkcje, aby zwiększyć jego możliwości. Discord4J i Java dają tu bardzo duże możliwości rozbudowy. Oto kilka pomysłów na rozwój bota.
System komend z parametrami
Bardzo przydatne może być stworzenie systemu komend z dodatkowymi parametrami. Na przykład komenda !powitanie {użytkownik} mogłaby wysłać spersonalizowaną wiadomość powitalną dla danej osoby.
Moduły administracyjne
Przydatnym rozszerzeniem są moduły administracyjne, pozwalające modom i adminom serwera na dodatkowe opcje. Można tu dodać komendy do banowania, wyrzucania czy wyciszania użytkowników.
Integracja z API Discord
Możliwości bota możemy mocno rozszerzyć wykorzystując dodatkowe endpointy API Discorda. Przykładem może być pobieranie listy użytkowników serwera lub szczegółów profilu osoby.
Jak widać, Java i Discord4J dają bardzo szerokie możliwości programowania własnych botów na Discordzie. Tworząc go krok po kroku możemy stopniowo rozbudowywać jego funkcje i dostosowywać bota do potrzeb naszej społeczności. Zapraszam do wypróbowania przedstawionych tu technik na własnym botem discordowym w Javie!