# Konfiguracja Discord 1. Otwórz [Discord Developer Portal](https://discord.com/developers/applications) i utwórz aplikację. 2. W General Information skopiuj Application ID do `DISCORD_CLIENT_ID`. 3. W OAuth2 skopiuj Client Secret do `DISCORD_CLIENT_SECRET`. 4. Dodaj Redirect URI dokładnie: `http://localhost:5173/api/auth/discord/callback`. 5. W zakładce Bot wygeneruj token i zapisz go jako `DISCORD_BOT_TOKEN`. Sekrety wpisuj lokalnie do .env; nie wysyłaj ich na kanały Discord. 6. Włącz **Message Content Intent**. Jest wymagany do rozpoznawania `KG: tekst`. Bez tego można korzystać z `/pisz`, lecz proces bota w tej wersji żąda tego intentu przy połączeniu, więc musi być włączony w Developer Portal. 7. W sekcji instalacji wybierz instalację na serwerze (**Guild Install**). Dla zaproszenia bota wybierz zakresy `bot` oraz `applications.commands`. 8. Nadaj uprawnienia: - View Channels - Send Messages - Read Message History - Manage Webhooks - Manage Messages: potrzebne do usuwania oryginału po udanym proxy. 9. Zainstaluj bota na swoim serwerze. Nie wymaga uprawnienia Administrator. 10. Uruchom wspólny zestaw poleceniem python -m rp_bot.main. Po komunikacie o połączeniu zaloguj się do panelu. Logowanie OAuth2 prosi tylko o `identify guilds`. 11. Do testowania komend ustaw `DISCORD_TEST_GUILD_ID`. W przeciwnym razie komendy są synchronizowane globalnie, a ich propagacja może potrwać. Jeśli dodasz bota na nowy serwer po zalogowaniu do panelu, wyloguj się i zaloguj ponownie, aby odświeżyć listę wspólnych serwerów. API dodatkowo sprawdza aktualne członkostwo przed każdą operacją na serwerze. ## Dostępne komendy | Komenda | Działanie | | --- | --- | | `/pomoc` | Interaktywny katalog komend | | `/about` | Informacje o DarkRP | | `/panel` | Link do panelu | | `/postacie` | Własne karty postaci, skróty, statusy i ID | | `/nowa-postac nazwa skrot` | Formularz nowej karty w panelu | | `/pisz tekst [skrot] [preset]` | Wiadomość jako własna postać RP | | `/scena [id_sceny]` | Informacje o dostępnej scenie | Polecenie kontekstowe **Aplikacje → Edytuj wiadomość RP** jest dostępne przy wiadomościach. Pozostałe polecenia są w `drp! pomoc`. Możesz użyć `drp!`, `DRP!`, `Drp!` albo wzmianki o bocie jako prefiksu. ## Skróty - Przykłady: `KG:text`, `KG: tekst`, `nocny-kruk: *otwiera drzwi*`. - Skrót jest osobisty, przypisany do postaci w konkretnym świecie i serwerze. - `KG: tekst` i `WD: tekst` wybierają odpowiednie własne karty niezależnie od siebie. Nie wymagają przełączania aktywnej postaci. Inny gracz może mieć te same skróty. Uprawnienia kadry do edycji kart nie pozwalają pisać cudzą postacią. - Karta może mieć do 8 dodatkowych aliasów. Opcjonalny wybór aktywnej postaci jest używany w `/pisz`, gdy pominięto parametr `skrot`. - Wielkość liter nie ma znaczenia; stosowana jest normalizacja Unicode NFKC i casefold. - Długość: od 1 do 24 znaków po normalizacji. Bez spacji, dwukropka wewnątrz, @, #, backticków, ukośników oraz znaków sterujących. Końcowy dwukropek przy konfiguracji jest opcjonalny. - Wiadomość musi mieć niepustą treść i maksymalnie 2000 znaków po odcięciu skrótu. - Wiadomości z załącznikami lub stickerami nie są automatycznie zastępowane. - Obsługiwane są skonfigurowane kanały tekstowe i ogłoszeniowe oraz dostępne, otwarte wątki i posty forum. Konfigurację świata pobiera się z kanału nadrzędnego. Wątki zamknięte lub zarchiwizowane są odrzucane; dostęp do prywatnego wątku jest dodatkowo sprawdzany. - Wzmianki są całkowicie wyłączone w wiadomości webhooka, a podglądy linków zablokowane. - Czynności można pisać jako Markdown, np. `KG: *powoli podnosi wzrok*`. Presety przypisane do postaci oraz własne znaczniki przed tekstem i po nim edytuje się w panelu: Postacie, Pisanie postacią. Obsługiwane jest też `/pisz` z parametrem preset; wartość `bez` pomija formatowanie. - Oryginał jest usuwany po potwierdzonym wysłaniu i zatwierdzeniu transakcji w bazie. Bez Manage Messages pozostaje obok wiadomości postaci. Przy błędzie wysyłki pozostaje nienaruszony. - Limit RP: 8 wiadomości na 10 sekund na użytkownika i serwer. ## Logowanie na domenie Dodaj w ustawieniach aplikacji Discord dokładny adres HTTPS kończący się na `/api/auth/discord/callback`. To osobny adres przekierowania od wpisu dla localhost. Kroki konfiguracji panelu i testu logowania są w [instrukcji wdrożenia pod domeną](DEPLOY_DOMAIN.md). Źródła: [Discord OAuth2](https://docs.discord.com/developers/topics/oauth2), [discord.py: API](https://discordpy.readthedocs.io/en/stable/api.html). Wspólny start bota, API i panelu: [STARTUP.md](STARTUP.md). Flaga --standalone uruchamia wyłącznie proces Discord.