modified: bot.py

This commit is contained in:
SimolZimol
2024-09-17 16:36:38 +02:00
parent 86f4303690
commit 9f7738e505

30
bot.py
View File

@@ -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"])