79 lines
3.5 KiB
Markdown
79 lines
3.5 KiB
Markdown
# Założenia biznesowe dla projektu Skrzynka Impostora Bot
|
||
|
||
## 1. Wprowadzenie
|
||
Celem projektu jest stworzenie kompleksowego bota Discordowego „Skrzynka Impostora Bot”, który umożliwi automatyczne wysyłanie przyjaznej, konfigurowalnej wiadomości powitalnej na wskazanym kanale (#witamy) i jej bieżącą aktualizację za pomocą panelu web.
|
||
|
||
## 2. Cele biznesowe
|
||
- **Zwiększenie angażowania użytkowników** poprzez automatyczne i atrakcyjne powitania.
|
||
- **Usprawnienie komunikacji** i skrócenie czasu wdrożenia nowych członków.
|
||
- **Łatwe zarządzanie treścią** wiadomości przez administratorów bez konieczności ingerencji w kod.
|
||
|
||
## 3. Zakres projektu
|
||
- **Wersja 1.0 (etap pierwszy):**
|
||
1. Integracja bota z Discord API.
|
||
2. Wysyłanie domyślnej wiadomości powitalnej na wskazany kanał #witamy.
|
||
3. Panel web do edycji treści i konfiguracji kanału powitalnego.
|
||
4. Obsługa wielu wariantów wiadomości (częściowo dzielona, carouseli, linki, emoji).
|
||
|
||
## 4. Wymagania funkcjonalne
|
||
1. **Konfiguracja kanału powitalnego**
|
||
- Możliwość wskazania przez panel web ID lub nazwy kanału.
|
||
- Walidacja uprawnień bota.
|
||
2. **Edytor wiadomości**
|
||
- Pole tekstowe z podglądem Discord Markdown.
|
||
- Dynamiczne zarządzanie linkami (URL Discord, przyciski, embedy).
|
||
3. **Publikacja wiadomości**
|
||
- Usuwanie / aktualizacja poprzedniej wersji.
|
||
- Automatyczne wysyłanie po zapisaniu zmian.
|
||
|
||
|
||
|
||
## 5. Wymagania niefunkcjonalne
|
||
- **Wydajność:** Wysłanie i aktualizacja < 500 ms.
|
||
- **Dostępność:** ≥ 99,5% czasu działania.
|
||
- **Bezpieczeństwo:** login i hasło zahashowane, możliwość zmiany hasła,
|
||
- Kod: JavaScript (Node.js), bazy danych SQL (PostgreSQL/MySQL).
|
||
- Bot uruchamiany przez docker compose (v2)
|
||
|
||
## 6. Technologia i architektura
|
||
- **Backend:** Node.js + Express/Koa.
|
||
- **Baza danych:** SQL (PostgreSQL lub MySQL).
|
||
- **Frontend panelu web:** Prosty web panel html + js.
|
||
- **Integracja Discord API:** Biblioteka discord.js.
|
||
|
||
## 7. Formatowanie wiadomości powitalnej
|
||
- Wsparcie Discord Markdown (nagłówki, listy, linki, kanały, wzmianki, emoji).
|
||
- Automatyczne dzielenie treści na kilka embedów, jeśli przekracza limit znaków (2000).
|
||
- Wbudowane zmienne szablonowe (np. `{{user}}`, `{{server}}`, `{{date}}`).
|
||
|
||
## 8. Panel web
|
||
- **Logowanie:** Login i hasło
|
||
- **Dashboard:**
|
||
- Wybór serwera (lista guilds).
|
||
- Konfiguracja kanału powitalnego.
|
||
- Edytor treści z live preview.
|
||
- Historia wersji i rollback.
|
||
|
||
## 9. Zarządzanie danymi
|
||
- Tabele: `Guilds`, `WelcomeChannels`, `Messages`, `Users`, `Revisions`.
|
||
- Schematy relacyjne i indeksy na kolumnach ID oraz timestamp.
|
||
|
||
## 10. Interfejs Slash Commands
|
||
Bot obsługuje komendy slash w Discord:
|
||
|
||
- `/skrzynka` – komendy dla użytkowników (lista dostępnych funkcji).
|
||
- `/skrzynka-adm` – komendy administracyjne.
|
||
|
||
### Komendy administracyjne:
|
||
- `/skrzynka-adm set welcome <channel_id>` – ustawia kanał, na którym będzie wyświetlana wiadomość powitalna.
|
||
- `/skrzynka-adm welcome` – wysyła wiadomość powitalną na skonfigurowanym kanale.
|
||
- `/skrzynka-adm welcome update` – aktualizuje istniejącą wiadomość powitalną z bazy.
|
||
|
||
Zarządzanie kanałem i treścią odbywa się przez panel web po zapisaniu zmian w bazie danych.
|
||
|
||
## 11. Kryteria akceptacji
|
||
- Bot poprawnie wysyła i aktualizuje wiadomość powitalną.
|
||
- Panel web pozwala edytować treść i wybór kanału.
|
||
- Przekroczenie limitów Discord (2000 znaków) jest obsłużone.
|
||
- Dokumentacja API i instrukcja użytkownika.
|