modified: bot.py
This commit is contained in:
41
bot.py
41
bot.py
@@ -478,28 +478,37 @@ 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)
|
||||
# Lade Benutzerdaten aus der Datenbank
|
||||
user_data = load_user_data_from_mysql(user_id)
|
||||
|
||||
# Füge die neuen XP hinzu
|
||||
if user_data is None:
|
||||
# Benutzer ist nicht in der Datenbank, füge ihn hinzu
|
||||
insert_user_data(user_id, 0, 0, 0, 0, 0, [])
|
||||
user_data = load_user_data_from_mysql(user_id)
|
||||
|
||||
# XP hinzufügen
|
||||
user_data["xp"] += xp_gained
|
||||
|
||||
# Berechne das neue Level basierend auf den aktualisierten XP
|
||||
new_level = calculate_level(user_data["xp"])
|
||||
user_data["level"] = new_level
|
||||
# Formel für Level-Up
|
||||
new_level = int(5 * (user_data["level"] ** 2) + 50 * user_data["level"] + 100)
|
||||
|
||||
# Überprüfen, ob der Benutzer ein Level aufsteigt
|
||||
if user_data["xp"] >= new_level:
|
||||
user_data["level"] += 1
|
||||
user_data["xp"] = 0 # XP auf 0 zurücksetzen nach einem Level-Up
|
||||
|
||||
# Schicke eine Nachricht, dass der Benutzer ein Level aufgestiegen ist
|
||||
channel = client.get_channel(<CHANNEL_ID>) # Setze hier den richtigen Kanal ein
|
||||
await channel.send(f"{user_id} has reached level {user_data['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"])
|
||||
|
||||
# Cache mit aktuellen Daten aktualisieren
|
||||
await cache_user_data(user_id, user_data)
|
||||
|
||||
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}.")
|
||||
@@ -550,12 +559,10 @@ async def on_message(message):
|
||||
return
|
||||
|
||||
user_id = message.author.id
|
||||
if user_id in xp_cooldowns and time.time() < xp_cooldowns[user_id] + 60:
|
||||
return # Der Benutzer hat kürzlich XP erhalten, also überspringen wir das
|
||||
|
||||
xp_gained = random.randint(5, 15)
|
||||
# Zufällige XP zwischen 5 und 15 hinzufügen
|
||||
xp_gained = random.randint(2, 15)
|
||||
await add_xp_to_user(user_id, xp_gained)
|
||||
xp_cooldowns[user_id] = time.time()
|
||||
|
||||
await client.process_commands(message)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user