Files
ZeasyAlexandClaude Opus 5 994ce4faf0 Discord: Knopf fuer die Live-Ping-Rolle statt Onboarding
Live-Ping nuetzt nur, wenn man sie sich selbst geben kann. Discords
Onboarding waere der vorgesehene Weg, laesst sich hier aber nicht
einschalten - gemessen, nicht vermutet:

  HTTP 400  Cannot enable onboarding, requirements are not met  (350000)
  sichtbar fuer @everyone: 5   davon beschreibbar: 3
  Discord verlangt:        7   davon beschreibbar: 5

Zwei Kanaele anzulegen, damit eine Schwelle passt, macht den Server leerer
statt besser. Stattdessen ein Knopf unter dem Willkommenstext: ein Druck
holt die Rolle, der naechste gibt sie ab, die Antwort sieht nur, wer
geklickt hat.

Der Knopf braucht eine dauerhafte Verbindung, weil Discord Klicks ans
Gateway oder an eine oeffentliche HTTPS-Adresse liefert und der Stream-PC
keine hat:

- gateway.ts   WebSocket mit Herzschlag, Fortsetzen und Wiederverbinden.
               Bei 4004 und Verwandten wird aufgegeben statt im Kreis zu
               laufen - dagegen hilft nur eine Aenderung an der App.
               intents: 0, der Bot sieht weder Nachrichten noch Mitglieder.
- selfroles.ts Knopfleiste und Rollenwechsel.
- bot.ts       beides zusammen, laeuft im Ingest-Daemon mit. Ohne
               hinterlegtes Token entfaellt er wortlos.

Neuer Befehl `abdulive discord:bot` zum Ausprobieren; im Normalbetrieb
haengt der Bot im Daemon und meldet sich als discordConnected auf der
Statusseite.

Die Knopfleiste gehoert zum Soll-Zustand des Willkommenstextes: fehlt sie,
wird sie nachgereicht, ohne die Nachricht neu zu posten.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 21:59:08 +02:00

1.3 KiB

@abdulive/discord

Discord-Anbindung: ein kleiner REST-Client und das Einrichten des Community-Servers.

Datei Inhalt
src/permissions.ts Rechtebits als BigInt (das Feld ist 64 Bit breit)
src/api.ts REST-Client: Warteschlange, Rate Limits, lesbare Fehler
src/plan.ts Der Bauplan: Rollen, Kanaele, Rechte, Servereinstellungen
src/apply.ts Traegt den Bauplan auf einen bestehenden Server auf
src/gateway.ts WebSocket-Verbindung fuer Klicks auf Knoepfe
src/selfroles.ts Der Knopf, der Live-Ping gibt und wieder nimmt
src/bot.ts Beides zusammen; laeuft im Ingest-Daemon mit

Einrichten geschieht einmalig ueber apply.ts, der Betrieb laeuft ueber bot.ts. Beide lesen denselben Bauplan.

Aufruf ueber die CLI:

abdulive discord:setup --server <ID> --vorschau   # zeigt nur, was passieren wuerde
abdulive discord:setup --server <ID>              # wendet es an

Und der laufende Teil, der die Knoepfe bedient:

abdulive discord:bot        # zum Ausprobieren; sonst im Ingest-Daemon

Wiederholbar: gefunden wird ueber den Namen, danach wird angeglichen statt neu angelegt. Geloescht wird nie.

Begruendung der Struktur, die Schritte, die von Hand gehoeren, und die Fallstricke: docs/projects/discord-community.md