336708191bc972f10d32ff13f0ff18d0fe78ba2e
All checks were successful
Deploy Discord Bot / deploy (push) Successful in 36s
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)
- Repo klonen, in das Verzeichnis wechseln.
cp .env.example .envund Variablen setzen (siehe unten).- Dependencies installieren:
npm ci(odernpm install). - Prisma:
npx prisma generate --schema=src/database/schema.prismaundnpx prisma migrate dev --name init. - Start Dev:
npm run dev(ts-node-dev). Dashboard und Bot laufen aufPORT(default 3000). - Slash-Commands werden beim Start fuer die IDs in
DISCORD_GUILD_IDS(oderDISCORD_GUILD_ID) registriert.
Setup mit Docker
.dockerignoreblendet lokale node_modules/.env aus.- Dev-Stack:
docker-compose up --build(nutztDockerfile, Postgres 15, env aus.env,npm run devim 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, defaultpapo_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 inprisma/schema.prismafuer Binary Targets). - Migrationen:
npx prisma migrate dev --name <name>; danachnpx 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 buildnpm start– Start ausdist- Prisma-CLI:
npx prisma ...(nutzt Schema aussrc/database/schema.prisma)
Dashboard / API Kurzinfo
- Auth-Gate (
/api/*), Login/auth/discord, Callback/auth/callback, Logout/auth/logout. /api/guildsfiltert 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 startoder Docker-Image nutzen. - Transcripts werden unter
./transcriptsabgelegt (Volume mounten, falls Container).
Credits/Lizenz
- Autoren/Lizenz nicht hinterlegt. Bitte vor Nutzung pruefen.
Description
Languages
TypeScript
99.7%
Shell
0.2%