Alegacy Discord Bot

Funkcjonalności

Zarządzanie miastami i frakcjami

Bot prowadzi rejestr miast i frakcji przechowywany w plikach JSON. Każde miasto posiada właściciela, listę graczy, rolę Discord służącą do kontroli dostępu, krótki tag, opcjonalny opis oraz opcjonalne przypisanie do frakcji. Frakcje skupiają miasta pod miastem-liderem i posiadają własną rolę, tag oraz opis. Miasta mogą zdecydować, czy w grze wyświetlany będzie ich własny tag, czy tag frakcji — z poziomu konsoli Pterodactyl. Bot obsługuje wyszukiwanie nazw miast i frakcji bez rozróżniania wielkości liter.

System zgłoszeń

Gracze składają wnioski o utworzenie miasta lub frakcji za pomocą interaktywnych formularzy Discord. Wnioski o miasto obsługiwane są przez wieloetapowy kreator wykorzystujący okna modalne do wprowadzenia podstawowych informacji, listy mieszkańców i zaufanych graczy oraz opcjonalnych ustawień Discord. Wnioski o frakcję wymagają wskazania miasta-lidera liczącego co najmniej 20 graczy. Zgłoszenia trafiają na konfigurowalne kanały recenzji, gdzie administratorzy zatwierdzają je lub odrzucają za pomocą trwałych przycisków. Po zatwierdzeniu wniosku bot tworzy odpowiednie miasto lub frakcję i opcjonalnie powiadamia wnioskodawcę wiadomością prywatną.

Integracja z serwerem gry

Bot łączy się z panelem Pterodactyl, aby wysyłać polecenia konsolowe do serwera gry. Mechanizm ten służy do nadawania lub usuwania tagów graczy przy dołączaniu do miast bądź ich opuszczaniu, a także do uruchamiania zaplanowanych lub jednorazowych poleceń. Integracja z Pterodactyl umożliwia również pobieranie plików logów na potrzeby monitorowania.

Automatyczne polecenia przy dołączeniu gracza

Administratorzy mogą skonfigurować polecenia wykonywane automatycznie, gdy określeni gracze dołączają do serwera. Bot nasłuchuje na wskazanym kanale określonych wiadomości — po wykryciu pasującego nicku gracza wykonuje powiązane polecenie przez Pterodactyl i usuwa wpis (działanie jednorazowe).

Narzędzia administracyjne

Administratorzy mogą ustawiać kanał czatu serwera, zarządzać administratorami bota, konfigurować kanały przyjmowania wniosków o miasta i frakcje, a także tworzyć lub edytować miasta i frakcje bezpośrednio — w tym przypisywać role, właścicieli i tagi. Dostępne są również opcje zmiany nazw miast i frakcji, wyciszania użytkowników, zarządzania tagami oraz zbierania i przeglądania logów. Grupy komend slash, takie jak cityadmin i factionadmin, korzystają z natywnych uprawnień administratora Discord do kontroli dostępu.

Stos technologiczny

Projekt napisany jest w Pythonie i wykorzystuje bibliotekę discord.py do integracji z API Discord. Konfiguracja wczytywana jest ze zmiennych środowiskowych za pomocą python-dotenv. Asynchroniczne żądania HTTP obsługiwane są przez aiohttp. Klient Pterodactyl dostarczany jest przez bibliotekę py-dactyl. Dane przechowywane są w plikach JSON obejmujących miasta, frakcje, zgłoszenia, polecenia graczy oraz ustawienia bota. Logowanie skonfigurowane jest do równoczesnego zapisu do pliku logu i na konsolę. Bot działa jako usługa systemd z niebuforowanym wyjściem Pythona przekazywanym do sysloga.