diff --git a/bot.py b/bot.py index 60b08c5..6753b98 100644 --- a/bot.py +++ b/bot.py @@ -166,19 +166,21 @@ CREATE TABLE IF NOT EXISTS user_data ( 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): +def insert_user_data(user_id, guild_id, permission, points, ban, askmultus, filter_value, chat_history, xp=0, level=1): 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) + ON DUPLICATE KEY UPDATE + permission = VALUES(permission), points = VALUES(points), ban = VALUES(ban), askmultus = VALUES(askmultus), filter_value = VALUES(filter_value), rank = VALUES(rank), chat_history = VALUES(chat_history), xp = VALUES(xp), level = VALUES(level) """ serialized_chat_history = json.dumps(chat_history) - data = (user_id, guild_id, permission, points, ban, askmultus, filter_value, 0, serialized_chat_history, 0, 1) # Initialisiere XP auf 0 und Level auf 1 + 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("User data inserted or updated successfully.") except Exception as e: - print(f"Error inserting user data: {e}") + print(f"Error inserting or updating user data: {e}") db_connection.rollback() def update_user_data(user_id, guild_id, field, value): @@ -232,7 +234,6 @@ def load_user_data_from_mysql(user_id, guild_id): close_database_connection(connection) if result: - # Wenn das Level und die XP nicht vorhanden sind, initialisieren user_data = { "user_id": result[0], "guild_id": result[1], @@ -248,22 +249,21 @@ def load_user_data_from_mysql(user_id, guild_id): "level": result[11] } else: - # Falls keine Benutzerdaten gefunden werden, initialisiere sie neu + print(f"No data found for user {user_id} in guild {guild_id}. Inserting new data.") user_data = { "user_id": user_id, "guild_id": guild_id, - "permission": 0, # Standardberechtigung - "points": 0, # Standardpunkte - "ban": 0, # Standardbannstatus - "askmultus": 0, # Standardwert für askmultus - "filter_value": 0, # Standardwert für Filter - "rank": 0, # Standardrang - "chat_history": [], # Leerer Chatverlauf - "asknotes_history": [], # Leerer Chatverlauf - "xp": 0, # Standard-XP - "level": 1 # Standardlevel + "permission": 0, + "points": 0, + "ban": 0, + "askmultus": 0, + "filter_value": 0, + "rank": 0, + "chat_history": [], + "asknotes_history": [], + "xp": 0, + "level": 1 } - insert_user_data( user_data["user_id"], user_data["guild_id"], @@ -273,7 +273,6 @@ def load_user_data_from_mysql(user_id, guild_id): user_data["askmultus"], user_data["filter_value"], user_data["chat_history"], - user_data["asknotes_history"], user_data["xp"], user_data["level"] ) @@ -302,7 +301,6 @@ def load_user_data(user_id, guild_id): if (user_id, guild_id) in cached_user_data: return cached_user_data[(user_id, guild_id)] - # Daten aus der Datenbank laden oder einfügen user_data = load_user_data_from_mysql(user_id, guild_id) asyncio.ensure_future(cache_user_data(user_id, guild_id, user_data))