From bc6264b5fcbf5096b0b08dcd14967d0f80d6f5de Mon Sep 17 00:00:00 2001 From: SimolZimol <70102430+SimolZimol@users.noreply.github.com> Date: Sun, 15 Sep 2024 10:25:35 +0200 Subject: [PATCH] modified: bot.py --- bot.py | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/bot.py b/bot.py index e94d86c..934f397 100644 --- a/bot.py +++ b/bot.py @@ -478,25 +478,27 @@ def get_current_datetime(): def calculate_xp_for_level(level): return 5 * (level ** 2) + 50 * level + 100 +def calculate_level(xp): + """Berechnet das Level basierend auf den Erfahrungspunkten (XP).""" + l = 1 + while 5 * (l ** 2) + 50 * l + 100 <= xp: + l += 1 + return l + async def add_xp_to_user(user_id, xp_gained): + """Fügt XP zu einem Benutzer hinzu und aktualisiert das Level, falls nötig.""" user_data = load_user_data(user_id) - current_xp = user_data.get("xp", 0) - current_level = user_data.get("level", 1) - - # Füge die neu verdiente XP hinzu - new_xp = current_xp + xp_gained - next_level_xp = calculate_xp_for_level(current_level) - # Level-Up-Logik - while new_xp >= next_level_xp: - new_xp -= next_level_xp - current_level += 1 - next_level_xp = calculate_xp_for_level(current_level) - await notify_level_up(user_id, current_level) # Funktion für Level-Up-Benachrichtigung + # Füge die neuen XP hinzu + user_data["xp"] += xp_gained - # Speichern der neuen XP und des Levels - update_user_data(user_id, "xp", new_xp) - update_user_data(user_id, "level", current_level) + # Berechne das neue Level basierend auf den aktualisierten XP + new_level = calculate_level(user_data["xp"]) + user_data["level"] = new_level + + # Aktualisiere die Benutzerdaten in der Datenbank + update_user_data(user_id, "xp", user_data["xp"]) + update_user_data(user_id, "level", user_data["level"]) async def notify_level_up(user_id, new_level): user = await client.fetch_user(user_id)