Pascal Prießnitz 78578fcc1c
All checks were successful
Deploy Discord Bot / deploy (push) Successful in 37s
[deploy] Fix dashboard icons and add missing register migration placeholder
2025-12-04 12:15:16 +01:00
2025-12-03 01:30:43 +01:00
2025-12-03 02:02:09 +01:00

Papo Discord Bot

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

Highlights

  • Ticketsystem mit Panels, Transcripts und Support-Login (Slash-Commands wie /ticket, /claim, /close).
  • Automod (Link-Whitelist, Spam/Caps, Bad-Word-Listen), Logging für relevante Events.
  • Musik (play/skip/stop/pause/resume/loop) pro Guild aktivierbar.
  • Welcome, Leveling, dynamische Voice, Birthdays, Reaction Roles, Events mit Remindern.
  • Statuspage-Modul, Rich Presence und modulbasierte Dashboard-Navigation.

Tech-Stack

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

Quickstart (lokal)

  1. Repo klonen, in das Verzeichnis wechseln.
  2. .env anlegen: cp .env.example .env und Werte setzen.
  3. Abhängigkeiten: 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/Bot auf PORT (Standard 3000).
  6. Slash-Commands werden beim Start für DISCORD_GUILD_IDS (oder DISCORD_GUILD_ID) registriert.

Quickstart (Docker)

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

Environment-Variablen (Auswahl)

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

Datenbank / Prisma

  • Hauptschema: src/database/schema.prisma (zweites in prisma/schema.prisma für Binary Targets).
  • Migrationen: npx prisma migrate dev --name <name>; danach npx prisma generate --schema=src/database/schema.prisma.
  • Kern-Tabellen: GuildSettings, Ticket, TicketSupportSession, Event/EventSignup, RegisterForm/RegisterApplication, Birthday, ReactionRoleSet, Level.

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)

API/Dashboard 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.
  • Settings/Module über /api/settings, /api/modules, Tickets unter /api/tickets*, weitere Endpoints für Events, Reaction Roles, Birthday, Statuspage.

Deployment-Hinweise

  • Produktion: npm run build + npm start oder Docker-Image nutzen.
  • Transcripts liegen unter ./transcripts (bei Containern als Volume mounten).

Credits/Lizenz

  • Autoren/Lizenz nicht hinterlegt bitte vor Nutzung prüfen.
Description
A Discord bot as Alternative to MEE6 and Galaxy bot Fully free and OpenSource
Readme 34 MiB
Languages
TypeScript 99.7%
Shell 0.2%