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ę.
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
| event_name | string | Tak | Nazwa zapisanego wydarzenia (wyszukiwanie częściowe, case-insensitive) |
| date | string | Tak | Data w formacie YYYY-MM-DD |
| time_str | string | Tak | Godzina 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
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ń.
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
| (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)
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.
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
| event_name | string | Tak | Nazwa 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)
- Pobiera wszystkie instancje ze statusem
scheduledzaczynające się w ciągu 24h - Dla każdej instancji sprawdza skonfigurowane offsety przypomnień (
reminder_offsets_minutes) - Jeśli aktualny czas jest w oknie ±30s od czasu przypomnienia → wysyła embed
- Przed wysłaniem nowego przypomnienia kasuje poprzednie (anti-spam)
- 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:
- Dashboard → Cog "Schedule Events" → Edit
- CRUD interfejs do tworzenia/edycji/usuwania eventów
- 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
| Status | Opis |
|---|---|
scheduled | Zaplanowana, oczekuje na start |
started | Wysłano wiadomość "starting NOW" |
missed | Pominięta (bot offline / >1h po czasie) |
cancelled | Anulowana przez administratora |
Konfiguracja
| Opcja | Opis | Domyślna wartość |
|---|---|---|
default_channel_id | Domyś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.