Pepe44DEV fe41bfdd88
All checks were successful
Deploy Discord Bot / deploy (push) Successful in -1m12s
SonarQube / sonar (push) Successful in -20s
overhaul automod: fix dead toggles, expose hidden settings, add new filters
Link-filter and spam-filter toggles in the dashboard wrote to config keys
the backend never read, so both filters always ran regardless of the
switch. Fixed by reading the same field names on both sides.

Also surfaces backend features that already existed but had no UI: caps
filter, a custom bad-word list, a role whitelist (members with these
roles are ignored entirely), and tunable spam thresholds/window/timeout.
Each filter now shows its relevant settings inline instead of hiding them
in a separate generic panel.

Adds two new detections: an invite-link filter separate from the general
link filter, and mass-mention/raid protection with a configurable limit.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-02 22:49:28 +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%