Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 

Repository files navigation

TGCraft Community Discord Bot

Java JDA Database

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.

🚀 Kluczowe systemy i moduły

1. Inteligentny system liczenia (Counting System)

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 typu 2+2*2 zamiast 6.
  • 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.

2. Zautomatyzowany menedżer konkursów (Giveaway System)

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).

3. System wsparcia (Ticket Support)

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.

🛠️ Stack technologiczny

  • 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-java oraz mariadb-java-client)
  • SLF4J (abstrakcja logowania zdarzeń sieciowych i aplikacji)
  • Maven (zarządzanie zależnościami i cyklem budowania)

⚙️ Wymagania wstępne i instalacja

  1. Sklonuj projekt lokalnie:

    git clone https://github.com/Darsonn/tgcraftdiscordbot.git
    cd tgcraftdiscordbot
  2. 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, giveaways oraz counting są poprawnie zainicjalizowane.

  3. 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>

🏗️ Struktura pakietów

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 struktury PreparedStatement.

About

Zaawansowany, wielowątkowy bot grywalizacyjny oparty na architekturze Event-Driven. Zawiera autorski parser i ewaluator wyrażeń matematycznych oraz wykorzystuje natywne zapytania JDBC do bezpośredniej integracji z bazą MySQL/MariaDB.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages