From 8c2835aad6f02cb501e82790aa2aa2af8421ac23 Mon Sep 17 00:00:00 2001 From: SimolZimol <70102430+SimolZimol@users.noreply.github.com> Date: Thu, 24 Oct 2024 13:13:46 +0200 Subject: [PATCH] modified: app.py --- app.py | 70 +++++++++++++--------------------------------------------- 1 file changed, 15 insertions(+), 55 deletions(-) diff --git a/app.py b/app.py index 35e1f96..2441155 100644 --- a/app.py +++ b/app.py @@ -138,7 +138,6 @@ def login(): @app.route("/callback") def callback(): - """Verarbeitet den OAuth2-Rückruf von Discord.""" try: discord = make_discord_session(state=session.get("oauth_state")) token = discord.fetch_token( @@ -148,44 +147,51 @@ def callback(): ) session['oauth_token'] = token - + # Abrufen der Benutzerinformationen von Discord user_info = discord.get(DISCORD_API_URL).json() session['discord_user'] = user_info - # Hole die Gilden (Server), auf denen der Benutzer ist + # Debug: Benutzerinformationen ausgeben + print(f"User info: {user_info}") + + # Abrufen der Gilden guilds_response = discord.get('https://discord.com/api/users/@me/guilds') + print(f"Guilds response status: {guilds_response.status_code}") if guilds_response.status_code != 200: + print(f"Fehler beim Abrufen der Gilden: {guilds_response.content}") flash("Fehler beim Abrufen der Gilden.", "danger") return redirect(url_for("landing_page")) guilds = guilds_response.json() + print(f"Guilds: {guilds}") - # Verbindung zur Datenbank herstellen + # Falls keine Gilden zurückgegeben werden + if not guilds: + flash("Du bist in keinem Server, der den Bot verwendet.", "danger") + return redirect(url_for("landing_page")) + + # Verbindung zur Datenbank herstellen und die Gildeninformationen speichern connection = get_db_connection() cursor = connection.cursor() - # Speichern oder Aktualisieren der Gildeninformationen in der Datenbank for guild in guilds: guild_id = guild['id'] guild_name = guild['name'] guild_icon = guild.get('icon', None) # Manche Gilden haben kein Icon owner_id = guild['owner_id'] - # Prüfen, ob die Gilde bereits existiert cursor.execute("SELECT COUNT(*) FROM guilds WHERE guild_id = %s", (guild_id,)) exists = cursor.fetchone()[0] if exists: - # Gilde aktualisieren cursor.execute(""" UPDATE guilds SET name = %s, icon = %s, owner_id = %s WHERE guild_id = %s """, (guild_name, guild_icon, owner_id, guild_id)) else: - # Neue Gilde einfügen cursor.execute(""" INSERT INTO guilds (guild_id, name, icon, owner_id) VALUES (%s, %s, %s, %s) @@ -197,58 +203,13 @@ def callback(): session['discord_guilds'] = guilds # Speichere die Gilden in der Session - # Weiterleitung zur Server-Auswahl return redirect(url_for("server_selection")) - + except Exception as e: print(f"Error in OAuth2 callback: {e}") flash("Ein Fehler ist beim Authentifizierungsprozess aufgetreten.", "danger") return redirect(url_for("landing_page")) -def initialize_guilds(): - """Überprüft alle Gilden in user_data und stellt sicher, dass sie in der guilds-Tabelle vorhanden sind.""" - try: - # Verbindung zur Datenbank herstellen - connection = get_db_connection() - cursor = connection.cursor(dictionary=True) - - # Alle Gilden-IDs aus user_data abrufen - cursor.execute("SELECT DISTINCT guild_id FROM user_data") - user_guilds = cursor.fetchall() - - # Liste aller Gilden-IDs, die von Discord aktualisiert werden müssen - guilds_to_update = [] - - # Überprüfen, ob jede Gilde aus user_data in guilds vorhanden ist - for guild in user_guilds: - guild_id = guild['guild_id'] - cursor.execute("SELECT COUNT(*) AS count FROM guilds WHERE guild_id = %s", (guild_id,)) - result = cursor.fetchone() - if result['count'] == 0: - # Gilde existiert nicht in der guilds-Tabelle, muss also aktualisiert werden - guilds_to_update.append(guild_id) - - # Wenn Gilden aktualisiert werden müssen, verwende die Discord-API - if guilds_to_update: - discord = make_discord_session() - for guild_id in guilds_to_update: - guild_info = discord.get(f'https://discord.com/api/guilds/{guild_id}').json() - if 'id' in guild_info: - # Gildeninformationen in die guilds-Tabelle einfügen - cursor.execute(""" - INSERT INTO guilds (guild_id, name, icon, owner_id) - VALUES (%s, %s, %s, %s) - """, (guild_info['id'], guild_info['name'], guild_info.get('icon', None), guild_info['owner_id'])) - connection.commit() - print(f"Gilde {guild_info['name']} erfolgreich hinzugefügt.") - - cursor.close() - connection.close() - - except Exception as e: - print(f"Fehler beim Initialisieren der Gilden: {e}") - - @app.route("/server_selection") def server_selection(): """Zeigt dem Benutzer eine Liste aller Server an, auf denen er sich befindet und die in der Datenbank vorhanden sind.""" @@ -336,5 +297,4 @@ def stop(): return redirect(url_for("landing_page")) if __name__ == "__main__": - initialize_guilds() app.run(host="0.0.0.0", port=5000, debug=True)