Files
SkrzynkaImpostora/bot/.github/copilot-instructions.md
2025-07-21 00:45:28 +02:00

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

  1. Slash Commands:

    • /skrzynka - komendy użytkownika
    • /skrzynka-adm - komendy administracyjne
  2. Panel Web:

    • Logowanie przez Discord OAuth2
    • Edytor wiadomości z podglądem
    • Zarządzanie serwerami
    • Historia zmian
  3. 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