modified: bot.py

This commit is contained in:
SimolZimol
2024-09-14 22:00:38 +02:00
parent 3790ec4ad3
commit 70e59b4079

38
bot.py
View File

@@ -476,29 +476,31 @@ def get_current_datetime():
return datetime.now().strftime("%Y-%m-%d %H:%M:%S") return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
def calculate_xp_for_level(level): def calculate_xp_for_level(level):
"""Berechnet die XP-Anforderung für das nächste Level""" return 5 * (level ** 2) + 50 * level + 100
return 100 * level # Beispiel: 100 XP pro Level
async def add_xp_to_user(user_id, xp_amount): async def add_xp_to_user(user_id, xp_gained):
"""Fügt XP zum Benutzer hinzu und überprüft, ob ein Levelaufstieg stattfindet"""
user_data = load_user_data(user_id) user_data = load_user_data(user_id)
current_xp = user_data.get("xp", 0)
current_level = user_data.get("level", 1)
# Füge die XP hinzu # Füge die neu verdiente XP hinzu
user_data["xp"] += xp_amount new_xp = current_xp + xp_gained
next_level_xp = calculate_xp_for_level(current_level)
# Überprüfe, ob der Benutzer ein neues Level erreicht hat # Level-Up-Logik
required_xp = calculate_xp_for_level(user_data["level"]) while new_xp >= next_level_xp:
if user_data["xp"] >= required_xp: new_xp -= next_level_xp
user_data["level"] += 1 current_level += 1
user_data["xp"] -= required_xp # Setze die überschüssige XP zurück next_level_xp = calculate_xp_for_level(current_level)
# Level-Up Nachricht an den Benutzer senden await notify_level_up(user_id, current_level) # Funktion für Level-Up-Benachrichtigung
user = client.get_user(user_id)
if user:
await user.send(f"🎉 Glückwunsch, du hast Level {user_data['level']} erreicht!")
# Speichere die aktualisierten Benutzerdaten # Speichern der neuen XP und des Levels
update_user_data(user_id, "xp", user_data["xp"]) update_user_data(user_id, "xp", new_xp)
update_user_data(user_id, "level", user_data["level"]) update_user_data(user_id, "level", current_level)
async def notify_level_up(user_id, new_level):
user = await client.fetch_user(user_id)
await user.send(f"Congratulations! You have leveled up to level {new_level}.")
@client.hybrid_command() @client.hybrid_command()
async def level(ctx): async def level(ctx):