Ajout de la gestion des jeux gratuits et des invitations Discord. Création des modèles FreeGame et DiscordInvite, mise à jour de la base de données et des fichiers de configuration. Intégration de nouvelles fonctionnalités pour synchroniser et révoquer les invitations, ainsi que l'ajout d'un flux RSS pour les jeux gratuits. Amélioration de l'interface d'administration avec des statistiques et des options de gestion des serveurs.

This commit is contained in:
Mow
2025-12-06 11:25:45 +01:00
parent 54b014c4c8
commit 42db84f010
23 changed files with 3671 additions and 697 deletions
+29 -3
View File
@@ -1,12 +1,13 @@
from flask import render_template, request, redirect, url_for
from flask import render_template, request, redirect, url_for, flash
from webapp import webapp
from database import db
from database.helpers import ConfigurationHelper
from discordbot import bot
import asyncio
@webapp.route("/configurations")
def openConfigurations():
return render_template("configurations.html", configuration = ConfigurationHelper(), channels = bot.getAllTextChannel(), roles = bot.getAllRoles())
return render_template("configurations.html", configuration = ConfigurationHelper(), channels = bot.getAllTextChannel(), roles = bot.getAllRoles(), guilds = bot.getAllGuilds())
@webapp.route("/configurations/update", methods=['POST'])
def updateConfiguration():
@@ -17,7 +18,8 @@ def updateConfiguration():
'moderation_ban_enable': 'moderation_staff_role_ids',
'moderation_kick_enable': 'moderation_staff_role_ids',
'welcome_enable': 'welcome_channel_id',
'leave_enable': 'leave_channel_id'
'leave_enable': 'leave_channel_id',
'autorole_enable': 'autorole_role_id'
}
staff_roles = request.form.getlist('moderation_staff_role_ids')
@@ -40,3 +42,27 @@ def updateConfiguration():
db.session.commit()
return redirect(request.referrer)
@webapp.route("/configurations/leave-guild", methods=['POST'])
def leaveGuild():
guild_id = request.form.get('guild_id')
confirm = request.form.get('confirm_leave')
if not guild_id or not confirm:
flash('Veuillez sélectionner un serveur et confirmer l\'action.', 'error')
return redirect(url_for('openConfigurations'))
try:
guild_id_int = int(guild_id)
# Exécuter la coroutine dans le loop du bot
future = asyncio.run_coroutine_threadsafe(bot.leaveGuild(guild_id_int), bot.loop)
result = future.result(timeout=10)
if result:
flash('Le bot a quitté le serveur avec succès.', 'success')
else:
flash('Serveur non trouvé.', 'error')
except Exception as e:
flash(f'Erreur lors de la tentative de quitter le serveur : {str(e)}', 'error')
return redirect(url_for('openConfigurations'))