7 Configuration
darksoon edited this page 2026-05-12 21:49:21 +02:00

Konfiguration

Die zentrale Config liegt in configs/config.yml. Token, guildId, Module-Toggles, Channels und Rollen werden hier eingetragen — alles andere kommt aus den Modul-YAMLs unter configs/modules/.

Hinweis: Eine .env-Datei ist nicht mehr nötig. DATABASE_URL hat einen Fallback auf file:./grumpy.db (SQLite).


config.yml — Komplette Übersicht

# Bot-Zugangsdaten
token: "DEIN_BOT_TOKEN"
guildId: "DEINE_SERVER_ID"

# Sprache der User-Nachrichten: "de" oder "en"
language: "de"

# Optional: User-IDs mit voller Bot-Kontrolle
ownerIds: []

# Optional: Discord Webhook für Crash-Meldungen
errorWebhook: ""

# Bot-Presence — rotierende Custom-Activities statt Discord's Auto-"Im Sprachchat"
presence:
  enabled: true
  status: "online"           # online | idle | dnd | invisible
  rotateSeconds: 60          # min 15s (wird geclamped). Bei 1 Activity = statisch.
  activities:
    - "Watching Minetechworld.de"
    - "Listening to TechnoBase.FM"
    - "Playing /help"

# Module — true = aktiv, false = deaktiviert
addons:
  welcome: true    # Willkommen, Verifizierung, Leave-Nachrichten
  mod: true        # Moderation, Auto-Mod, Anti-Nuke, Reports, Audit-Logger
  tickets: true    # Ticket-System mit Panels und Forms
  news: true       # News-Posts per DM
  voice: true      # Join-to-Create Voice-Channels
  music: true      # Internet-Radio (TechnoBase.FM & Co.)
  help: true       # Auto-deployter Help-Hub
  customcmd: true  # /cc add ... — Admin-definierte /cmd-Commands

# Channel-IDs — alle hier eintragen
channels:
  welcome: "ID"       # Willkommens- & Leave-Nachrichten
  verify: "ID"        # Verify-Panel (wird auto-gepostet)
  mod-log: "ID"       # Mod-Log + Server-Audit-Logger
  alert: "ID"         # Anti-Nuke Notfälle
  staff: "ID"         # Manuelle Mod-Aktionen & Reports
  support: "ID"       # Ticket-Panel-Fallback
  ticket-log: "ID"    # Ticket-Transcripts & Summaries
  news: "ID"          # News-Posts
  voice-lobby: "ID"   # Join-to-Create Lobby — User joint hier, kriegt eigenen Channel
  radio: "ID"         # Voice-Channel für Music-Passive-Mode (Bot lebt hier)
  help: "ID"          # Help-Hub-Channel (Embed wird auto-gepostet)
  suggestions: "ID"   # Vorschlags-Board (/suggestion submit postet hier)
  starboard: "ID"     # ⭐ Starboard Output-Channel
  levelup: ""         # Level-Up-Karten ("" = gleicher Kanal, "dm" = DM, oder Channel-ID)

# Rollen-IDs — alle hier eintragen
roles:
  unverified: "ID"    # Neue Member bis zur Verifizierung
  member: "ID"        # Nach erfolgreicher Verifizierung
  support:            # Wer Tickets verwalten darf (mehrere möglich)
    - "ID"            # z.B. Supporter
    - "ID"            # z.B. Moderator
  alert-ping: ""      # Rolle die bei Anti-Nuke gepingt wird (optional)

⚠️ Die message-ids: Sektion aus älteren Versionen wird nicht mehr verwendet. Panel-Message-IDs werden in der Datenbank verwaltet (WelcomeState, TicketPanelMessage).


Config Auto-Heal

Beim Start prüft der Bot configs/config.yml und passt das Schema selbst an:

  • Fehlende Addon-Toggles (z.B. neue Module wie voice, help, customcmd) werden mit ihren Defaults ergänzt.
  • Fehlende Channel-Felder (z.B. voice-lobby, radio, help) werden als leere Strings hinzugefügt.
  • Fehlender presence:-Block wird mit Default-Activities ergänzt — bestehende config.yml-Dateien bekommen den Block beim nächsten Start automatisch.
  • Deprecated Sections wie message-ids: werden entfernt.
  • Bestehende Werte und YAML-Kommentare bleiben unverändert — der Bot nutzt yaml's parseDocument-API und merged nur das Schema, nicht die Daten.

Wenn die Datei angepasst wurde, zeigt die Konsole eine kurze Summary mit den Änderungen. Das heißt: nach einem Bot-Update musst du kein YAML-Editing machen, um neue Module zu aktivieren — einfach starten und in der Folge die neuen Felder ausfüllen.


Bot-Presence

Der presence:-Block in config.yml ersetzt Discord's Auto-Status (z.B. „Im Sprachchat") durch eine eigene, rotierende Activity-Liste.

presence:
  enabled: true
  status: "online"           # online | idle | dnd | invisible
  rotateSeconds: 60          # min 15s (wird geclamped)
  activities:
    - "Watching Minetechworld.de"
    - "Listening to TechnoBase.FM"
    - "Playing /help"

