modified: bot.py
This commit is contained in:
49
bot.py
49
bot.py
@@ -182,11 +182,10 @@ def insert_user_data(user_id, guild_id, permission, points, ban, askmultus, filt
|
|||||||
db_connection.rollback()
|
db_connection.rollback()
|
||||||
|
|
||||||
def update_user_data(user_id, guild_id, field, value):
|
def update_user_data(user_id, guild_id, field, value):
|
||||||
global db_connection, db_cursor # global-Deklaration muss vor dem Zugriff erfolgen
|
global db_connection, db_cursor # Verbindung global nutzen
|
||||||
try:
|
try:
|
||||||
update_query = f"UPDATE user_data SET {field} = %s WHERE user_id = %s AND guild_id = %s"
|
update_query = f"UPDATE user_data SET {field} = %s WHERE user_id = %s AND guild_id = %s"
|
||||||
|
|
||||||
# Überprüfen, ob das Feld 'chat_history' aktualisiert wird
|
|
||||||
if field == 'chat_history':
|
if field == 'chat_history':
|
||||||
serialized_chat_history = json.dumps(value)
|
serialized_chat_history = json.dumps(value)
|
||||||
db_cursor.execute(update_query, (serialized_chat_history, user_id, guild_id))
|
db_cursor.execute(update_query, (serialized_chat_history, user_id, guild_id))
|
||||||
@@ -197,17 +196,16 @@ def update_user_data(user_id, guild_id, field, value):
|
|||||||
|
|
||||||
except mysql.connector.Error as err:
|
except mysql.connector.Error as err:
|
||||||
logger.error(f"Database error: {err}")
|
logger.error(f"Database error: {err}")
|
||||||
if db_connection.is_connected():
|
# Überprüfen, ob die Verbindung verloren gegangen ist und neu aufbauen
|
||||||
|
if not db_connection.is_connected():
|
||||||
db_cursor.close()
|
db_cursor.close()
|
||||||
db_connection.close()
|
db_connection.close()
|
||||||
|
|
||||||
# Verbindung neu aufbauen
|
|
||||||
db_connection = connect_to_database()
|
db_connection = connect_to_database()
|
||||||
db_cursor = db_connection.cursor()
|
db_cursor = db_connection.cursor()
|
||||||
|
|
||||||
# Wiederhole die Abfrage nach dem erneuten Verbinden
|
# Erneut versuchen, die Daten zu aktualisieren
|
||||||
update_user_data(user_id, guild_id, field, value)
|
db_cursor.execute(update_query, (value, user_id, guild_id))
|
||||||
|
db_connection.commit()
|
||||||
|
|
||||||
def connect_to_database():
|
def connect_to_database():
|
||||||
return mysql.connector.connect(
|
return mysql.connector.connect(
|
||||||
@@ -232,7 +230,6 @@ def load_user_data_from_mysql(user_id, guild_id):
|
|||||||
close_database_connection(connection)
|
close_database_connection(connection)
|
||||||
|
|
||||||
if result:
|
if result:
|
||||||
# Wenn das Level und die XP nicht vorhanden sind, initialisieren
|
|
||||||
user_data = {
|
user_data = {
|
||||||
"user_id": result[0],
|
"user_id": result[0],
|
||||||
"guild_id": result[1],
|
"guild_id": result[1],
|
||||||
@@ -243,28 +240,24 @@ def load_user_data_from_mysql(user_id, guild_id):
|
|||||||
"filter_value": result[6],
|
"filter_value": result[6],
|
||||||
"rank": result[7],
|
"rank": result[7],
|
||||||
"chat_history": json.loads(result[8]) if result[8] else [],
|
"chat_history": json.loads(result[8]) if result[8] else [],
|
||||||
"asknotes_history": json.loads(result[9]) if result[9] else [],
|
|
||||||
"xp": result[10],
|
"xp": result[10],
|
||||||
"level": result[11]
|
"level": result[11]
|
||||||
}
|
}
|
||||||
else:
|
else:
|
||||||
# Wenn keine Benutzerdaten gefunden werden, neue Daten anlegen
|
# Falls keine Benutzerdaten vorhanden sind, neue Daten anlegen
|
||||||
print(f"No data found for user {user_id} in guild {guild_id}. Inserting new data.")
|
|
||||||
user_data = {
|
user_data = {
|
||||||
"user_id": user_id,
|
"user_id": user_id,
|
||||||
"guild_id": guild_id,
|
"guild_id": guild_id,
|
||||||
"permission": 0, # Standardberechtigung
|
"permission": 0,
|
||||||
"points": 0, # Standardpunkte
|
"points": 0,
|
||||||
"ban": 0, # Standardbannstatus
|
"ban": 0,
|
||||||
"askmultus": 0, # Standardwert für askmultus
|
"askmultus": 0,
|
||||||
"filter_value": 0, # Standardwert für Filter
|
"filter_value": 0,
|
||||||
"rank": 0, # Standardrang
|
"rank": 0,
|
||||||
"chat_history": [], # Leerer Chatverlauf
|
"chat_history": [],
|
||||||
"asknotes_history": [], # Leerer Chatverlauf
|
"xp": 0,
|
||||||
"xp": 0, # Standard-XP
|
"level": 1
|
||||||
"level": 1 # Standardlevel
|
|
||||||
}
|
}
|
||||||
|
|
||||||
insert_user_data(
|
insert_user_data(
|
||||||
user_data["user_id"],
|
user_data["user_id"],
|
||||||
user_data["guild_id"],
|
user_data["guild_id"],
|
||||||
@@ -486,26 +479,22 @@ def calculate_xp_needed_for_level(level):
|
|||||||
|
|
||||||
async def add_xp_to_user(user_id, guild_id, xp_gained):
|
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."""
|
"""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)
|
user_data = load_user_data(user_id, guild_id)
|
||||||
|
|
||||||
# Füge die gewonnenen XP hinzu
|
# Füge die XP hinzu
|
||||||
user_data["xp"] += xp_gained
|
user_data["xp"] += xp_gained
|
||||||
|
|
||||||
# Berechne die benötigten XP für das aktuelle Level
|
# Berechne die benötigten XP für das aktuelle Level
|
||||||
level = user_data["level"]
|
level = user_data["level"]
|
||||||
xp_needed = calculate_xp_needed_for_level(level)
|
xp_needed = calculate_xp_needed_for_level(level)
|
||||||
|
|
||||||
# Überprüfe, ob der Benutzer aufgestiegen ist
|
# Überprüfe, ob der Benutzer ein Level aufsteigt
|
||||||
while user_data["xp"] >= xp_needed:
|
while user_data["xp"] >= xp_needed:
|
||||||
# Reduziere die überschüssigen XP und erhöhe das Level
|
|
||||||
user_data["xp"] -= xp_needed
|
user_data["xp"] -= xp_needed
|
||||||
user_data["level"] += 1
|
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"])
|
xp_needed = calculate_xp_needed_for_level(user_data["level"])
|
||||||
|
|
||||||
# Speichere die aktualisierten Benutzerdaten in der Datenbank
|
# Aktualisiere die Datenbank
|
||||||
update_user_data(user_id, guild_id, "xp", user_data["xp"])
|
update_user_data(user_id, guild_id, "xp", user_data["xp"])
|
||||||
update_user_data(user_id, guild_id, "level", user_data["level"])
|
update_user_data(user_id, guild_id, "level", user_data["level"])
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user