🎭 Discord Emoji-Bewerbungssystem Bot

Ein Discord Bot, bei dem sich Member mit Emoji-Reaktionen auf einer Nachricht fĂźr Rollen bewerben kĂśnnen. Admins sehen die Bewerbungen in einem separaten Channel und kĂśnnen sie akzeptieren oder ablehnen.

✨ Features

Bewerbungssystem

  • Emoji-Reaktions-Bewerbung — User reagieren auf eine Panel-Nachricht mit einem Emoji
  • Admin-Review — Bewerbungen erscheinen in einem Admin-Channel mit Akzeptieren/Ablehnen-Buttons
  • Automatische Rollenvergabe — Bei Akzeptierung bekommt der User die Rolle automatisch
  • Vollständiges Logging — Alle Aktionen werden in einem Log-Channel protokolliert

Admin Commands

CommandBeschreibung
/setup-createKanäle konfigurieren (Nachricht, Anfragen, Log, Setup)
/setup-configAktuelle Konfiguration anzeigen
/emoji-addEmoji → Rolle Zuordnung hinzufügen
/emoji-removeEmoji → Rolle Zuordnung entfernen
/emoji-editEmoji → Rolle Zuordnung bearbeiten
/apply-sendBewerbungs-Panel senden/aktualisieren

🔒 Owner-Only Commands

CommandBeschreibung
/owner-addBot-Owner hinzufĂźgen
/owner-removeBot-Owner entfernen
/owner-listAlle Bot-Owner anzeigen
/key-addKey-User mit erweiterten Rechten hinzufĂźgen
/key-removeKey-User entfernen
/key-listAlle Key-User anzeigen
/maintenanceWartungsmodus ein/aus (Bot fĂźr normale User deaktivieren)
/restartBot-Neustart (DB-Migrationen neu ausfĂźhren)
/support-createSupport-Server mit Kanälen & Panels erstellen
/support-deleteSupport-Server Setup lĂśschen

🏗️ Architektur

Rendering mermaid diagram...

📂 Projektstruktur

main.ts                    — HTTP Endpoint (Discord Interactions)
commands/
  router.ts                — Command-Dispatcher
  emoji.ts                 — /emoji-add, /emoji-remove, /emoji-edit
  apply.ts                 — /apply-send
  setup.ts                 — /setup-create, /setup-config
  owner.ts                 — Owner-Only Commands
handlers/
  buttons.ts               — Akzeptieren/Ablehnen Button Handler
discord/
  api.ts                   — Discord REST API Helpers
  handler.ts               — Interaction Router & Response Helpers
  verify.ts                — Ed25519 Signatur-Verifizierung
  embeds.ts                — Embed-Builder
  permissions.ts           — Owner/Key-User/Admin Checks
  commands.ts              — (Legacy) Slash Command Definitions
  buttons.ts               — (Legacy) Button Handler
database/
  schema.ts                — SQLite Migrations & Queries
cron/
  poll-reactions.ts        — Pollt Emoji-Reaktionen (Interval)
scripts/
  register-commands.ts     — Registriert Slash Commands bei Discord

⚙️ Environment Variables

VariableBeschreibung
DISCORD_BOT_TOKENBot Token aus dem Developer Portal
DISCORD_PUBLIC_KEYPublic Key fĂźr Signatur-Verifizierung
DISCORD_APPLICATION_IDApplication ID des Bots
BOT_OWNER_IDDiscord User ID des Hauptbesitzers

🚀 Setup

  1. Bot im Discord Developer Portal erstellen
  2. Environment Variables setzen
  3. scripts/register-commands.ts einmal ausfĂźhren
  4. Bot Interactions Endpoint URL auf die main.ts Endpoint-URL setzen
  5. Bot zum Server einladen (Scopes: bot, applications.commands)
  6. /setup-create auf dem Server ausfĂźhren
  7. /emoji-add um Emoji-Rollen hinzuzufĂźgen
  8. /apply-send um das Bewerbungs-Panel zu senden

🔐 Berechtigungssystem

  • Owner — Vollzugriff auf alle Commands (Ăźber BOT_OWNER_ID oder /owner-add)
  • Key-User — Erweiterte Rechte, ähnlich wie Admin (Ăźber /key-add)
  • Discord Admin — Server-Admins kĂśnnen Emoji-Commands nutzen
  • Member — KĂśnnen sich nur Ăźber Emoji-Reaktionen bewerben

Der Wartungsmodus deaktiviert den Bot für alle außer Owner.