From ffcd3c80291c3b17128466efa9b2687d85bb48c9 Mon Sep 17 00:00:00 2001 From: nemesis Date: Wed, 11 Jul 2018 21:36:27 +0200 Subject: [PATCH] Quote --- asmodee.ini | 1 + asmodee.py | 125 ++++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 97 insertions(+), 29 deletions(-) diff --git a/asmodee.ini b/asmodee.ini index 1a6a973..abcc429 100644 --- a/asmodee.ini +++ b/asmodee.ini @@ -2,4 +2,5 @@ username = "" password = "" server = "" +admin = "" diff --git a/asmodee.py b/asmodee.py index 981f78e..e506928 100755 --- a/asmodee.py +++ b/asmodee.py @@ -31,6 +31,7 @@ cartes=list(cartes_base) bot = None clock = {} stats = {} +quotes = {} def horloge_read(): global clock @@ -49,6 +50,15 @@ def stats_read(): stats = loader.load() except: stats = {} + +def quotes_read(): + global quotes + try: + with open("quotes", "rb") as fichier: + loader = pickle.Unpickler(fichier) + quotes = loader.load() + except: + quotes = {} def signal_handler(signal, frame): with open("horloge", "wb") as fichier: @@ -57,6 +67,9 @@ def signal_handler(signal, frame): with open("stats", "wb") as fichier: saver = pickle.Pickler(fichier) saver.dump(stats) + with open("quotes", "wb") as fichier: + saver = pickle.Pickler(fichier) + saver.dump(quotes) sys.exit(0) class Userstats: #Pour garder des stats sur les users @@ -810,54 +823,103 @@ def last(room,event): global stats args = event['content']['body'].split() args.pop(0) + pers = "" if (len(args) == 0): - room.send_text("!last : Date de dernier message de la personne") + pers = getNick(room,event) else: pers=" ".join(args) - try: - usrstats = stats[room.room_id,pers] - room.send_text("J'ai vu " + usrstats.nick + " poster pour la derniere fois le " + usrstats.date.strftime("%Y-%m-%d %H:%M:%S")) - except: - room.send_text(pers + " : Personne non reconnue") - #for cle,valeur in stats.items(): - # if (cle[0] == room.room_id): - # room.send_text(cle[1] + "\n") + try: + usrstats = stats[room.room_id,pers] + room.send_text("J'ai vu " + usrstats.nick + " poster pour la derniere fois le " + usrstats.date.strftime("%Y-%m-%d %H:%M:%S")) + except: + room.send_text(pers + " : Personne non reconnue") + #for cle,valeur in stats.items(): + # if (cle[0] == room.room_id): + # room.send_text(cle[1] + "\n") def actif(room,event): global stats args = event['content']['body'].split() args.pop(0) + pers = "" if (len(args) == 0): - room.send_text("!actif : Activite de la personne") + pers = getNick(room,event) else: pers=" ".join(args) - try: - usrstats = stats[room.room_id,pers] - moy = "{:10.2f}".format(usrstats.char / usrstats.mess) - room.send_text(usrstats.nick + " a poste " + str(usrstats.mess) + " messages avec une moyenne de " + moy + " caracteres par message") - except: - room.send_text(pers + " : Personne non reconnue\n") + try: + usrstats = stats[room.room_id,pers] + moy = "{:10.2f}".format(usrstats.char / usrstats.mess) + room.send_text(usrstats.nick + " a poste " + str(usrstats.mess) + " messages avec une moyenne de " + moy + " caracteres par message") + except: + room.send_text(pers + " : Personne non reconnue\n") def nb_kap(room,event): global stats args = event['content']['body'].split() args.pop(0) + pers = "" if (len(args) == 0): - room.send_text("!nb_kap : nombre de kapoue de la personne") + pers = getNick(room,event) else: pers=" ".join(args) - try: - usrstats = stats[room.room_id,pers] - if (usrstats.kapoue < 10): - room.send_text(usrstats.nick + " a crié " + str(usrstats.kapoue) + " KAPOUE!") - elif (usrstats.kapoue < 50): - room.send_text(usrstats.nick + " a crié " + str(usrstats.kapoue) + " KAPOUE! Pendez le!") - elif (usrstats.kapoue < 150): - room.send_text(usrstats.nick + " a crié " + str(usrstats.kapoue) + " KAPOUE! Brûlez le vif!") - else: - room.send_text(usrstats.nick + " a crié " + str(usrstats.kapoue) + " KAPOUE! Faites le manger par des fourmis! Pauvres bêtes...") - except: - room.send_text(pers + " : Personne non reconnue\n") + try: + usrstats = stats[room.room_id,pers] + if (usrstats.kapoue < 10): + room.send_text(usrstats.nick + " a crié " + str(usrstats.kapoue) + " KAPOUE!") + elif (usrstats.kapoue < 50): + room.send_text(usrstats.nick + " a crié " + str(usrstats.kapoue) + " KAPOUE! Pendez le!") + elif (usrstats.kapoue < 150): + room.send_text(usrstats.nick + " a crié " + str(usrstats.kapoue) + " KAPOUE! Brûlez le vif!") + else: + room.send_text(usrstats.nick + " a crié " + str(usrstats.kapoue) + " KAPOUE! Faites le manger par des fourmis! Pauvres bêtes...") + except: + room.send_text(pers + " : Personne non reconnue\n") + +def quote(room,event): + global quotes + args = event['content']['body'].split() + args.pop(0) + famous = {} + try: + famous = quotes[room.room_id] + except: + famous = {} + + if (len(args) > 3 and args[0] == "add"): + #ajoute une quote + args.pop(0) + submit = " ".join(args).split(":") + if (len(submit) > 1): + # Ajout de la citation + nick = submit[0] + submit.pop(0) + citation = ":".join(submit) + tps = datetime.now().microsecond + famous[nick,tps] = citation + quotes[room.room_id] = famous + room.send_text("Ajout de la citation de " + nick + ":" + citation) + else: + # message d'aide + room.send_text("!quote add :") + elif (len(args) > 0): + # cite une quote d'une personne precise + nick = " ".join(args) + phrases = [] + for cle,valeur in famous.items(): + if (cle[0] == nick): + phrases.append(cle[0] + " : " + valeur) + if (len(phrases) > 0 ): + reponses(room,phrases) + else: + room.send_text("Je n'ai pas de citations pour " + nick) + else: + # cite une quote aleatoire + for cle,valeur in famous.items(): + phrases.append(cle[0] + " : " + valeur) + if (len(phrases) > 0 ): + reponses(room,phrases) + else: + room.send_text("Je n'ai pas de citations pour ce salon") def invitations(room_id, state): global bot @@ -940,6 +1002,11 @@ def main(): nb_kap_handler = MCommandHandler("nb_kap", nb_kap) bot.add_handler(nb_kap_handler) + # quotes + quotes_read() + quote_handler = MCommandHandler("quote", quote) + bot.add_handler(quote_handler) + # Invitations bot.client.add_invite_listener(invitations)