modified: bot.py
This commit is contained in:
30
bot.py
30
bot.py
@@ -478,25 +478,27 @@ def get_current_datetime():
|
|||||||
def calculate_xp_for_level(level):
|
def calculate_xp_for_level(level):
|
||||||
return 5 * (level ** 2) + 50 * level + 100
|
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):
|
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)
|
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
|
# Füge die neuen XP hinzu
|
||||||
new_xp = current_xp + xp_gained
|
user_data["xp"] += xp_gained
|
||||||
next_level_xp = calculate_xp_for_level(current_level)
|
|
||||||
|
|
||||||
# Level-Up-Logik
|
# Berechne das neue Level basierend auf den aktualisierten XP
|
||||||
while new_xp >= next_level_xp:
|
new_level = calculate_level(user_data["xp"])
|
||||||
new_xp -= next_level_xp
|
user_data["level"] = new_level
|
||||||
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
|
|
||||||
|
|
||||||
# Speichern der neuen XP und des Levels
|
# Aktualisiere die Benutzerdaten in der Datenbank
|
||||||
update_user_data(user_id, "xp", new_xp)
|
update_user_data(user_id, "xp", user_data["xp"])
|
||||||
update_user_data(user_id, "level", current_level)
|
update_user_data(user_id, "level", user_data["level"])
|
||||||
|
|
||||||
async def notify_level_up(user_id, new_level):
|
async def notify_level_up(user_id, new_level):
|
||||||
user = await client.fetch_user(user_id)
|
user = await client.fetch_user(user_id)
|
||||||
|
|||||||
Reference in New Issue
Block a user