Allianzen (Alliances)
Das Alliances-Modul verwaltet Allianzen im Spiel Dark War Survival: Erstellung, Löschung, Mitgliedschaft mit Ranghierarchie (R1–R5), Tags, Integration mit Discord-Rollen und optional mit dem Reaction-Roles-Modul.
Modul aktivieren
- Dashboard → Ihr Server → Toggle Alliances
- Klicken Sie auf Edit, um Moduloptionen zu konfigurieren
- Speichern Sie die Änderungen
Konfiguration
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
max_alliances | number | 10 | Maximale Anzahl von Allianzen pro Server |
max_members | number | 50 | Maximale Mitgliederzahl pro Allianz |
auto_reaction_role | boolean | false | Automatische Synchronisierung mit Reaction Roles |
reaction_role_index | number / null | null | Index des zu synchronisierenden Reaction-Roles-Panels |
management_roles | Liste | [] | Rollen, die Allianzen verwalten können (neben Admins) |
r5_roles | Liste | [] | Zusätzliche Rollen für R5-Anführer |
r4_roles | Liste | [] | Zusätzliche Rollen für R4-Offiziere |
Rangsystem
| Rang | Name | Berechtigungen |
|---|---|---|
| R5 | Anführer | Alles: create (wenn R5 in irgendeiner Allianz), invite, kick (alle), promote, demote, transfer |
| R4 | Offizier | Invite, kick (nur R1–R3) |
| R3 | — | Keine Verwaltungsberechtigungen |
| R2 | — | Keine Verwaltungsberechtigungen |
| R1 | — | Keine Verwaltungsberechtigungen (Standardrang neuer Mitglieder) |
Tag-System
Jede Allianz hat einen kurzen Tag (1–5 alphanumerische Zeichen):
- Der Benutzer gibt ein:
KNS - Das System speichert:
[KNS] - Discord-Rolle:
[KNS] Alliance Name
Tags müssen innerhalb des Servers eindeutig sein.
Dashboard — Konfiguration
Das Bearbeitungspanel von Alliances im Dashboard enthält:
- Listenansicht — Karten aller Allianzen mit Informationen
- Detailansicht — nach Klick auf eine Allianz: Mitgliederliste, Ränge, Aktionen
- Konfiguration — max alliances, max members, management roles, auto-reaction-role
Befehle
/alliance create
Erstellt eine neue Allianz.
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
name | ✅ | Allianzname (2–32 Zeichen: Buchstaben, Ziffern, Leerzeichen, Bindestriche) |
tag | ✅ | Kurztag (1–5 alphanumerische Zeichen) |
color | ❌ | Rollenfarbe Hex (Standard #5865F2) |
Voraussetzungen: Administrator, management_roles oder R5 in irgendeiner Allianz.
Ablauf:
- Validierung von Name und Tag
- Prüfung des Allianz-Limits
- Prüfung auf Duplikate bei Name und Tag
- Einfügen des Datensatzes in die DB (mit Platzhalter role_id)
- Erstellung der Discord-Rolle
[TAG] Namemit angegebener Farbe - Aktualisierung des Datensatzes mit role_id
- Hinzufügen des Erstellers als R5
- Zuweisung der Rolle an den Ersteller
- Optionale Synchronisierung mit Reaction Roles
- Log + Antwort
Wenn die Erstellung der Discord-Rolle fehlschlägt, wird der Datenbankdatensatz automatisch gelöscht (DB-first-Ansatz mit Rollback).
/alliance delete
Löscht eine Allianz (nur Administrator).
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
name | ✅ | Name der zu löschenden Allianz |
Löscht: DB-Datensatz + alliance_members (CASCADE) + Discord-Rolle + Reaction-Roles-Bereinigung.
/alliance invite
Lädt einen Benutzer in die Allianz ein (R4/R5).
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
member | ✅ | Einzuladender Benutzer |
Fügt mit Rang R1 hinzu. Der Benutzer darf nicht in einer anderen Allianz sein.
/alliance kick
Wirft einen Benutzer aus der Allianz (R4/R5).
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
member | ✅ | Zu entfernender Benutzer |
R4 kann nur R1–R3 entfernen. R5 kann alle außer sich selbst entfernen.
/alliance leave
Verlässt die aktuelle Allianz.
R5 kann nicht verlassen ohne vorheriges /alliance transfer.
/alliance promote
Befördert ein Mitglied um 1 Rang (nur R5, max bis R4).
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
member | ✅ | Zu befördernder Benutzer |
/alliance demote
Degradiert ein Mitglied um 1 Rang (nur R5, min R1).
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
member | ✅ | Zu degradierender Benutzer |
/alliance transfer
Übergibt die Führung an ein anderes Allianz-Mitglied (nur R5).
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
member | ✅ | Neuer Anführer |
Neuer Anführer → R5, alter Anführer → R4. Wird in einer DB-Transaktion ausgeführt.
/alliance info
Zeigt Allianz-Informationen mit Mitgliederliste gruppiert nach Rängen.
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
name | ❌ | Allianzname (Standard: eigene Allianz des Benutzers) |
/alliance list
Liste aller aktiven Allianzen auf dem Server mit Mitgliederzahl und Anführer.
Überwachte Ereignisse
| Ereignis | Aktion |
|---|---|
on_member_remove | Entfernung aus Allianz + Auto-Sukzession R5 |
on_member_update | Integration mit Reaction Roles (Hinzufügen/Entfernen der Allianzrolle) |
Auto-Sukzession (on_member_remove)
Wenn der Anführer (R5) den Server verlässt:
- Wird aus
alliance_membersentfernt - Wenn andere Mitglieder vorhanden → der höchstrangige (R4 > R3 > R2 > R1, nach Dienstalter
joined_at) wird auf R5 befördert - Wenn keine Mitglieder übrig → Allianz wird als
is_active = FALSEmarkiert
Integration mit Reaction Roles (on_member_update)
Wenn auto_reaction_role = true und ein Benutzer eine Allianzrolle über Reaction Roles erhält/verliert:
Rollenzuweisung:
- Wenn in anderer Allianz → Rolle entfernt, Log "rejected"
- Wenn in derselben Allianz → idempotent, ignoriert
- Wenn in keiner Allianz → als R1 hinzugefügt
Rollenentfernung:
- Aus
alliance_membersentfernt
Protokollierung
Aktionen werden durch Logs unter der Kategorie alliances protokolliert:
- ⚔️ Alliance Created
- 🗑️ Alliance Deleted
- ➕ Member Added / Invited
- ➖ Member Removed / Kicked
- ⬆️ Member Promoted
- ⬇️ Member Demoted
- 👑 Leadership Transferred
- 🚪 Member Left / Departed Guild
- 💤 Alliance Deactivated
- 🚫 Reaction Role Rejected (Multi-Allianz-Konflikt)
Datenbank
| Tabelle | Beschreibung |
|---|---|
alliances | id, guild_id, name, tag, role_id, color, is_active, created_at |
alliance_members | id, alliance_id, user_id, rank, joined_at |
Tipps
- Setzen Sie
max_memberspassend zur Servergröße - Aktivieren Sie
auto_reaction_role, damit Benutzer selbst Allianzen beitreten können - Tags sollten kurz und erkennbar sein (z.B.
KNS,DWS,ARC) - Prüfen Sie regelmäßig, ob R5-Anführer aktiv sind — inaktive können Allianzen blockieren
Das Löschen einer Allianz ist unwiderruflich — die Discord-Rolle und alle Mitgliederdatensätze werden dauerhaft gelöscht.