Files
Papo/readme.md
Pascal Prießnitz 5bf42f4610
All checks were successful
Deploy Discord Bot / deploy (push) Successful in 36s
[deploy] add ticket sla, pipeline, automations, kb
2025-12-03 13:24:25 +01:00

4.2 KiB
Raw Blame History

Papo Discord Bot

Discord-Bot (discord.js 14, TypeScript) mit Web-Dashboard, Prisma/PostgreSQL und Docker-Support.

Was drin ist

  • Ticketsystem: Slash-Commands (/ticket, /claim, /close, /ticketpriority, /ticketstatus, /transcript, /ticketpanel), Panels, Transcripts unter ./transcripts, Support-Login-Panel mit Rollen-Vergabe/On-Duty-Logging.
  • Automod: Link-Filter (Whitelist), Spam/Caps-Erkennung, Bad-Word-Listen (Custom), Timeouts, Logging.
  • Musik: play/skip/stop/pause/resume/loop, Queue, aktivierbar/deaktivierbar pro Guild.
  • Welcome: konfigurierbare Embeds (Channel, Farbe, Texte, Bilder/Uploads), Preview im Dashboard, Text-Fallback.
  • Logging: Join/Leave, Message Edit/Delete, Automod/Ticket/Musik-Events mit konfigurierbarem Log-Channel/Kategorien.
  • Leveling: XP/Level pro Nachricht, /rank, toggelbar.
  • Dynamische Voice: Lobby erzeugt private Voice-Channels mit Template/Userlimit.
  • Birthday: /birthday + geplante Glueckwuensche mit Template/Channel.
  • Reaction Roles: Verwaltung im Dashboard, Sync/Loeschen/Erstellen.
  • Events: Einmalig/recurring, Reminder, Signups, Buttons.
  • Statuspage-Modul vorhanden (Config/API), plus Modul-Toggles im Dashboard.
  • Dashboard: OAuth2 (Scopes identify, guilds), zeigt nur Guilds, die der Nutzer besitzt oder mit Manage Guild/Admin-Rechten verwalten darf und in denen der Bot ist. Modulabhaengige Navigation.
  • Rich Presence: rotiert mit /help, Dashboard-URL und Guild-Zaehler.

Tech-Stack

  • Node.js 20 (Docker-Basis), TypeScript (CommonJS)
  • discord.js 14, play-dl, @discordjs/voice
  • Express + OAuth2-Login, Prisma ORM (PostgreSQL)
  • Dockerfile + docker-compose (App + Postgres)

Setup (lokal, Entwicklung)

  1. Repo klonen, in das Verzeichnis wechseln.
  2. cp .env.example .env und Variablen setzen (siehe unten).
  3. Dependencies installieren: npm ci (oder npm install).
  4. Prisma: npx prisma generate --schema=src/database/schema.prisma und npx prisma migrate dev --name init.
  5. Start Dev: npm run dev (ts-node-dev). Dashboard und Bot laufen auf PORT (default 3000).
  6. Slash-Commands werden beim Start fuer die IDs in DISCORD_GUILD_IDS (oder DISCORD_GUILD_ID) registriert.

Setup mit Docker

  • .dockerignore blendet lokale node_modules/.env aus.
  • Dev-Stack: docker-compose up --build (nutzt Dockerfile, Postgres 15, env aus .env, npm run dev im Container).
  • Eigenes Image: docker build . (Prisma-Generate laeuft im Build).

Environment-Variablen

  • DISCORD_TOKEN (Pflicht, Bot Token)
  • DISCORD_CLIENT_ID / DISCORD_CLIENT_SECRET (Pflicht fuer Dashboard-OAuth)
  • DISCORD_GUILD_ID (optional Einzel-Guild fuer Commands)
  • DISCORD_GUILD_IDS (kommagetrennt, mehrere Guilds)
  • DATABASE_URL (Pflicht, Postgres)
  • PORT (Webserver/Dashboard, default 3000)
  • SESSION_SECRET (Express Session Secret, default papo_dev_secret)
  • DASHBOARD_BASE_URL (Public Base URL, fuer OAuth Redirect)
  • WEB_BASE_PATH (Default /ucp, ohne Slash am Ende)
  • OWNER_IDS (kommagetrennte Owner fuer Admin-UI)
  • SUPPORT_ROLE_ID (optional Ticket/Support-Login Rolle)

Datenbank / Prisma

  • Schema: src/database/schema.prisma (zweites Schema in prisma/schema.prisma fuer Binary Targets).
  • Migrationen: npx prisma migrate dev --name <name>; danach npx prisma generate --schema=src/database/schema.prisma.
  • Kern-Tabellen: GuildSettings (Module/Config), Ticket, TicketSupportSession, Event/EventSignup, Birthday, ReactionRoleSet, Level.

Kommandos & Scripts

  • npm run dev Entwicklung (ts-node-dev)
  • npm run build TypeScript build
  • npm start Start aus dist
  • Prisma-CLI: npx prisma ... (nutzt Schema aus src/database/schema.prisma)

Dashboard / API Kurzinfo

  • Auth-Gate (/api/*), Login /auth/discord, Callback /auth/callback, Logout /auth/logout.
  • /api/guilds filtert auf Guilds, die der eingeloggte User besitzt oder managen darf und in denen der Bot ist.
  • Module/Settings ueber /api/settings, /api/modules, Tickets unter /api/tickets*, weitere Endpoints fuer Events, Reaction Roles, Birthday, Statuspage.

Deployment-Hinweise

  • Produktion: npm run build + npm start oder Docker-Image nutzen.
  • Transcripts werden unter ./transcripts abgelegt (Volume mounten, falls Container).

Credits/Lizenz

  • Autoren/Lizenz nicht hinterlegt. Bitte vor Nutzung pruefen.