Przejdź do głównej zawartości

Zaplanowane wydarzenia (Schedule Events)

Moduł Schedule Events zarządza zaplanowanymi wydarzeniami gry z systemem przypomnień, odliczaniem i automatycznym czyszczeniem. Idealny do eventów w Dark War Survival takich jak KvK, War Rally, czy inne cykliczne aktywności.

Włączanie modułu

  1. Dashboard → Twój serwer → toggle Schedule Events
  2. Kliknij Edit aby utworzyć definicje wydarzeń
  3. Zaplanuj instancje komendami lub z dashboardu
  4. Zapisz zmiany

Konfiguracja

OpcjaTypDomyślnieOpis
default_channel_idstring / nullnullDomyślny kanał dla przypomnień

Definicje wydarzeń (tworzenie w dashboardzie)

Każda definicja wydarzenia zawiera:

  • name — nazwa wydarzenia
  • template — szablon embeda (tytuł, opis, kolor, obrazek)
  • channel_id — kanał przypomnień (lub null → używa default)
  • reminder_offsets_minutes — lista offsetów (np. [60, 30, 10] = 1h, 30m, 10m przed)
  • is_active — czy definicja jest aktywna

Dashboard — konfiguracja

Panel edycji Schedule Events zawiera:

  • Default Channel — dropdown
  • Event Definitions — CRUD lista definicji:
    • Tworzenie nowej definicji (nazwa, szablon, kanał, offsety)
    • Edycja istniejącej
    • Usuwanie
  • Instances — podgląd zaplanowanych instancji (nadchodzące)

Filtrowanie

Dashboard i komenda /event list wyświetlają tylko przyszłe wydarzenia (status = 'scheduled' AND starts_at > now). Przeszłe/ukończone nie są pokazywane.

Komendy

/event schedule

Planuje nową instancję zapisanego wydarzenia.

ParametrWymaganyOpis
event_nameNazwa definicji wydarzenia (ILIKE search)
dateData (YYYY-MM-DD)
time_strGodzina (HH:MM, format 24h)

Wymagania: Administrator.

Przykład:

/event schedule event_name:KvK date:2026-06-15 time_str:20:00
Strefa czasowa

Czas jest interpretowany jako UTC+2 (CEST). Instancja jest zapisywana z odpowiednim timezone-aware datetime.

/event list

Wyświetla nadchodzące zaplanowane wydarzenia (max 10).

Każdy wpis zawiera:

  • Nazwa wydarzenia
  • Data/czas (Discord timestamp: pełny + relative)

/event cancel

Anuluje najbliższą instancję wydarzenia.

ParametrWymaganyOpis
event_nameNazwa wydarzenia do anulowania

Wymagania: Administrator.

Zmienia status instancji na 'cancelled'.

System przypomnień

Przypomnienia wysyłane automatycznie na podstawie reminder_offsets_minutes:

Przykład: offsets = [60, 30, 10]

  • 60 minut przed → embed "Event starts in 1 hour"
  • 30 minut przed → embed (zastępuje poprzedni)
  • 10 minut przed → embed (zastępuje poprzedni)
  • 0 minut (start) → embed "🚀 Event is starting NOW!" (auto-delete po 15 min)

Automatyczne czyszczenie

  • Każde nowe przypomnienie usuwa poprzednie (tylko 1 wiadomość na kanale)
  • Wiadomość "starting NOW" auto-kasuje się po 15 minutach
  • Kanał pozostaje czysty

Placeholder {countdown}

W szablonach przypomnień można użyć {countdown} — zostanie zastąpiony Discord relative timestamp (np. <t:1718474400:R> → "in 30 minutes").

Statusy instancji

StatusOpis
scheduledZaplanowana, oczekuje na start
startedRozpoczęła się (wiadomość "NOW!" wysłana)
cancelledAnulowana przez admina
missedPrzegapiona (>1h po planowanym starcie bez wysłania)

Auto-oznaczanie "missed"

Jeśli bot nie zdążył obsłużyć instancji (np. był offline) i minęła więcej niż 1 godzina od starts_at, instancja jest automatycznie oznaczana jako 'missed' zamiast wysyłania opóźnionego powiadomienia.

Zadanie cykliczne

_check_loop — co 30 sekund:

  1. Pobiera wszystkie instancje scheduled w ciągu najbliższych 24h
  2. Dla każdej sprawdza czy nadszedł czas na:
    • Przypomnienie (w oknie 30s od offset trigger)
    • Start (now >= starts_at)
    • Oznaczenie jako missed (>1h po starcie)

Baza danych

TabelaOpis
schedule_eventsDefinicje wydarzeń (name, template, channel_id, reminder_offsets, is_active)
schedule_instancesZaplanowane instancje (event_id, guild_id, starts_at, status, last_reminder_message_id)

Logowanie

Moduł Schedule Events nie posiada dedykowanej kategorii logów. Akcje są śledzone przez statusy instancji w bazie danych.

Wskazówki

Best practices
  • Twórz definicje dla powtarzających się eventów (KvK, Rally, itp.)
  • Ustaw 2-3 offsety przypomnień (np. 60, 30, 10 minut przed)
  • Użyj {countdown} w opisie szablonu — Discord wyświetli dynamiczne odliczanie
  • Dedykowany kanał (np. #events) utrzyma porządek dzięki auto-czyszczeniu
Cykliczne wydarzenia

Dla wydarzeń powtarzających się co tydzień, zaplanuj kilka instancji z wyprzedzeniem. Dashboard pozwala szybko dodawać instancje.

ostrzeżenie

Definicje wydarzeń tworzy się w dashboardzie. Komenda /event schedule służy tylko do planowania instancji istniejących definicji.