3.0 KiB
3.0 KiB
Skrzynka Impostora Bot - Instrukcje dla Copilot
Opis projektu
To jest projekt Discord Bot o nazwie "Skrzynka Impostora Bot" służący do zarządzania wiadomościami powiatalnymi na serwerach Discord. Projekt składa się z:
- Backend: Node.js + Express z biblioteką discord.js
- Frontend: React SPA (Single Page Application)
- Baza danych: PostgreSQL
- Funkcjonalności: Discord slash commands, panel web OAuth2, edytor wiadomości
Struktura projektu
/backend/ - Serwer Node.js i bot Discord
/commands/ - Slash commands dla Discord
/database/ - Zarządzanie bazą danych
/web/ - API serwer dla panelu web
/frontend/ - React aplikacja (panel administracyjny)
/src/components/ - Komponenty React
/src/pages/ - Strony aplikacji
/src/services/ - Serwisy API
/src/hooks/ - React hooks
/database/ - Skrypty migracji i seedowania
/shared/ - Współdzielone utilities
Kluczowe technologie
- Discord.js v14 - Biblioteka Discord API
- Express.js - Web framework
- PostgreSQL - Baza danych relacyjna
- React 18 - Frontend framework
- JWT - Autoryzacja
- OAuth2 - Logowanie przez Discord
Główne funkcjonalności
-
Slash Commands:
/skrzynka- komendy użytkownika/skrzynka-adm- komendy administracyjne
-
Panel Web:
- Logowanie przez Discord OAuth2
- Edytor wiadomości z podglądem
- Zarządzanie serwerami
- Historia zmian
-
Zarządzanie wiadomościami:
- Wsparcie Discord Markdown
- Live preview
- Walidacja długości (2000 znaków)
- Automatyczna aktualizacja na Discord
Style kodowania
- Używaj ES6+ składni
- Preferuj async/await nad Promise.then()
- Zastosuj destructuring tam gdzie możliwe
- Używaj const/let zamiast var
- Komponenty React jako funkcyjne z hooks
- Nazwy plików: PascalCase dla komponentów, camelCase dla utilities
Bezpieczeństwo
- Wszystkie zapytania API wymagają JWT token
- Walidacja danych wejściowych przez express-validator
- Helmet.js dla zabezpieczeń HTTP
- CORS skonfigurowany dla specific origins
- SQL prepared statements (pg library)
Środowisko i konfiguracja
- Zmienne środowiskowe w pliku .env
- Development: localhost:3000 (API), localhost:3001 (React)
- Production: buildy React serwowane przez Express
Konwencje nazewnictwa
- Tabele bazy: snake_case (np. welcome_messages)
- Kolumny bazy: snake_case (np. guild_id)
- JavaScript: camelCase (np. guildId)
- Komponenty React: PascalCase (np. MessageEditor)
- CSS classes: kebab-case (np. discord-button)
Pomocne wskazówki
- Bot wymaga uprawnień MANAGE_CHANNELS do działania
- Discord API ma limit 2000 znaków na wiadomość
- Używaj PostgreSQL JSONB dla embed_data
- Zawsze dodawaj error handling dla Discord API calls
- Frontend używa Tailwind-like CSS classes w App.css