3.2 KiB
3.2 KiB
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)
- Repo klonen, in das Verzeichnis wechseln.
.envanlegen:cp .env.example .envund Werte setzen.- Abhängigkeiten:
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/Bot aufPORT(Standard 3000). - Slash-Commands werden beim Start für
DISCORD_GUILD_IDS(oderDISCORD_GUILD_ID) registriert.
Quickstart (Docker)
- Dev-Stack:
docker-compose up --build(Dockerfile + Postgres 15, env aus.env, startetnpm run dev). - Eigenes Image:
docker build .(Prisma-Generate läuft im Build)..dockerignoreblendet lokalenode_modules/.envaus.
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, defaultpapo_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 inprisma/schema.prismafür Binary Targets). - Migrationen:
npx prisma migrate dev --name <name>; danachnpx 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 buildnpm start– Start ausdist- Prisma-CLI:
npx prisma ...(nutzt Schema aussrc/database/schema.prisma)
API/Dashboard 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.- 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 startoder Docker-Image nutzen. - Transcripts liegen unter
./transcripts(bei Containern als Volume mounten).
Credits/Lizenz
- Autoren/Lizenz nicht hinterlegt – bitte vor Nutzung prüfen.