modified: bot.py
This commit is contained in:
30
bot.py
30
bot.py
@@ -167,20 +167,38 @@ db_cursor.execute(create_table_query)
|
|||||||
db_connection.commit()
|
db_connection.commit()
|
||||||
|
|
||||||
def insert_user_data(user_id, guild_id, permission, points, ban, askmultus, filter_value, chat_history, xp=0, level=1):
|
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_query = """
|
||||||
INSERT INTO user_data (user_id, guild_id, permission, points, ban, askmultus, filter_value, rank, chat_history, xp, level)
|
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)
|
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
|
||||||
"""
|
"""
|
||||||
serialized_chat_history = json.dumps(chat_history)
|
serialized_chat_history = json.dumps(chat_history)
|
||||||
data = (user_id, guild_id, permission, points, ban, askmultus, filter_value, 0, serialized_chat_history, xp, level)
|
data = (user_id, guild_id, permission, points, ban, askmultus, filter_value, 0, serialized_chat_history, xp, level)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
db_cursor.execute(insert_query, data)
|
db_cursor.execute(insert_query, data)
|
||||||
db_connection.commit()
|
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:
|
except Exception as e:
|
||||||
print(f"Error inserting user data: {e}")
|
print(f"Error inserting user data: {e}")
|
||||||
db_connection.rollback()
|
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):
|
def update_user_data(user_id, guild_id, field, value):
|
||||||
global db_connection, db_cursor # Verbindung global nutzen
|
global db_connection, db_cursor # Verbindung global nutzen
|
||||||
try:
|
try:
|
||||||
@@ -479,22 +497,26 @@ 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 XP hinzu
|
# Füge die gewonnenen 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 ein Level aufsteigt
|
# Überprüfe, ob der Benutzer aufgestiegen ist
|
||||||
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"])
|
||||||
|
|
||||||
# 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, "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