Initial commit: bot Discord Vicy V1.8
This commit is contained in:
commit
56958c5832
70 changed files with 8469 additions and 0 deletions
82
utils/stats_manager.py
Normal file
82
utils/stats_manager.py
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
import sqlite3
|
||||
import datetime
|
||||
import os
|
||||
|
||||
# Chemin de la base de données (dans un sous-dossier "data" pour garder le projet propre)
|
||||
DB_PATH = "data/stats.db"
|
||||
|
||||
# Crée le dossier "data" si besoin
|
||||
os.makedirs(os.path.dirname(DB_PATH), exist_ok=True)
|
||||
|
||||
# Connexion à la base de données
|
||||
conn = sqlite3.connect(DB_PATH)
|
||||
cursor = conn.cursor()
|
||||
|
||||
# Création de la table si elle n'existe pas
|
||||
cursor.execute('''
|
||||
CREATE TABLE IF NOT EXISTS commandes (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
nom TEXT,
|
||||
user_id INTEGER,
|
||||
guild_id INTEGER,
|
||||
date TIMESTAMP
|
||||
)
|
||||
''')
|
||||
conn.commit()
|
||||
|
||||
def enregistrer_utilisation(nom_commande, user_id, guild_id):
|
||||
"""Enregistre l'utilisation d'une commande."""
|
||||
cursor.execute(
|
||||
"INSERT INTO commandes (nom, user_id, guild_id, date) VALUES (?, ?, ?, ?)",
|
||||
(nom_commande, user_id, guild_id, datetime.datetime.now())
|
||||
)
|
||||
conn.commit()
|
||||
|
||||
def get_stats():
|
||||
"""Retourne les statistiques d'utilisation du bot."""
|
||||
cursor.execute("SELECT COUNT(*) FROM commandes")
|
||||
total = cursor.fetchone()[0]
|
||||
|
||||
cursor.execute("SELECT nom, COUNT(*) as nb FROM commandes GROUP BY nom ORDER BY nb DESC LIMIT 5")
|
||||
top_commandes = cursor.fetchall()
|
||||
|
||||
cursor.execute("SELECT user_id, COUNT(*) as nb FROM commandes GROUP BY user_id ORDER BY nb DESC LIMIT 1")
|
||||
top_user = cursor.fetchone()
|
||||
|
||||
return total, top_commandes, top_user
|
||||
|
||||
|
||||
def get_stats_detailed():
|
||||
# Exemple de données simulées, à remplacer par tes vraies données
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
total_commandes = 1234
|
||||
top_commandes = [("help", 250), ("stats_bot", 180), ("play", 160), ("ban", 100), ("kick", 90)]
|
||||
top_utilisateurs = [(123456789012345678, 300), (987654321098765432, 220), (111222333444555666, 180), (444555666777888999, 160), (555666777888999000, 130)]
|
||||
|
||||
today = datetime.today()
|
||||
evolution_commandes = []
|
||||
for i in range(7): # dernière semaine
|
||||
day = today - timedelta(days=6 - i)
|
||||
evolution_commandes.append((day, 150 + i*10))
|
||||
|
||||
repartition_statuts = {"À faire": 50, "En cours": 30, "Terminée": 70, "Bloqué": 10}
|
||||
|
||||
commandes_par_jour = {
|
||||
"Lundi": 180,
|
||||
"Mardi": 210,
|
||||
"Mercredi": 150,
|
||||
"Jeudi": 200,
|
||||
"Vendredi": 220,
|
||||
"Samedi": 90,
|
||||
"Dimanche": 40,
|
||||
}
|
||||
|
||||
return {
|
||||
"total_commandes": total_commandes,
|
||||
"top_commandes": top_commandes,
|
||||
"top_utilisateurs": top_utilisateurs,
|
||||
"evolution_commandes": evolution_commandes,
|
||||
"repartition_statuts": repartition_statuts,
|
||||
"commandes_par_jour": commandes_par_jour
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue