Przejdź do głównej zawartości

Schedule Events

System zaplanowanych wydarzeń z przypomnieniami i automatycznym odliczaniem. Wydarzenia definiuje się w dashboardzie, a instancje planuje za pomocą komend.

Komendy

/event schedule

Planuje nową instancję zapisanego wydarzenia na podaną datę i godzinę.

ParametrTypWymaganyOpis
event_namestringTakNazwa zapisanego wydarzenia (wyszukiwanie częściowe, case-insensitive)
datestringTakData w formacie YYYY-MM-DD
time_strstringTakGodzina w formacie 24h HH:MM

Uprawnienia: Administrator serwera

Przykład: /event schedule event_name:Kill Event date:2026-06-15 time_str:20:00

Sukces: Ephemeral potwierdzenie z nazwą, datą (Discord timestamp format — automatyczna konwersja stref czasowych) i odliczaniem
Błędy:

  • Brak uprawnień administratora
  • Wydarzenie nie znalezione (utwórz w dashboardzie)
  • Nieprawidłowy format daty/godziny
Strefa czasowa

Godzina jest interpretowana jako UTC+2 (CEST). Discord automatycznie konwertuje wyświetlanie na strefę czasową każdego użytkownika.


/event list

Wyświetla listę nadchodzących zaplanowanych wydarzeń.

ParametrTypWymaganyOpis
(brak)

Uprawnienia: Każdy (Everyone)

Przykład: /event list

Sukces: Embed "📅 Upcoming Events" z listą do 10 najbliższych wydarzeń (nazwa + data/czas + odliczanie)
Błędy:

  • Brak nadchodzących wydarzeń (ephemeral informacja)
Filtrowanie

Lista pokazuje tylko instancje ze statusem scheduled i datą w przyszłości. Przeszłe, anulowane i pominięte wydarzenia nie są wyświetlane.


/event cancel

Anuluje następną nadchodzącą instancję wydarzenia.

ParametrTypWymaganyOpis
event_namestringTakNazwa wydarzenia do anulowania (wyszukiwanie częściowe)

Uprawnienia: Administrator serwera

Przykład: /event cancel event_name:Kill Event

Sukces: Ephemeral potwierdzenie anulowania
Błędy:

  • Brak uprawnień administratora
  • Nie znaleziono nadchodzącej instancji z podaną nazwą

System przypomnień

Bot automatycznie wysyła przypomnienia przed rozpoczęciem wydarzenia:

Działanie pętli (co 30 sekund)

  1. Pobiera wszystkie instancje ze statusem scheduled zaczynające się w ciągu 24h
  2. Dla każdej instancji sprawdza skonfigurowane offsety przypomnień (reminder_offsets_minutes)
  3. Jeśli aktualny czas jest w oknie ±30s od czasu przypomnienia → wysyła embed
  4. Przed wysłaniem nowego przypomnienia kasuje poprzednie (anti-spam)
  5. Gdy wydarzenie się rozpoczyna → wysyła "🚀 Event is starting NOW!" (auto-delete po 15 min)

Przykład offsetów

Jeśli reminder_offsets_minutes = [60, 15, 5] i wydarzenie jest o 20:00:

  • 19:00 → przypomnienie "za 1 godzinę"
  • 19:45 → przypomnienie "za 15 minut"
  • 19:55 → przypomnienie "za 5 minut"
  • 20:00 → "Event is starting NOW!"

Pominięte wydarzenia

Jeśli bot był offline i wydarzenie minęło o ponad 1 godzinę, instancja jest automatycznie oznaczana jako missed (nie wysyła spóźnionych powiadomień).


Tworzenie wydarzeń

Wydarzenia (definicje/szablony) tworzy się w dashboardzie:

  1. Dashboard → Cog "Schedule Events" → Edit
  2. CRUD interfejs do tworzenia/edycji/usuwania eventów
  3. Każde wydarzenie ma:
    • Nazwę
    • Kanał (lub domyślny)
    • Szablon embeda (tytuł, opis, kolor, obrazy) z placeholderem {countdown}
    • Offsety przypomnień (lista minut przed startem)
    • Opcjonalny content (tekst nad embedem)

Placeholder {countdown}

W szablonie można użyć {countdown} — zostanie zastąpiony Discord timestamp relative (<t:UNIX:R>), który automatycznie pokazuje "za X minut/godzin".


Statusy instancji

StatusOpis
scheduledZaplanowana, oczekuje na start
startedWysłano wiadomość "starting NOW"
missedPominięta (bot offline / >1h po czasie)
cancelledAnulowana przez administratora

Konfiguracja

OpcjaOpisDomyślna wartość
default_channel_idDomyślny kanał dla wydarzeńbrak

Reszta konfiguracji (eventy, szablony, offsety) jest zarządzana per-event w dashboardzie i przechowywana w tabeli schedule_events w bazie danych.