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)
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")
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ł | Ustawienie | Opcje |
|---|---|---|
| Suggestions | manage_permission | "moderation_roles" lub "custom" + manage_roles |
| Polls | create_permission | "everyone", "moderation_roles", lub "custom" + create_roles |
| Message Builder | send_permission | "moderation_roles" lub "custom" + send_roles |
| Presidents | appoint_roles | Lista ról mogących mianować prezydenta |
| Alliances | management_roles | Lista ról zarządzających sojuszami |
4. Rangi w sojuszach (R1–R5)
System wewnętrzny modułu Alliances:
| Ranga | Uprawnienia |
|---|---|
| R5 (Lider) | Wszystko: promote, demote, invite, kick, transfer |
| R4 (Oficer) | Invite, kick (tylko R1–R3) |
| R3 | Brak uprawnień zarządczych |
| R2 | Brak uprawnień zarządczych |
| R1 | Brak 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?
- Administratorzy Discord — automatyczny dostęp
- 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.
Użyj tej funkcji, aby dać dostęp zaufanym moderatorom do dashboardu bez nadawania im pełnych uprawnień administratora na serwerze Discord.
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
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ę:
- Czy moduł jest włączony? → sprawdzenie
enabled_cogs(decorator@guild_cog_enabled) - Czy użytkownik ma rolę z listy? → sprawdzenie
moderation_roleslub custom roles - Czy hierarchia ról pozwala? → porównanie pozycji ról (issuer vs target)
- 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 (gdycreate_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