1 GrumpyLeveling
darksoon edited this page 2026-05-12 21:49:21 +02:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Leveling — XP, Ränge & Leaderboard

GrumpyLeveling vergibt XP für Nachrichten und Voice-Aktivität, zeigt Rang-Karten an und kann beim Level-Up automatisch Rollen vergeben.


Aktivierung

In configs/config.yml:

addons:
  leveling: true

channels:
  levelup: ""        # "" = gleicher Kanal, "dm" = DM, oder Channel-ID

Beim ersten Start wird configs/modules/leveling.yml erzeugt.


leveling.yml

enabled: true

messageXp:
  enabled: true
  min: 15                    # Min XP pro Nachricht
  max: 25                    # Max XP pro Nachricht
  cooldownSeconds: 60        # Cooldown zwischen XP-Awards pro User
  ignoredChannels: []        # Channel-IDs ohne XP

voiceXp:
  enabled: true
  xpPerMinute: 2             # XP pro Minute im Voice-Channel
  excludedChannels: []       # Ausgeschlossene Voice-Channels (z.B. AFK)

levelUp:
  channel: ""                # "" = Kanal der Nachricht | "dm" | Channel-ID
                             # Fallback: channels.levelup in config.yml
  message: "🎉 {user} hat **Level {level}** erreicht!"
  # Placeholders: {user}, {level}, {xp}

roleRewards: []
# Rollen-Belohnungen bei bestimmten Levels, z.B.:
#   - level: 5
#     roleId: "123456789"
#   - level: 10
#     roleId: "987654321"

stackRoles: true             # true = alle Level-Rollen behalten
                             # false = nur höchste aktuelle Level-Rolle

accentColor: "#5865F2"       # Akzentfarbe für Rang-Karten und Level-Up-Karten

XP-Formel

GrumpyLeveling verwendet die MEE6-kompatible Formel:

XP für Level n → n+1 = 5 × n² + 50 × n + 100
Level XP für diesen Level Gesamt-XP
0 → 1 100 XP 100 XP
1 → 2 155 XP 255 XP
5 → 6 475 XP 1.700 XP
10 → 11 1.100 XP 5.500 XP
20 → 21 3.100 XP 27.200 XP

Nur totalXp wird gespeichert — Level und Fortschritt werden immer daraus berechnet.


Voice-XP

Alle 60 Sekunden scannt der Bot alle Voice-Channels und vergibt xpPerMinute XP an berechtigte Mitglieder.

Berechtigt: User ist im Voice-Channel + mind. 1 weiterer nicht-Bot-User + nicht server-gemutet + nicht gedeafened.


Level-Up Karte

Beim Level-Up postet der Bot automatisch eine Canvas-Karte (900×300 px):

╔══════════════════════════════════════════════════════╗
║ ⬆ LEVEL UP!                                         ║
║ [Avatar]  Username                                   ║
║           Level 12                                   ║
║           ████████░░  2450 / 3050 XP                ║
╚══════════════════════════════════════════════════════╝
  • Gleicher Stil wie die Rang-Karte (/rank)
  • Akzentfarbe aus accentColor in leveling.yml
  • Fallback auf Text-only wenn Avatar-Fetch fehlschlägt

Kanal-Priorität: levelUp.channel in leveling.ymlchannels.levelup in config.yml → gleicher Kanal wie Trigger-Nachricht


Commands

/rank [@user]

Zeigt die Canvas-Rang-Karte (900×280 px) mit:

  • Rundes Avatar mit Akzent-Glow-Ring
  • Username, Level, Server-Rang (#N)
  • XP-Fortschrittsbalken
/rank
/rank @Jonas

/leaderboard [page]

XP-Rangliste des Servers — 10 User pro Seite mit ◀▶-Navigation. Zeigt Level und Gesamt-XP.


/xp give|take|set|reset @user [amount]

Admin-Verwaltung der XP. Löst Level-Up-Karte aus wenn nötig.

Subcommand Beschreibung
give @user 500 500 XP hinzufügen
take @user 200 200 XP abziehen (min. 0)
set @user 5000 Total-XP auf 5000 setzen
reset @user Alles auf 0 zurücksetzen

Berechtigung: Manage Guild


Rollen-Belohnungen

In leveling.yml können Rollen bei bestimmten Levels automatisch vergeben werden:

roleRewards:
  - level: 5
    roleId: "1234567890"    # Rolle "Aktiv"
  - level: 10
    roleId: "9876543210"    # Rolle "Veteran"
  - level: 25
    roleId: "1122334455"    # Rolle "Legend"

stackRoles: true   # User behält alle Rollen (empfohlen)
                   # false = bei Level 10 wird Rolle Level 5 entfernt

Der Bot benötigt Manage Roles und seine Rolle muss in der Hierarchie über den Belohnungsrollen stehen.