2.1 KiB
2.1 KiB
Papo Discord Bot (TypeScript)
Discord v14 Bot mit Slash Commands, Ticket-System, Musikplayer, Automod und Web-Dashboard (Express + OAuth2 Scaffold).
Setup
npm install.envaus.env.examplekopieren und Werte setzen (einzelne Guild viaDISCORD_GUILD_ID, mehrere viaDISCORD_GUILD_IDSals Kommaliste oder global ohne Angabe)- Prisma Schema anpassen und generieren (optional DB):
npx prisma generate - Entwicklung:
npm run dev - Build:
npm run buildundnpm start
Struktur
src/index.ts– Bootstrap für Bot + Webserversrc/commands– Slash Commands (Admin, Music, Tickets, Utility)src/events– Event-Handler (ready, interaction, message, member join/leave, bans)src/services– Automod, Logging, Music-Queue, Tickets, Forum-Stubs, Levelingsrc/web– Express-Server mit OAuth2-Routen und Dashboard-Stubssrc/database– Prisma Schema + Client
Features (Stand Scaffold)
- Admin: /ban /tempban /kick /mute /unmute /timeout /clear (+ Logging)
- Automod: Anti-Link & Spam Timeout
- Logging: Join/Leave, Edit/Delete, Moderations
- Welcome-System: via
/configure welcome_channel - Leveling: optional via
/configure leveling true, Anzeige mit/rank - Musik: /play /pause /resume /skip /stop /queue /loop (YouTube via play-dl)
- Tickets: /ticket /claim /close, Ticket-Panel mit Buttons via
/ticketpanel, Claim/Close/Transcript Buttons im Kanal, Prioritäten via/ticketpriority, Status via/ticketstatus, Transcript-Export via/transcript, Channel pro User, Transcript-Export (TXT), Prisma Modell - Forum-Integration: Service mit Interfaces/Stubs
- Web-Dashboard: Express mit OAuth2-Stubs, Live-Übersicht & Settings API (/api/overview, /api/tickets, /api/settings) + UI
- Multi-Guild: Commands registrieren automatisch für alle IDs in
DISCORD_GUILD_IDSoder global, Auto-Register bei Guild-Join
Hinweise
- Commands werden beim Start automatisch per REST im angegebenen Guild registriert.
- Musik benötigt Voice-Berechtigungen und Zugang zum Voice-Channel des Nutzers.
- Transcript-Dateien landen unter
./transcripts. - Das Dashboard ist bewusst minimal als Ausgangspunkt für weitere UI/Frontend-Integration.