Bot discord mute auto et calcul du temps passé

dokkax Messages postés 1 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour,

S'il vous plaît aidez-moi à créer un code pour un bot discord qui va :

  1. rendre muet tout le monde dans le channel vocal (id du channel vocal : 1307451490901950506 )
  2. poster tous les jours à minuit le temps passé ces dernières 24h dans le channel vocal  de chaque utilisateur (en mode top 3) sur un channel écrit (id du chanel :1307254551199613013) 


Windows / Chrome 131.0.0.0

1 réponse

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     

    Bonjour,

    Il faut voir au niveau de l'API discord si tu peux rendre muet un utilisateur et si tu peux effectivement récupérer les temps de paroles de chacun.

    Sous ces conditions, tu devrais utiliser la classe datetime.timedelta pour stocker les temps écoulés, puis utiliser la fonction sorted pour faire ton classement.

    #!/usr/bin/env python3
    
    from datetime import timedelta
    from pprint import pprint
    from operator import itemgetter
    
    measurements = [
        ("aaa", timedelta(hours=3)),
        ("bbb", timedelta(hours=3, minutes=2)),
        ("ccc", timedelta(hours=2)),
        ("ddd", timedelta(minutes=1)),
        ("eee", timedelta(days=2, hours=1)),
    ]
    pprint(measurements)
    
    measurements = sorted(
        measurements,
        key=itemgetter(1),  # Les durées sont à la position 1 de chaque tuple
        reverse=True        # Tri par durée décroissante
    )
    
    n = 3
    print(f"Top {n}:")
    for i in range(n):
        print(measurements[i][0]) # Affichage des noms

    Résultat :

    [('aaa', datetime.timedelta(seconds=10800)),
     ('bbb', datetime.timedelta(seconds=10920)),
     ('ccc', datetime.timedelta(seconds=7200)),
     ('ddd', datetime.timedelta(seconds=60)),
     ('eee', datetime.timedelta(days=2, seconds=3600))]
    Top 3:
    eee
    bbb
    aaa

    Bonne chance

    0