diff --git a/app.py b/app.py index 301c5e7..55db431 100644 --- a/app.py +++ b/app.py @@ -8,7 +8,7 @@ import os import subprocess import psutil import mysql.connector -from datetime import datetime +from datetime import datetime, timedelta from flask_session import Session app = Flask(__name__) @@ -488,6 +488,34 @@ def user_dashboard(guild_id): flash("Please log in to view your dashboard.", "danger") return redirect(url_for("landing_page")) +@app.route("/user_dashboard//leaderboard") +def leaderboard(guild_id): + """Zeigt das Level Leaderboard für einen bestimmten Server an.""" + if "discord_user" in session: + connection = get_db_connection() + cursor = connection.cursor(dictionary=True) + + # Holen des aktuellen Datums und des Datums von einem Monat zurück + current_date = datetime.now() + one_month_ago = current_date - timedelta(days=30) + + # Abfrage für das Leaderboard + cursor.execute(""" + SELECT nickname, profile_picture, level, xp, join_date + FROM user_data + WHERE guild_id = %s + AND ban = 0 + AND (leave_date IS NULL OR leave_date > %s) + ORDER BY level DESC, xp DESC + """, (guild_id, one_month_ago)) + + leaderboard_data = cursor.fetchall() + + cursor.close() + connection.close() + + return render_template("leaderboard.html", leaderboard=leaderboard_data, guild_id=guild_id) + return redirect(url_for("landing_page")) @app.route("/server_giveaways/") def server_giveaways(guild_id): diff --git a/templates/leaderboard.html b/templates/leaderboard.html new file mode 100644 index 0000000..3f81334 --- /dev/null +++ b/templates/leaderboard.html @@ -0,0 +1,57 @@ + + + + + + Level Leaderboard + + + + + {% include 'navigation.html' %} +
+

Level Leaderboard - Server {{ guild_id }}

+
+ + + + + + + + + + + + + {% for index, user in enumerate(leaderboard, start=1) %} + + + + + + + + + {% endfor %} + +
RankProfileNicknameLevelXPJoined
{{ index }}Profile Picture{{ user.nickname }}{{ user.level }}{{ user.xp }}{{ user.join_date }}
+ {% if leaderboard|length == 0 %} +

No users found for this leaderboard.

+ {% endif %} +
+ Back to Dashboard +
+ +