Refonte du systeme d'avertissement et devient un moderation_event

Ajout de la commande !ban !kick !unban !listevent

Ajout du role ID dans le panel , et possibilité d'activé les commandes via le panel
This commit is contained in:
Mow
2025-10-15 22:29:41 +02:00
parent aff236fd0c
commit fd172e2ea0
8 changed files with 610 additions and 32 deletions

View File

@@ -17,6 +17,12 @@ def updateConfiguration():
ConfigurationHelper().createOrUpdate('humble_bundle_enable', False)
if (request.form.get("proton_db_api_id") != None and request.form.get("proton_db_enable_enable") == None) :
ConfigurationHelper().createOrUpdate('proton_db_enable_enable', False)
if (request.form.get("moderation_staff_role_id") != None and request.form.get("moderation_enable") == None) :
ConfigurationHelper().createOrUpdate('moderation_enable', False)
if (request.form.get("moderation_staff_role_id") != None and request.form.get("moderation_ban_enable") == None) :
ConfigurationHelper().createOrUpdate('moderation_ban_enable', False)
if (request.form.get("moderation_staff_role_id") != None and request.form.get("moderation_kick_enable") == None) :
ConfigurationHelper().createOrUpdate('moderation_kick_enable', False)
db.session.commit()
return redirect(request.referrer)

View File

@@ -1,9 +1,24 @@
from flask import render_template
from flask import render_template, request, redirect, url_for
from webapp import webapp
from database.models import Warning
from database import db
from database.models import ModerationEvent
@webapp.route("/moderation")
def moderation():
warnings = Warning.query.order_by(Warning.created_at.desc()).all()
return render_template("moderation.html", warnings=warnings)
events = ModerationEvent.query.order_by(ModerationEvent.created_at.desc()).all()
return render_template("moderation.html", events=events)
@webapp.route("/moderation/update/<int:event_id>", methods=['POST'])
def update_moderation_event(event_id):
event = ModerationEvent.query.get_or_404(event_id)
event.reason = request.form.get('reason')
db.session.commit()
return redirect(url_for('moderation'))
@webapp.route("/moderation/delete/<int:event_id>")
def delete_moderation_event(event_id):
event = ModerationEvent.query.get_or_404(event_id)
db.session.delete(event)
db.session.commit()
return redirect(url_for('moderation'))

View File

@@ -55,4 +55,32 @@
</select>
<input type="Submit" value="Définir">
</form>
<h2>Modération Discord</h2>
<form action="{{ url_for('updateConfiguration') }}" method="POST">
<label for="moderation_enable">Activer les avertissements</label>
<input type="checkbox" name="moderation_enable" {% if configuration.getValue('moderation_enable') %}
checked="checked" {% endif %}>
<label>Activer les commandes d'avertissement (!averto, !delaverto, !listaverto)</label>
<label for="moderation_ban_enable">Activer le ban</label>
<input type="checkbox" name="moderation_ban_enable" {% if configuration.getValue('moderation_ban_enable') %}
checked="checked" {% endif %}>
<label>Activer les commandes de bannissement (!ban, !unban)</label>
<label for="moderation_kick_enable">Activer le kick</label>
<input type="checkbox" name="moderation_kick_enable" {% if configuration.getValue('moderation_kick_enable') %}
checked="checked" {% endif %}>
<label>Activer la commande d'expulsion (!kick)</label>
<label for="moderation_staff_role_id">ID du rôle Staff</label>
<input name="moderation_staff_role_id" type="text" value="{{ configuration.getValue('moderation_staff_role_id') }}"
placeholder="581990740431732738" />
<label for="moderation_embed_delete_delay">Délai de suppression des embeds (en secondes, 0 = ne pas supprimer)</label>
<input name="moderation_embed_delete_delay" type="number" value="{{ configuration.getValue('moderation_embed_delete_delay') or '0' }}"
placeholder="0" min="0" />
<input type="Submit" value="Définir">
</form>
{% endblock %}

View File

@@ -2,25 +2,39 @@
{% block content %}
<h1>Modération Discord</h1>
<p>Liste des avertissements émis sur le serveur Discord.</p>
<p>Historique des actions de modération sur le serveur Discord.</p>
<table>
<thead>
<tr>
<th>ID</th>
<th>Type</th>
<th>Utilisateur</th>
<th>Discord ID</th>
<th>Date & Heure</th>
<th>Raison</th>
<th>Staff</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{% for warning in warnings %}
{% for event in events %}
<tr>
<td>{{ warning.username }}</td>
<td>{{ warning.discord_id }}</td>
<td>{{ warning.created_at.strftime('%d/%m/%Y %H:%M') if warning.created_at else 'N/A' }}</td>
<td>{{ warning.reason }}</td>
<td>{{ warning.staff_name }}</td>
<td>{{ event.id }}</td>
<td>{{ event.type }}</td>
<td>{{ event.username }}</td>
<td>{{ event.discord_id }}</td>
<td>{{ event.created_at.strftime('%d/%m/%Y %H:%M') if event.created_at else 'N/A' }}</td>
<td>
<form action="{{ url_for('update_moderation_event', event_id = event.id) }}" method="POST" style="margin: 0;">
<input name="reason" type="text" value="{{ event.reason }}" style="width: 100%;" />
</form>
</td>
<td>{{ event.staff_name }}</td>
<td>
<a href="javascript:void(0)" onclick="this.parentElement.parentElement.querySelector('form').submit()">Modifier</a>
|
<a href="{{ url_for('delete_moderation_event', event_id = event.id) }}" onclick="return confirm('Êtes-vous sûr de vouloir supprimer cet événement ?')">🗑️ Supprimer</a>
</td>
</tr>
{% endfor %}
</tbody>