Zaawansowany bot Discord o architekturze sterowanej zdarzeniami (Event-Driven), zaprojektowany specjalnie dla społeczności graczy sieci TGCraft (CraftHome). Projekt wyróżnia się autorskimi implementacjami systemów grywalizacji, automatyzacji konkursów oraz bezpośredniej integracji z relacyjnymi bazami danych przy użyciu natywnego API JDBC.
Innowacyjny moduł rozrywkowy pozwalający użytkownikom na wspólne, sekwencyjne odliczanie na dedykowanym kanale.
- Własny ewaluator wyrażeń (
MathExpressionEvaluator): Bot nie wymaga wpisywania czystych liczb. Zaimplementowano autorski parser przetwarzający stringi z operacjami matematycznymi (dodawanie, odejmowanie, mnożenie, dzielenie), pozwalający użytkownikom na wysyłanie wiadomości typu2+2*2zamiast6. - Walidacja reguł: System uniemożliwia jednej osobie wysłanie dwóch liczb z rzędu oraz natychmiastowo resetuje licznik w bazie danych w przypadku pomyłki.
Kompletne środowisko do organizacji asynchronicznych losowań nagród na serwerze.
- Wielowątkowy harmonogram: Obsługa cyklu życia konkursów w tle przy użyciu asynchronicznego planowania zadań (weryfikacja pozostałego czasu).
- Algorytm sprawiedliwego losowania (
GiveawayWinnerPicker): Zabezpieczony algorytm losowego wyłaniania zwycięzców spośród użytkowników, którzy weszli w interakcję z panelem (przy użyciu reakcji/przycisków).
Moduł automatyzujący obsługę zgłoszeń technicznych i administratorskich.
- Generowanie dynamicznych widoków Embed z interaktywnymi komponentami (Buttons).
- Izolacja uprawnień i tworzenie tymczasowych kanałów tekstowych dedykowanych parom użytkownik-skład administracyjny.
- Java 17 (Core features, Stream API, Concurrency)
- JDA (Java Discord API) 5.0.0-beta.13 (najnowszy standard interakcji z bramką Discorda)
- Natywne JDBC (wsparcie sterowników dla
mysql-connector-javaorazmariadb-java-client) - SLF4J (abstrakcja logowania zdarzeń sieciowych i aplikacji)
- Maven (zarządzanie zależnościami i cyklem budowania)
-
Sklonuj projekt lokalnie:
git clone https://github.com/Darsonn/tgcraftdiscordbot.git cd tgcraftdiscordbot -
Konfiguracja środowiska bazodanowego: Skonfiguruj instancję MySQL lub MariaDB. Aplikacja nawiązuje połączenie JDBC z bazą serwerową. Upewnij się, że odpowiednie tabele relacyjne dla systemów
tickets,giveawaysorazcountingsą poprawnie zainicjalizowane. -
Uruchomienie projektu: Projekt wykorzystuje architekturę przekazywania wrażliwych danych (token bota) poprzez argumenty wejściowe wiersza poleceń (
args[0]), co zapobiega wyciekom kluczy API do repozytorium.mvn clean package java -jar target/tgcraftdiscordbot-1.0-SNAPSHOT.jar <TWÓJ_TOKEN_DISCORD_BOT>
Projekt zorganizowany jest wokół architektury modułowej (Feature-Driven Structure):
bot/- Główna klasa inicjalizująca instancję bota i rejestrująca nasłuchiwanie zdarzeń (Listeners).bot/commands/- Definicje i kreatory komend typu Slash (CommandsCreator) oraz centralny punkt obsługi interakcji.bot/countingSystem/- Silnik systemu liczenia wraz z autorskimi klasami parsującymi matematyczne ciągi znaków.bot/giveaways/- Logika biznesowa, zarządcy wątków losujących oraz modele danych konkursowych.bot/ticketSystem/- Kontrolery przepływu zgłoszeń, logowanie zdarzeń administratorskich.bot/database/- Warstwa dostępu do danych (DAO/Rep) wykorzystująca natywne kwerendy SQL i strukturyPreparedStatement.