From 9f7738e505649fd74809a037f2a26e20e01cd837 Mon Sep 17 00:00:00 2001 From: SimolZimol <70102430+SimolZimol@users.noreply.github.com> Date: Tue, 17 Sep 2024 16:36:38 +0200 Subject: [PATCH] modified: bot.py --- bot.py | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/bot.py b/bot.py index 86690bc..06f63f8 100644 --- a/bot.py +++ b/bot.py @@ -167,20 +167,38 @@ db_cursor.execute(create_table_query) db_connection.commit() def insert_user_data(user_id, guild_id, permission, points, ban, askmultus, filter_value, chat_history, xp=0, level=1): + """Fügt neue Benutzerdaten in die Datenbank ein.""" + # Zuerst prüfen, ob die Daten bereits existieren + if user_data_exists(user_id, guild_id): + print(f"Data for user_id {user_id} and guild_id {guild_id} already exists. Skipping insertion.") + return + insert_query = """ INSERT INTO user_data (user_id, guild_id, permission, points, ban, askmultus, filter_value, rank, chat_history, xp, level) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) """ serialized_chat_history = json.dumps(chat_history) data = (user_id, guild_id, permission, points, ban, askmultus, filter_value, 0, serialized_chat_history, xp, level) + try: db_cursor.execute(insert_query, data) db_connection.commit() - print("User data inserted successfully.") + print(f"User data for user_id {user_id} and guild_id {guild_id} inserted successfully.") except Exception as e: print(f"Error inserting user data: {e}") db_connection.rollback() +def user_data_exists(user_id, guild_id): + """Überprüft, ob bereits Daten für die Kombination aus user_id und guild_id existieren.""" + connection = connect_to_database() + cursor = connection.cursor() + select_query = "SELECT 1 FROM user_data WHERE user_id = %s AND guild_id = %s" + cursor.execute(select_query, (user_id, guild_id)) + result = cursor.fetchone() + cursor.close() + close_database_connection(connection) + return result is not None + def update_user_data(user_id, guild_id, field, value): global db_connection, db_cursor # Verbindung global nutzen try: @@ -479,22 +497,26 @@ def calculate_xp_needed_for_level(level): async def add_xp_to_user(user_id, guild_id, xp_gained): """Fügt einem Benutzer XP hinzu und überprüft, ob er ein Level aufsteigt.""" + # Lade Benutzerdaten (XP, Level, etc.) user_data = load_user_data(user_id, guild_id) - # Füge die XP hinzu + # Füge die gewonnenen XP hinzu user_data["xp"] += xp_gained # Berechne die benötigten XP für das aktuelle Level level = user_data["level"] xp_needed = calculate_xp_needed_for_level(level) - # Überprüfe, ob der Benutzer ein Level aufsteigt + # Überprüfe, ob der Benutzer aufgestiegen ist while user_data["xp"] >= xp_needed: + # Reduziere die überschüssigen XP und erhöhe das Level user_data["xp"] -= xp_needed user_data["level"] += 1 + + # Berechne die neuen XP-Anforderungen für das nächste Level xp_needed = calculate_xp_needed_for_level(user_data["level"]) - # Aktualisiere die Datenbank + # Speichere die aktualisierten Benutzerdaten in der Datenbank update_user_data(user_id, guild_id, "xp", user_data["xp"]) update_user_data(user_id, guild_id, "level", user_data["level"])