Pepe44DEV aa246cd7ea
Some checks failed
Deploy Discord Bot / deploy (push) Failing after -1m12s
SonarQube / sonar (push) Successful in 4s
add badges, weekly plans, polls, suggestions, mod-case system, branding, partner system, alt-account detection, gallery, growth tracking
Two feature batches plus a deploy fix:

Moderation & engagement: persistent ModCase history (retrofits ban/kick/
mute/timeout/tempban to record cases), /warn, /watch watchlist with
automatic alerts on deletions/tickets/automod hits, /case file lookup,
achievement badges (/badges, /profile) with message/streak/ticket/
birthday/event/booster triggers, /weekplan RSVP boards, /poll with
anonymous mode and scheduled auto-close, /suggest with vote/comment/
decide flow.

Branding & growth: /branding (per-guild embed color/logo/footer/bot
name/theme, applied across logging/ticket/register/embed-builder
embeds and the dashboard sidebar/accent color at runtime), two new
/setup server-type presets (Roleplay, Creator), /rules generate
(template-based rule sets), /partner apply/list/config with invite
validation and showcase posting, alt-account suspicion scoring on
join (account age, avatar, name pattern, join bursts, ban-list
similarity), /gallery submit with voting and weekly-winner scheduler,
invite-attributed join/leave tracking with a new Wachstum dashboard
page, and an expanded Admin dashboard (guild list, feature-usage
counters).

Also fixes production: the Docker container never ran `prisma migrate
deploy`, so schema changes never reached the live database. The
compose command now applies pending migrations on every start.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-03 23:15:35 +02:00
2026-07-01 16:48:27 +02:00

🚀 Papo Discord Bot

A modern, feature-rich Discord bot built with discord.js v14, TypeScript, Prisma, and PostgreSQL, featuring a powerful web dashboard and modular architecture.


Features

🎫 Ticket System

  • Interactive ticket panels
  • Ticket claiming
  • Ticket transcripts
  • Support login sessions
  • Slash commands (/ticket, /claim, /close, ...)

🛡️ Moderation

  • Link whitelist
  • Anti-Spam
  • Anti-Caps
  • Bad word filtering
  • Comprehensive server logging

🎵 Music

  • Play music from multiple sources
  • Queue support
  • Pause / Resume
  • Skip
  • Stop
  • Loop
  • Enable/Disable per server

👋 Community Features

  • Welcome messages
  • Leveling system
  • Birthday reminders
  • Reaction Roles
  • Dynamic Voice Channels
  • Event system with reminders

📊 Dashboard

  • Discord OAuth2 Login
  • Guild management
  • Modular settings
  • Status Page integration
  • Rich Presence management
  • Modern responsive interface

🛠️ Tech Stack

Technology Version
Node.js 20+
TypeScript Latest
discord.js v14
Express Latest
Prisma ORM Latest
PostgreSQL 15+
Docker Supported

📦 Installation

Local Development

Clone the repository

git clone https://github.com/yourname/papo-discord-bot.git
cd papo-discord-bot

Create your environment file

cp .env.example .env

Install dependencies

npm install

Generate Prisma Client

npx prisma generate --schema=src/database/schema.prisma

Run database migrations

npx prisma migrate dev --name init

Start the development server

npm run dev

The bot and dashboard will start on the configured PORT (default: 3000).

Slash commands are automatically registered for the guilds defined in:

  • DISCORD_GUILD_IDS
  • or DISCORD_GUILD_ID

🐳 Docker

Start the complete development stack

docker-compose up --build

Build the Docker image manually

docker build -t papo-discord-bot .

The Docker image automatically generates the Prisma Client during the build process.


⚙️ Environment Variables

Variable Description
DISCORD_TOKEN Discord Bot Token
DISCORD_CLIENT_ID Discord OAuth Client ID
DISCORD_CLIENT_SECRET Discord OAuth Secret
DATABASE_URL PostgreSQL Connection String
PORT Dashboard Port (default: 3000)
SESSION_SECRET Express Session Secret
DASHBOARD_BASE_URL Public Dashboard URL
WEB_BASE_PATH Base path (default: /ucp)
OWNER_IDS Comma-separated Bot Owners
SUPPORT_ROLE_ID Support Role ID
DISCORD_GUILD_ID(S) Guild(s) for command registration

🗄️ Database

Main Prisma schema

src/database/schema.prisma

Generate Prisma Client

npx prisma generate --schema=src/database/schema.prisma

Create a migration

npx prisma migrate dev --name your-migration

Core Models

  • GuildSettings
  • Ticket
  • TicketSupportSession
  • Event
  • EventSignup
  • RegisterForm
  • RegisterApplication
  • Birthday
  • ReactionRoleSet
  • Level

📜 Available Scripts

Command Description
npm run dev Development Mode
npm run build Compile TypeScript
npm start Run Production Build
npx prisma ... Prisma CLI

🌐 Dashboard API

Authentication

/auth/discord
/auth/callback
/auth/logout

Protected API

/api/*

Main Endpoints

  • /api/guilds
  • /api/settings
  • /api/modules
  • /api/tickets
  • /api/events
  • /api/reactionroles
  • /api/birthday
  • /api/statuspage

Only guilds where the authenticated user has Manage Server permissions and where the bot is present are accessible.


🚀 Deployment

Production build

npm run build
npm start

or simply use Docker.

Ticket transcripts are stored in

./transcripts

When running inside Docker, mount this directory as a volume to persist transcripts.


❤️ Contributing

Contributions, feature requests, and bug reports are always welcome!

Feel free to open an Issue or submit a Pull Request.


📄 License

No license has been specified yet.

Please add an appropriate open-source license before publishing this project.


Built with ❤️ using TypeScript, Discord.js, Prisma & PostgreSQL

Description
A Discord bot as Alternative to MEE6 and Galaxy bot Fully free and OpenSource
Readme 36 MiB
Languages
TypeScript 98.2%
Shell 1%
CSS 0.7%