Pepe44DEV 0c47dce508
All checks were successful
Deploy Discord Bot / deploy (push) Successful in -1m4s
SonarQube / sonar (push) Successful in 1m8s
migrate dashboard to real HeroUI v3 components and neutral theme
The frontend was built against HeroUI v2 props/classes (variant="light"/"flat",
color="primary", startContent, text-tiny, <Avatar src=/name=>) while
@heroui/react ^3.2.1 is installed, so most styling was silently ignored.
Rewrites every page/component onto the actual v3 API (variant/color enums,
Tooltip/Dropdown trigger-content structure, Avatar.Image/Fallback via a new
AppAvatar helper) and replaces the custom orange branding with HeroUI's
neutral default theme tokens. Also compacts the dashboard stat tiles, narrows
the sidebar, and swaps the activity stat grid for a single-hue comparison bar
chart.

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