From eb9bf0e67e4484c2ebe05c6e795c973ffb543534 Mon Sep 17 00:00:00 2001 From: skylanix Date: Thu, 30 Oct 2025 01:38:43 +0100 Subject: [PATCH] =?UTF-8?q?Am=C3=A9liore=20la=20communication=20moderation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 45 +++++-------------- webapp/moderation.py | 8 +++- webapp/templates/moderation.html | 75 ++++++++++++++++++++------------ 3 files changed, 66 insertions(+), 62 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index ecea7ab..ac76a2b 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,14 +1,14 @@ services: mamiehenriette: container_name: MamieHenriette # Nom du conteneur - image: ghcr.io/skylanix/mamiehenriette:latest # Image hébergée sur GitHub Container Registry +# image: ghcr.io/skylanix/mamiehenriette:latest # Image hébergée sur GitHub Container Registry restart: unless-stopped # Redémarre automatiquement sauf si arrêté manuellement -# build: . # Build du conteneur à partir d'un Dockerfile local (décommentez si nécessaire) -# image: mamiehenriette # Build du conteneur à partir d'un Dockerfile local (décommentez si nécessaire) + build: . # Build du conteneur à partir d'un Dockerfile local (décommentez si nécessaire) + image: mamiehenriette # Build du conteneur à partir d'un Dockerfile local (décommentez si nécessaire) environment: - TZ: Europe/Paris # Fuseau horaire + TZ: Europe/Zurich # Fuseau horaire volumes: - ./instance:/app/instance # Base de données et configuration persistante - ./logs:/app/logs # Logs de l'application @@ -16,33 +16,12 @@ services: ports: - 5000:5000 # Interface web sur http://localhost:5000 - watchtower: # Permet de mettre à jours automatiquement - image: containrrr/watchtower:latest - container_name: watchtower # Nom du conteneur - restart: unless-stopped # Redémarre automatiquement sauf si arrêté manuellement - environment: - TZ: Europe/Paris # Fuseau horaire - # Liste des conteneurs à surveiller (séparés par des espaces) - WATCHTOWER_INCLUDE: "MamieHenriette" - WATCHTOWER_SCHEDULE: "0 */30 * * * *" # Vérification toutes les 30 minutes - WATCHTOWER_MONITOR_ONLY: "false" # Mode surveillance uniquement : détecte les mises à jour mais ne les applique pas - WATCHTOWER_CLEANUP: "true" # Supprime automatiquement les anciennes images après mise à jour - WATCHTOWER_INCLUDE_RESTARTING: "true" # Inclut les conteneurs en cours de redémarrage dans la surveillance - # URL de notification Discord (webhook), (décommentez si nécessaire) -# WATCHTOWER_NOTIFICATION_URL: "discord://token@id" - # Format personnalisé des messages de notification (décommentez si nécessaire) -# WATCHTOWER_NOTIFICATION_TEMPLATE: |- -# {{range .}}{{.Time.Format "01-02-2006 15:04:05"}} ({{.Level}})':' {{.Message}}{{println}}{{end}} -# WATCHTOWER_NOTIFICATIONS: shoutrrr # Service de notification utilisé pour Discord (décommentez si nécessaire) + sqlite-web: # Interface web pour visualiser et éditer la base de données SQLite + image: ghcr.io/coleifer/sqlite-web:latest # Image officielle sqlite-web + container_name: sqlite_web2 # Nom du conteneur + ports: + - "5001:8080" # Accès web via localhost:8080 volumes: - - /var/run/docker.sock:/var/run/docker.sock # Monte le socket Docker pour permettre à Watchtower de surveiller les conteneurs - -# sqlite-web: # Interface web pour visualiser et éditer la base de données SQLite -# image: ghcr.io/coleifer/sqlite-web:latest # Image officielle sqlite-web -# container_name: sqlite_web # Nom du conteneur -# ports: -# - "5001:8080" # Accès web via localhost:8080 -# volumes: -# - ./instance/database.db:/data/database.db # Monte la base de données locale dans le conteneur -# environment: -# - SQLITE_DATABASE=/data/database.db # Chemin vers la base de données dans le conteneur + - ./instance/database.db:/data/database.db # Monte la base de données locale dans le conteneur + environment: + - SQLITE_DATABASE=/data/database.db # Chemin vers la base de données dans le conteneur diff --git a/webapp/moderation.py b/webapp/moderation.py index b26cf47..5571487 100644 --- a/webapp/moderation.py +++ b/webapp/moderation.py @@ -6,7 +6,13 @@ from database.models import ModerationEvent @webapp.route("/moderation") def moderation(): events = ModerationEvent.query.order_by(ModerationEvent.created_at.desc()).all() - return render_template("moderation.html", events=events) + return render_template("moderation.html", events=events, event=None) + +@webapp.route("/moderation/edit/") +def open_edit_moderation_event(event_id): + event = ModerationEvent.query.get_or_404(event_id) + events = ModerationEvent.query.order_by(ModerationEvent.created_at.desc()).all() + return render_template("moderation.html", events=events, event=event) @webapp.route("/moderation/update/", methods=['POST']) def update_moderation_event(event_id): diff --git a/webapp/templates/moderation.html b/webapp/templates/moderation.html index cf00a6e..83be543 100644 --- a/webapp/templates/moderation.html +++ b/webapp/templates/moderation.html @@ -2,50 +2,69 @@ {% block content %}

Modération Discord

-

Les commandes de modération sont :

-
    -
  • !kick @utilisateur [raison]
  • -
  • !ban @utilisateur [raison]
  • -
  • !warn @utilisateur [raison]
  • -
  • !unwarn @utilisateur
  • -
-

Historique des actions de modération sur le serveur Discord.

- + +

+ Historique des actions de modération effectuées sur le serveur Discord. + + Le bot enregistre automatiquement les avertissements, exclusions et bannissements. + Exemples de commandes : +

    +
  • !kick @utilisateur raison - !kick @Jean Spam de liens
  • +
  • !ban @utilisateur raison - !ban @Marie Comportement toxique répété
  • +
  • !warn @utilisateur raison - !warn @Paul Langage inapproprié
  • +
  • !unwarn @utilisateur - !unwarn @Paul
  • +
+

+ +{% if not event %} +

Événements de modération

+
- - + - {% for event in events %} + {% for mod_event in events %} - - - - - + + + + + + - - {% endfor %}
ID Type Utilisateur Discord ID Date & Heure Raison StaffActions#
{{ event.id }}{{ event.type }}{{ event.username }}{{ event.discord_id }}{{ event.created_at.strftime('%d/%m/%Y %H:%M') if event.created_at else 'N/A' }}{{ mod_event.type }}{{ mod_event.username }}{{ mod_event.discord_id }}{{ mod_event.created_at.strftime('%d/%m/%Y %H:%M') if mod_event.created_at else 'N/A' }}{{ mod_event.reason }}{{ mod_event.staff_name }} -
- -
-
{{ event.staff_name }} - Modifier - | - 🗑️ Supprimer + + 🗑
+{% endif %} + +{% if event %} +

Editer un événement

+
+ + + + + + + + + + + + Annuler +
+{% endif %} + {% endblock %} - -