Installation & Deployment
Prerequisites
- Pelican Panel with a Node.js Egg (Node 20+)
- Discord Bot Token (Developer Portal)
- Bot intents enabled: Presence Intent, Server Members Intent, Message Content Intent
- Database — Default SQLite (no setup required). Optional: MySQL / MariaDB / PostgreSQL
Step 1 — Create the Discord Bot
- Go to discord.com/developers/applications → New Application
- Click Bot in the left menu → Add Bot
- Disable Public Bot
- Enable all three intents
- Copy the Token
Step 2 — Pelican Panel
Egg: pelican-egg.json (included in the GrumpyCore repo)
Docker Image: ghcr.io/parkervcp/yolks:nodejs_20
Startup: npm install --omit=dev && npm run db:push && node index.js
RAM: 512 MB recommended
Environment variables in the Pelican Panel (all optional):
| Variable | Default | Description |
|---|---|---|
DATABASE_PROVIDER |
sqlite |
sqlite / mysql / mariadb / postgres |
DATABASE_URL |
file:./grumpy.db |
Connection URL — falls back to SQLite, no .env needed |
A
.envfile is not required. Token, guildId, channels, and roles are all configured inconfigs/config.yml.
Step 3 — Upload Files
src/ ← Sapphire source code (Listeners, Commands, Modules)
index.js ← Root entry point
package.json
prisma/ ← Database schema
scripts/ ← prisma-setup.js
configs/andgrumpy.dbare created automatically on first start.
Step 4 — First Start
- Start the bot — Prisma generates the schema and migrates the database
- On first start the bot shows a setup status table:
═══════════════════════════════════════════════════════
GrumpyCore — Setup Status
═══════════════════════════════════════════════════════
✅ Connected to: Minetechworld.de (13 members)
Modules: welcome 🟢 mod 🟢 tickets 🟢 news 🟢
Channels: ✅ welcome ✅ verify ✅ mod-log ✅ alert
✅ staff ✅ ticket-log ✅ news
Roles: ✅ unverified ✅ member ✅ support
Panels deployed:
✅ verify-panel msg 1234...
✅ support msg 5678...
═══════════════════════════════════════════════════════
- Fill in any missing IDs in
configs/config.yml→ Configuration-EN - Restart the bot
- The verify panel and ticket panels are automatically posted to the configured channels — no
/welcome setup-verifyor/tickets setup-panelneeded
If a saved panel is deleted, the bot detects this on the next start and re-posts it. Manual re-deploy via
/welcome setup-verify//tickets setup-panelis still available.
Upgrade note: When updating to a newer bot version you do not need to manually edit
configs/config.yml. The Config Auto-Heal adds missing addon toggles and channel fields on startup and removes deprecated sections (e.g.message-ids:). Existing values and comments are preserved — see Configuration-EN.
Console Commands
Directly in the Pelican console stream (or locally):
| Command | Effect |
|---|---|
stop / exit / quit |
Graceful shutdown |
help / ? |
List of console commands |
These commands are not available in Discord — only in the server console.
Graceful Shutdown
- Pelican "Stop" button → sends SIGTERM → clean shutdown
- Ctrl-C in terminal → SIGINT → same flow
- 10 s timeout fallback, a second SIGINT forces exit
- Step-by-step shutdown logging in the console
Per-Guild Slash Commands
All commands are registered only for the guild configured in guildId — updates are instant, no 1-hour cache. On the very first start there is a one-time migration step (~20 s) that removes any old globally registered commands.
Invite the Bot
https://discord.com/api/oauth2/authorize?client_id=BOT_ID&permissions=8&scope=applications.commands%20bot
BOT_ID = Application ID from the Developer Portal
GrumpyCore Wiki
⚙️ Setup
🔧 Core-Module
🆕 Neue Module
💬 Commands
👥 Staff
GrumpyCore Wiki (English)
⚙️ Setup
🔧 Core Modules
🆕 New Modules
💬 Commands
👥 Staff