first commit

This commit is contained in:
2025-07-21 00:45:28 +02:00
parent ab10b0f9a1
commit 93232a1663
39 changed files with 4860 additions and 0 deletions

85
bot/.github/copilot-instructions.md vendored Normal file
View File

@@ -0,0 +1,85 @@
<!-- 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