Wprowadzenie
OpenClaw zapewnia pełną integrację z Discordem przez oficjalne Bot API. Obsługiwane są wiadomości prywatne (DM), kanały gildii, wątki, fora, komponenty interaktywne v2 oraz natywne komendy slash. Integracja jest gotowa do użycia produkcyjnego i oferuje rozbudowane opcje konfiguracyjne.
Tworzenie bota Discord
Proces konfiguracji obejmuje następujące kroki:
- Utwórz aplikację — przejdź do Discord Developer Portal i utwórz nową aplikację z użytkownikiem bota
- Włącz intenty — w ustawieniach bota włącz Message Content Intent (wymagany), Server Members Intent (zalecany) i opcjonalnie Presence Intent
- Wygeneruj token — kliknij „Reset Token" w zakładce Bot, aby uzyskać token autoryzacyjny
- Skonfiguruj OAuth2 — ustaw zakresy (
bot,applications.commands) i uprawnienia: View Channels, Send Messages, Read Message History, Embed Links, Attach Files, opcjonalnie Add Reactions - Włącz tryb dewelopera — w ustawieniach Discord włącz Developer Mode, aby mieć dostęp do numerycznych ID serwerów, użytkowników i kanałów
- Prywatność DM — na serwerze włącz opcję pozwalającą członkom na wysyłanie wiadomości bezpośrednich
Konfiguracja tokenu
Ustaw token bota jako zmienną środowiskową przed uruchomieniem Gateway:
export DISCORD_BOT_TOKEN="twoj-token-bota-discord"
Alternatywnie możesz podać token bezpośrednio w pliku konfiguracyjnym, choć zmienne środowiskowe są bezpieczniejsze.
Uruchomienie i parowanie
- Uruchom Gateway poleceniem
openclaw gateway - Wyślij wiadomość prywatną do bota — wygeneruje się kod parowania
- Zatwierdź kod:
openclaw pairing approve discord KOD - Opcjonalnie skonfiguruj gildię z izolowanymi sesjami na kanałach
Kontrola dostępu
Polityka wiadomości prywatnych
OpenClaw oferuje cztery tryby obsługi DM:
- pairing (domyślny) — nieznani nadawcy otrzymują kod parowania do zatwierdzenia
- allowlist — dostęp mają tylko użytkownicy z listy dozwolonych
- open — każdy może pisać do bota (wymaga jawnej konfiguracji)
- disabled — DM są całkowicie zablokowane
Polityka gildii
- open — bot odpowiada na wszystkich serwerach
- allowlist (domyślny gdy istnieje konfiguracja discord) — tylko wskazane gildie są dozwolone
- disabled — wiadomości z gildii są blokowane
Routing na podstawie ról
Możesz kierować członków gildii do określonych agentów na podstawie ich roli Discord. Powiązania oparte na rolach są ewaluowane po powiązaniach peer/parent-peer, ale przed powiązaniami opartymi wyłącznie na gildii. Wszystkie skonfigurowane pola dopasowania muszą pasować jednocześnie.
Kanały i wątki
Standardowe kanały
- Limit historii domyślnie wynosi 20 wiadomości (konfigurowalny przez
historyLimit) - Tematy kanałów są wstrzykiwane do kontekstu jako niezaufane dane
- Wątkowanie jest obsługiwane z powiązaniem sesji nadrzędnej
Kanały forum i media
Tworzenie wątków na forach odbywa się na dwa sposoby:
- Wysłanie wiadomości do rodzica forum — wątek tworzy się automatycznie
- Jawne polecenie tworzenia wątku z parametrem tytułu
Rodzice forów odrzucają komponenty Discord — w ich miejsce korzystaj z wątków.
Komponenty interaktywne
System obsługuje komponenty Discord v2, w tym kontenery z następującymi blokami:
- Typy bloków: tekst, sekcja, separator, akcje, galeria mediów, plik
- Wiersze akcji: do 5 przycisków lub jedno menu wyboru na wiersz
- Typy menu: string, user, role, mentionable, channel
- Formularze modalne: do 5 pól (tekst, checkbox, radio, select)
Komponenty są domyślnie jednorazowe — włącz reusable: true dla wielokrotnych interakcji. Możesz ograniczyć dostęp przez allowedUsers i ustawić niestandardowy kolor akcentu za pomocą wartości hex.
Komendy slash
Natywne komendy slash są domyślnie włączone (commands.native="auto") i zwracają odpowiedzi efemeryczne, widoczne tylko dla wywołującego. Uwierzytelnianie komend odbywa się identycznie jak dla zwykłych wiadomości — przez te same listy dozwolonych i polityki. Polecenia /model i /models udostępniają interaktywny selektor dostawcy i modelu.
Streaming odpowiedzi
Sterowanie podglądem na żywo odbywa się przez ustawienie replyToMode:
- off (domyślnie) — brak podglądu strumieniowego
- partial — edytuje pojedynczą wiadomość podglądu w miarę napływania tokenów
- block — emituje fragmenty o konfigurowalnym rozmiarze (domyślnie 200-800 znaków, preferowane dzielenie na akapity)
- progress — mapowany na tryb partial na Discordzie
Integracja głosowa
Bot może dołączać do kanałów głosowych Discord, jeśli posiada odpowiednie uprawnienia (Connect + Speak). Sterowanie odbywa się komendami:
/vc join— dołączenie do kanału głosowego/vc leave— opuszczenie kanału/vc status— sprawdzenie statusu
Możliwa jest konfiguracja automatycznego dołączania do wybranych kanałów po starcie Gateway oraz nadpisanie ustawień Text-to-Speech.
Bramy akcji
OpenClaw kontroluje, jakie akcje bot może wykonywać na Discordzie. Domyślnie włączone grupy to: reakcje, wiadomości, wątki, przypięcia, ankiety, wyszukiwanie, informacje o członkach, rolach i kanałach, wydarzenia, naklejki i emoji. Wyłączone domyślnie są: zarządzanie rolami, moderacja i status obecności.
Status i obecność
Konfiguracja statusu bota obejmuje:
- Status: online, idle (bezczynny), dnd (nie przeszkadzać), invisible (niewidoczny)
- Typy aktywności: Gra, Streamuje, Słucha, Ogląda, Niestandardowy, Rywalizuje
- Auto-obecność: automatyczne mapowanie stanu zdrowia runtime na status Discord (zdrowy → online, zdegradowany → idle, wyczerpany → dnd)
Rozwiązywanie problemów
- Problemy z intentami — sprawdź, czy Message Content Intent jest włączony; po zmianach zrestartuj Gateway
- Blokowanie gildii — zweryfikuj
groupPolicy, listy dozwolonych gildii i kanałów, ustawieniarequireMention - Brak odpowiedzi na DM — sprawdź
dm.enabled,dmPolicyi status parowania - Pętla botów — włącz
allowBotstylko z rygorystycznymi regułami wzmianek; preferujallowBots="mentions" - Awarie STT — zaktualizuj OpenClaw, potwierdź
daveEncryption=true