Przejdź do głównej zawartości

System uprawnień

ArcBot wykorzystuje wielopoziomowy system uprawnień, który łączy natywne uprawnienia Discord z własną konfiguracją per-serwer.

Poziomy dostępu

1. Administrator Discord

Użytkownicy z uprawnieniem Administrator na serwerze mają pełny dostęp do:

  • Panelu konfiguracyjnego (dashboard)
  • Mianowania/usuwania prezydenta
  • Zarządzania sojuszami (tworzenie, usuwanie)
  • Planowania wydarzeń
  • Zatwierdzania/odrzucania sugestii, tworzenia ankiet, wysyłania embedów (bypass konfiguracji ról)
Wyjątek: komendy moderacyjne

Komendy moderacyjne (/ban, /kick, /mute, itp.) nie mają automatycznego bypassu dla administratorów. Użytkownik musi posiadać rolę z listy moderation_roles, nawet jeśli ma uprawnienie Administrator.

2. Role moderacyjne (moderation_roles)

Centralny mechanizm uprawnień dla większości funkcji bota. Lista ról konfigurowana w ustawieniach modułu Moderation.

Komendy wymagające roli moderacyjnej:

  • /ban, /kick, /mute, /unmute
  • /warn, /warnings
  • /clear, /setnick
  • /role add, /role remove

Inne moduły odwołujące się do moderation_roles:

  • Suggestions — zatwierdzanie/odrzucanie sugestii (gdy manage_permission = "moderation_roles")
  • Polls — tworzenie ankiet (gdy create_permission = "moderation_roles")
  • Message Builder — wysyłanie embedów (gdy send_permission = "moderation_roles")
Konfiguracja

Dashboard → Twój serwer → Edit Moderation → sekcja "Moderation Roles"

Dodaj role, które mają pełnić funkcję moderatorów. Możesz dodać wiele ról.

3. Uprawnienia per-moduł (Custom Roles)

Niektóre moduły pozwalają na konfigurację własnych list ról, niezależnych od moderation_roles:

ModułUstawienieOpcje
Suggestionsmanage_permission"moderation_roles" lub "custom" + manage_roles
Pollscreate_permission"everyone", "moderation_roles", lub "custom" + create_roles
Message Buildersend_permission"moderation_roles" lub "custom" + send_roles
Presidentsappoint_rolesLista ról mogących mianować prezydenta
Alliancesmanagement_rolesLista ról zarządzających sojuszami

4. Rangi w sojuszach (R1–R5)

System wewnętrzny modułu Alliances:

RangaUprawnienia
R5 (Lider)Wszystko: promote, demote, invite, kick, transfer
R4 (Oficer)Invite, kick (tylko R1–R3)
R3Brak uprawnień zarządczych
R2Brak uprawnień zarządczych
R1Brak uprawnień zarządczych

5. Prezydent

Aktualny prezydent serwera (moduł Presidents) ma dodatkowe uprawnienia:

  • Wydawanie dekretów (/president decree)
  • Zarządzanie armory slots (/armory assign, /armory clear)

Dostęp do dashboardu

Kto może korzystać z dashboardu?

  1. Administratorzy Discord — automatyczny dostęp
  2. Dashboard Users — użytkownicy dodani ręcznie do listy

Konfiguracja Dashboard Users

W ustawieniach serwera (kafelek Settings) znajduje się sekcja Dashboard Users. Pozwala ona nadać dostęp do panelu konfiguracyjnego osobom bez uprawnienia Administrator.

wskazówka

Użyj tej funkcji, aby dać dostęp zaufanym moderatorom do dashboardu bez nadawania im pełnych uprawnień administratora na serwerze Discord.

ostrzeżenie

Dashboard Users mają pełny dostęp do konfiguracji bota dla danego serwera — mogą włączać/wyłączać moduły, zmieniać ustawienia, itp. Dodawaj tylko zaufane osoby.

Hierarchia ról Discord

Bot respektuje hierarchię ról Discord przy wykonywaniu akcji moderacyjnych:

  • Moderator nie może banować/kickać/mutować użytkowników z wyższą rolą
  • Bot nie może zarządzać rolami wyższymi od swojej własnej roli
  • Bot nie może banować/kickać/mutować użytkowników z rolą wyższą od roli bota
Owner
├── Admin ← moderator NIE może moderować Admina
├── [ArcBot] ← rola bota — musi być wyżej od zarządzanych ról
├── Moderator ← może moderować: Członek
├── Członek
└── @everyone
Częsty problem

Jeśli bot odpowiada "Missing permission" mimo prawidłowej konfiguracji, sprawdź pozycję roli bota w Ustawienia serwera → Role. Rola bota musi być wyżej niż role, którymi ma zarządzać.

Weryfikacja uprawnień — flow

Gdy użytkownik wywołuje komendę:

  1. Czy moduł jest włączony? → sprawdzenie enabled_cogs (decorator @guild_cog_enabled)
  2. Czy użytkownik ma rolę z listy? → sprawdzenie moderation_roles lub custom roles
  3. Czy hierarchia ról pozwala? → porównanie pozycji ról (issuer vs target)
  4. Czy bot ma uprawnienia Discord? → sprawdzenie bot.guild_permissions

Jeśli którykolwiek krok się nie powiedzie, użytkownik otrzymuje efemeralną (widoczną tylko dla niego) wiadomość z odpowiednim błędem.

Komendy bez ograniczeń

Następujące komendy nie wymagają specjalnych uprawnień (dostępne dla każdego):

  • /suggest — zgłaszanie sugestii (chyba że serwer ograniczy to do ról)
  • /poll — tworzenie ankiet (gdy create_permission = "everyone")
  • /setlang — ustawianie preferencji językowych
  • /languages — lista dostępnych języków
  • /alliance info — podgląd informacji o sojuszu
  • /alliance list — lista sojuszy
  • /alliance leave — opuszczenie sojuszu
  • /event list — lista nadchodzących wydarzeń
  • /president info — informacje o aktualnym prezydencie
  • /president history — historia prezydentów