1 Installation EN
darksoon edited this page 2026-05-13 21:28:31 +02:00

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

  1. Go to discord.com/developers/applicationsNew Application
  2. Click Bot in the left menu → Add Bot
  3. Disable Public Bot
  4. Enable all three intents
  5. 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 .env file is not required. Token, guildId, channels, and roles are all configured in configs/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/ and grumpy.db are created automatically on first start.


Step 4 — First Start

  1. Start the bot — Prisma generates the schema and migrates the database
  2. 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...
═══════════════════════════════════════════════════════
  1. Fill in any missing IDs in configs/config.ymlConfiguration-EN
  2. Restart the bot
  3. The verify panel and ticket panels are automatically posted to the configured channels — no /welcome setup-verify or /tickets setup-panel needed

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-panel is 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 guildIdupdates 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