Files
Mow910andCursor b274dcaa51 Ajout de fonctionnalités majeures Twitch, Discord et interface web
Nouvelles fonctionnalités :
- Système de modération Twitch complet (bans, timeouts, avertissements)
- Filtre de liens intelligent pour Twitch avec whitelist/blacklist
- Notifications d'événements Twitch (follows, subs, raids, etc.)
- Système Freeloot Discord avec flux RSS dédié
- Salons automatiques Discord (création/suppression dynamique)
- Authentification utilisateur pour l'interface web (login/register)
- Gestion des utilisateurs et permissions
- Interface de modération Twitch dans la webapp
- Interface de gestion des événements Twitch
- Configuration des paramètres utilisateur
- Migration BDD pour les mots bannis

Améliorations de l'interface :
- Refonte complète des templates (configurations, commandes, humeurs, etc.)
- Nouvelle page de settings utilisateur
- Page de gestion des utilisateurs (admin)
- Page d'erreur 403 personnalisée
- Amélioration de la navigation et du design global
- Intégration de nouvelles sections dans le menu principal

Modifications techniques :
- Ajout de nouveaux modèles en base de données
- Extension des helpers database
- Mise à jour des dépendances (requirements.txt)
- Amélioration de la gestion des annonces Twitch
- Refactorisation du code pour meilleure maintenabilité

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-12 22:37:22 +01:00

70 lines
2.5 KiB
Python

from flask import render_template, request, redirect, url_for, flash
from webapp import webapp
from webapp.auth import require_page, can_write_page
from database import db
from database.models import Commande
@webapp.route("/commandes")
@require_page("commandes")
def commandes():
commandes_list = Commande.query.all()
return render_template("commandes.html", commandes=commandes_list, twitch_permissions=TWITCH_PERMISSIONS)
TWITCH_PERMISSIONS = {'viewer': 'Tous (viewers)', 'sub': 'Abonnés', 'vip': 'VIP', 'moderator': 'Modérateur'}
@webapp.route("/commandes/add", methods=['POST'])
@require_page("commandes")
def add_commande():
if not can_write_page("commandes"):
return render_template("403.html"), 403
trigger = request.form.get('trigger')
response = request.form.get('response')
discord_enable = request.form.get('discord_enable') != None
twitch_enable = request.form.get('twitch_enable') != None
twitch_permission = request.form.get('twitch_permission') or 'viewer'
if twitch_permission not in TWITCH_PERMISSIONS:
twitch_permission = 'viewer'
if trigger and response:
if not trigger.startswith('!'):
trigger = '!' + trigger
existing = Commande.query.filter_by(trigger=trigger).first()
if not existing:
commande = Commande(trigger=trigger, response=response, discord_enable=discord_enable, twitch_enable=twitch_enable, twitch_permission=twitch_permission)
db.session.add(commande)
db.session.commit()
return redirect(url_for('commandes'))
@webapp.route("/commandes/delete/<int:commande_id>")
@require_page("commandes")
def delete_commande(commande_id):
if not can_write_page("commandes"):
return render_template("403.html"), 403
commande = Commande.query.get_or_404(commande_id)
db.session.delete(commande)
db.session.commit()
return redirect(url_for('commandes'))
@webapp.route("/commandes/toggle-discord/<int:commande_id>")
@require_page("commandes")
def toggle_discord_commande(commande_id):
if not can_write_page("commandes"):
return render_template("403.html"), 403
commande = Commande.query.get_or_404(commande_id)
commande.discord_enable = not commande.discord_enable
db.session.commit()
return redirect(url_for('commandes'))
@webapp.route("/commandes/toggle-twitch/<int:commande_id>")
@require_page("commandes")
def toggle_twitch_commande(commande_id):
if not can_write_page("commandes"):
return render_template("403.html"), 403
commande = Commande.query.get_or_404(commande_id)
commande.twitch_enable = not commande.twitch_enable
db.session.commit()
return redirect(url_for('commandes'))