From db67536611933d24bc90e7dee897e7be07a27e6b Mon Sep 17 00:00:00 2001 From: Nemesis Date: Wed, 8 Aug 2018 12:49:29 +0200 Subject: [PATCH] showquote --- asmodee.py | 123 ++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 85 insertions(+), 38 deletions(-) diff --git a/asmodee.py b/asmodee.py index 94d4f99..fa93885 100755 --- a/asmodee.py +++ b/asmodee.py @@ -248,9 +248,12 @@ class Parser: #Pour parser la ligne de commande return True return False -def msg(room,msg): +def msg(room,msg,content=False): try: - room.send_text(msg) + if content: + bot.client.api.send_message_event(room.room_id, 'm.room.message', msg, None, None) + else: + room.send_text(msg) except: room.send_text("Impossible d'envoyer le message") print(msg) @@ -802,10 +805,10 @@ def rollTypePoint(): # Parser le nombre de faces du dé parser.arg["error"] = True -def reponses(room, phrases): # Afficher une réponse aléatoire dans la liste +def reponses(room, phrases, content=False): # Afficher une réponse aléatoire dans la liste i = random.randrange(0,len(phrases)) - msg(room,phrases[i]) - + msg(room,phrases[i],content) + def jdr(room, event): global modules try: @@ -1256,43 +1259,85 @@ def quote(room,event): # Gestion des citations else: msg(room,"Je n'ai pas de citations pour ce salon") -def addquote(room,event): - global citations - - content = event['content'] - if len(json.dumps(content)) > 420: - # Enlève la commande de la citation - try: - content['body'] = content['body'].replace("\naddquote", " ") - except: - print("\n\nerreur body " + json.dumps(content)) - try: - content['formatted_body'] = content['formatted_body'].replace("

addquote

\n", "") - content['formatted_body'] = content['formatted_body'].replace("addquote", "") - except: - print("\n\nerreur formatted_body " + json.dumps(content)) - #print(json.dumps(content)) - # Récupération de l'auteur - auteur = "Un nain connu" - match = re.search(r"<(@\w+:\w+.\w+)>", content['body']) - if match: - auteur = match.group(1) - - # Id - tps = datetime.now().microsecond - - # récupérations des citations du salon +def addquote(room,event): # enregistrer les citations mode reponses matrix + global modules + try: + rmod = modules[room.room_id, 'quote'] + except: + modules[room.room_id, 'quote'] = False + if (modules[room.room_id, 'quote']): + global citations + + content = event['content'] + if len(json.dumps(content)) > 420: + # Enlève la commande de la citation + try: + content['body'] = content['body'].replace("\naddquote", " ") + except: + print("\n\nerreur body " + json.dumps(content)) + try: + content['formatted_body'] = content['formatted_body'].replace("

addquote

\n", "") + content['formatted_body'] = content['formatted_body'].replace("addquote", "") + except: + print("\n\nerreur formatted_body " + json.dumps(content)) + + # Récupération de l'auteur + auteur = "Un nain connu" + match = re.search(r"<(@\w+:\w+.\w+)>", content['body']) + if match: + auteur = match.group(1) + + # Id + tps = datetime.now().microsecond + + # récupérations des citations du salon + famous = {} + try: + famous = citations[room.room_id] + except: + famous = {} + + # enregistrement de la citation + famous[auteur,tps] = content + quotes[room.room_id] = famous + msg(room,"Ajout de la citation de " + auteur + ":") + bot.client.api.send_message_event(room.room_id, 'm.room.message', content, None, None) + +def showquote(room, event): # afficher les citations mode reponse matrix + global modules + try: + rmod = modules[room.room_id, 'quote'] + except: + modules[room.room_id, 'quote'] = False + if (modules[room.room_id, 'quote']): + args = event['content']['body'].split() + args.pop(0) famous = {} try: - famous = citations[room.room_id] + famous = quotes[room.room_id] except: famous = {} - - # enregistrement de la citation - famous[auteur,tps] = content - quotes[room.room_id] = famous - msg(room,"Ajout de la citation de " + auteur + ":") - bot.client.api.send_message_event(room.room_id, 'm.room.message', content, None, None) + + if (len(args) == 1): + # cite une quote d'une personne precise + nick = args[0] + phrases = [] + for cle,valeur in famous.items(): + if (cle[0] == nick): + phrases.append(valeur) + if (len(phrases) > 0 ): + reponses(room,phrases,True) + else: + msg(room,"Je n'ai pas de citations pour " + nick) + else: + # cite une quote aleatoire + phrases = [] + for cle,valeur in famous.items(): + phrases.append(valeur) + if (len(phrases) > 0 ): + reponses(room,phrases,True) + else: + msg(room,"Je n'ai pas de citations pour ce salon") def biere(room,event): # Gestion des boissons @@ -1709,6 +1754,8 @@ def main(): citations_read() addquote_handler = MEndHandler("addquote", addquote) bot.add_handler(addquote_handler) + showquote_handler = MCommandHandler("showquote", showquote) + bot.add_handler(showquote_handler) # bieres if ('biere' in liste_mod):