86 lines
3.0 KiB
Markdown
86 lines
3.0 KiB
Markdown
<!-- Use this file to provide workspace-specific custom instructions to Copilot. For more details, visit https://code.visualstudio.com/docs/copilot/copilot-customization#_use-a-githubcopilotinstructionsmd-file -->
|
|
|
|
# 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
|