Geplante Ereignisse (Schedule Events)
Das Schedule-Events-Modul verwaltet geplante Spielereignisse mit Erinnerungssystem, Countdown und automatischer Bereinigung. Ideal für Events in Dark War Survival wie KvK, War Rally oder andere wiederkehrende Aktivitäten.
Modul aktivieren
- Dashboard → Ihr Server → Toggle Schedule Events
- Klicken Sie auf Edit, um Ereignisdefinitionen zu erstellen
- Planen Sie Instanzen per Befehl oder über das Dashboard
- Speichern Sie die Änderungen
Konfiguration
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
default_channel_id | string / null | null | Standardkanal für Erinnerungen |
Ereignisdefinitionen (Erstellung im Dashboard)
Jede Ereignisdefinition enthält:
- name — Ereignisname
- template — Embed-Vorlage (Titel, Beschreibung, Farbe, Bild)
- channel_id — Erinnerungskanal (oder null → verwendet Standard)
- reminder_offsets_minutes — Liste der Offsets (z.B. [60, 30, 10] = 1h, 30m, 10m vorher)
- is_active — ob die Definition aktiv ist
Dashboard — Konfiguration
Das Bearbeitungspanel von Schedule Events enthält:
- Default Channel — Dropdown
- Event Definitions — CRUD-Liste der Definitionen:
- Neue Definition erstellen (Name, Vorlage, Kanal, Offsets)
- Bestehende bearbeiten
- Löschen
- Instances — Übersicht geplanter Instanzen (bevorstehende)
Filterung
Dashboard und Befehl /event list zeigen nur zukünftige Ereignisse an (status = 'scheduled' AND starts_at > now). Vergangene/abgeschlossene werden nicht angezeigt.
Befehle
/event schedule
Plant eine neue Instanz eines gespeicherten Ereignisses.
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
event_name | ✅ | Name der Ereignisdefinition (ILIKE-Suche) |
date | ✅ | Datum (YYYY-MM-DD) |
time_str | ✅ | Uhrzeit (HH:MM, 24-Stunden-Format) |
Voraussetzungen: Administrator.
Beispiel:
/event schedule event_name:KvK date:2026-06-15 time_str:20:00
Die Zeit wird als UTC+2 (MESZ) interpretiert. Die Instanz wird mit dem entsprechenden timezone-aware Datetime gespeichert.
/event list
Zeigt bevorstehende geplante Ereignisse an (max 10).
Jeder Eintrag enthält:
- Ereignisname
- Datum/Uhrzeit (Discord-Timestamp: vollständig + relativ)
/event cancel
Storniert die nächste Instanz eines Ereignisses.
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
event_name | ✅ | Name des zu stornierenden Ereignisses |
Voraussetzungen: Administrator.
Ändert den Status der Instanz auf 'cancelled'.
Erinnerungssystem
Erinnerungen werden automatisch basierend auf reminder_offsets_minutes gesendet:
Beispiel: offsets = [60, 30, 10]
- 60 Minuten vorher → Embed "Event starts in 1 hour"
- 30 Minuten vorher → Embed (ersetzt vorheriges)
- 10 Minuten vorher → Embed (ersetzt vorheriges)
- 0 Minuten (Start) → Embed "🚀 Event is starting NOW!" (Auto-Löschung nach 15 Min)
Automatische Bereinigung
- Jede neue Erinnerung löscht die vorherige (nur 1 Nachricht im Kanal)
- Die "starting NOW"-Nachricht löscht sich nach 15 Minuten automatisch
- Der Kanal bleibt sauber
Platzhalter {countdown}
In Erinnerungsvorlagen kann {countdown} verwendet werden — wird durch Discord Relative Timestamp ersetzt (z.B. <t:1718474400:R> → "in 30 minutes").
Instanz-Status
| Status | Beschreibung |
|---|---|
scheduled | Geplant, wartet auf Start |
started | Gestartet ("NOW!"-Nachricht gesendet) |
cancelled | Vom Admin storniert |
missed | Verpasst (>1h nach geplantem Start ohne Versand) |
Auto-Markierung als "missed"
Wenn der Bot eine Instanz nicht rechtzeitig verarbeiten konnte (z.B. offline war) und mehr als 1 Stunde seit starts_at vergangen ist, wird die Instanz automatisch als 'missed' markiert, anstatt eine verspätete Benachrichtigung zu senden.
Zyklische Aufgabe
_check_loop — alle 30 Sekunden:
- Ruft alle scheduled-Instanzen innerhalb der nächsten 24h ab
- Prüft für jede, ob es Zeit ist für:
- Erinnerung (im 30s-Fenster ab Offset-Trigger)
- Start (now >= starts_at)
- Markierung als missed (>1h nach Start)
Datenbank
| Tabelle | Beschreibung |
|---|---|
schedule_events | Ereignisdefinitionen (name, template, channel_id, reminder_offsets, is_active) |
schedule_instances | Geplante Instanzen (event_id, guild_id, starts_at, status, last_reminder_message_id) |
Protokollierung
Das Schedule-Events-Modul hat keine dedizierte Log-Kategorie. Aktionen werden über die Instanz-Status in der Datenbank verfolgt.
Tipps
- Erstellen Sie Definitionen für wiederkehrende Events (KvK, Rally usw.)
- Setzen Sie 2–3 Erinnerungs-Offsets (z.B. 60, 30, 10 Minuten vorher)
- Verwenden Sie
{countdown}in der Vorlagenbeschreibung — Discord zeigt einen dynamischen Countdown an - Ein dedizierter Kanal (z.B.
#events) bleibt dank Auto-Bereinigung ordentlich
Für wöchentlich wiederkehrende Events planen Sie mehrere Instanzen im Voraus. Das Dashboard ermöglicht schnelles Hinzufügen von Instanzen.
Ereignisdefinitionen werden im Dashboard erstellt. Der Befehl /event schedule dient nur zur Planung von Instanzen bestehender Definitionen.