Activity-Format

Das Verb am Anfang bestimmt den Activity-Type:

Prefix Discord-Type
Watching X Watching
Playing X Playing
Listening to X Listening (das to wird gestrippt)
Streaming X Streaming
Competing in X Competing (das in wird gestrippt)
alles andere Custom Status

Verhalten

  • rotateSeconds Minimum 15s (wird sonst hochgeclamped). Bei nur einer Activity bleibt die Anzeige statisch.
  • enabled: false oder leere activities-Liste → der Bot lässt Discord's Default greifen (z.B. „Im Sprachchat").
  • Auto-Heal: Bestehende config.yml-Dateien bekommen den presence:-Block beim nächsten Start automatisch ergänzt — Kommentare und Werte bleiben erhalten.

Modul-Toggle

Die addons:-Sektion steuert welche Module aktiv sind:

Schlüssel Modul Funktion
welcome Welcome Willkommen, Verifizierung, Raid-Schutz, Leave
mod Moderation Auto-Mod, Anti-Nuke, Reports, Warns, Audit-Logger
tickets Tickets Multi-Panels, Forms, Ticket-Verwaltung
news News News-Posts per Admin-DM
voice Voice Join-to-Create Voice-Channels
music Music Internet-Radio im Voice-Channel (Interactive + Passive)
help Help Help-Hub-Channel mit Modul-Dropdown
customcmd CustomCmd Admin-definierte /cmd-Commands
reactionroles ReactionRoles Self-Service Rollen-Panels via Button/Dropdown
leveling Leveling XP, Rang-Karten, Leaderboard, Rollen-Belohnungen
suggestions Suggestions Vorschlagsystem mit 👍/👎 und Status-Management
polls Polls Live-Abstimmungen mit Buttons
starboard Starboard Beste Nachrichten hervorheben

IDs kopieren

Developer Mode aktivieren:
Discord → Einstellungen → Erweitert → Entwicklermodus

Was Wie
Channel-ID Rechtsklick auf Channel → ID kopieren
Rollen-ID Server-Einstellungen → Rollen → Rechtsklick → ID kopieren
Server-ID Rechtsklick auf Server-Icon → ID kopieren
User-ID Rechtsklick auf User → ID kopieren

Auto-Deployment der Panels

Beim Start prüft der Bot:

  • Verify-Panel — gibt es im DB-Eintrag eine Message-ID? Ist sie noch im Channel? Sonst: neu posten.
  • Ticket-Panels — pro Panel-Eintrag in tickets.yml dasselbe Spiel. Hat ein Panel channelId: "0", wird auf channels.support aus config.yml zurückgegriffen.

Manuelles Re-Deploy bleibt verfügbar:

  • /welcome setup-verify
  • /tickets setup-panel <panel-id>

Modul-Configs

Pro Modul gibt es eine eigene YAML-Datei für feature-spezifische Settings:

Datei Inhalt
configs/modules/welcome.yml Welcome-/Leave-Modi (banner / embed / text), Banner-Farben, CAPTCHA, Raid-Schutz, Verify-Embed
configs/modules/mod.yml Auto-Mod (Spam, Caps, Ads, …), Anti-Nuke, Eskalation, Report-Cooldown
configs/modules/tickets.yml Panels, Kategorien, Forms, Auto-Close, Rating
configs/modules/news.yml Admin-IDs, Reactions, Session-Timeout
configs/modules/voice.yml Lobby-/Category-IDs, Name-Template, Auto-Delete-Timer, Channel-Limits
configs/modules/music.yml Radio-Stationen (Presets), Volume, Auto-Leave, Passive-Mode
configs/modules/help.yml Help-Embed-Inhalt, Quick-Action-Buttons, optionale Modul-Beschreibungen
configs/modules/reactionroles.yml Standard-Farbe für neue Panels
configs/modules/leveling.yml XP-Bereich, Cooldown, Voice-XP/min, Level-Up-Kanal, Rollen-Belohnungen, Akzentfarbe
configs/modules/suggestions.yml Kanal, Cooldown, Min/Max-Länge, Vote-Emojis, Staff-Rollen
configs/modules/polls.yml Max-Laufzeit in Stunden
configs/modules/starboard.yml Emoji, Threshold, Ausgeschlossene Channels, Self-Star

CustomCmd hat keine YAML — Commands werden komplett über /cc add in der DB verwaltet.

Alle YAMLs werden beim ersten Start automatisch mit Defaults erzeugt.

Fallback-Kette für Modul-Channels: Ist channelId in der Modul-YAML leer, fällt der Bot auf den entsprechenden Eintrag in config.yml zurück:

  • suggestions.yml: channelIdchannels.suggestions
  • starboard.yml: channelIdchannels.starboard
  • leveling.yml: levelUp.channelchannels.levelup

Setup-Status beim Start

Beim Hochfahren zeigt der Bot eine Übersicht:

═══════════════════════════════════════════════════════
  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...
═══════════════════════════════════════════════════════

Fehlende Channels/Rollen sind mit markiert — direkt in config.yml ergänzen und Bot neu starten.