Improve README structure and quickstart
All checks were successful
Deploy Discord Bot / deploy (push) Successful in 13s
All checks were successful
Deploy Discord Bot / deploy (push) Successful in 13s
This commit is contained in:
73
readme.md
73
readme.md
@@ -2,72 +2,63 @@
|
||||
|
||||
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.
|
||||
## 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 (Docker-Basis), TypeScript (CommonJS)
|
||||
- Node.js 20, TypeScript (CommonJS)
|
||||
- discord.js 14, play-dl, @discordjs/voice
|
||||
- Express + OAuth2-Login, Prisma ORM (PostgreSQL)
|
||||
- Dockerfile + docker-compose (App + Postgres)
|
||||
- Express + OAuth2-Login
|
||||
- Prisma ORM (PostgreSQL)
|
||||
- Dockerfile + docker-compose
|
||||
|
||||
## Setup (lokal, Entwicklung)
|
||||
## Quickstart (lokal)
|
||||
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`).
|
||||
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 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.
|
||||
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.
|
||||
|
||||
## 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).
|
||||
## 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
|
||||
## Environment-Variablen (Auswahl)
|
||||
- `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)
|
||||
- `DISCORD_CLIENT_ID` / `DISCORD_CLIENT_SECRET` (Dashboard-OAuth)
|
||||
- `DISCORD_GUILD_ID` (optional Einzel-Guild) / `DISCORD_GUILD_IDS` (kommagetrennt)
|
||||
- `DATABASE_URL` (Pflicht, Postgres)
|
||||
- `PORT` (Webserver/Dashboard, default 3000)
|
||||
- `PORT` (Dashboard/Bot, default 3000)
|
||||
- `SESSION_SECRET` (Express Session Secret, default `papo_dev_secret`)
|
||||
- `DASHBOARD_BASE_URL` (Public Base URL, fuer OAuth Redirect)
|
||||
- `DASHBOARD_BASE_URL` (Public Base URL für OAuth Redirect)
|
||||
- `WEB_BASE_PATH` (Default `/ucp`, ohne Slash am Ende)
|
||||
- `OWNER_IDS` (kommagetrennte Owner fuer Admin-UI)
|
||||
- `OWNER_IDS` (kommagetrennte Owner für 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).
|
||||
- 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 (Module/Config), Ticket, TicketSupportSession, Event/EventSignup, Birthday, ReactionRoleSet, Level.
|
||||
- Kern-Tabellen: GuildSettings, Ticket, TicketSupportSession, Event/EventSignup, RegisterForm/RegisterApplication, Birthday, ReactionRoleSet, Level.
|
||||
|
||||
## Kommandos & Scripts
|
||||
## 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
|
||||
## 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.
|
||||
- Module/Settings ueber `/api/settings`, `/api/modules`, Tickets unter `/api/tickets*`, weitere Endpoints fuer Events, Reaction Roles, Birthday, Statuspage.
|
||||
- `/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 werden unter `./transcripts` abgelegt (Volume mounten, falls Container).
|
||||
- Transcripts liegen unter `./transcripts` (bei Containern als Volume mounten).
|
||||
|
||||
## Credits/Lizenz
|
||||
- Autoren/Lizenz nicht hinterlegt. Bitte vor Nutzung pruefen.
|
||||
- Autoren/Lizenz nicht hinterlegt – bitte vor Nutzung prüfen.
|
||||
|
||||
Reference in New Issue
Block a user