diff --git a/asmodee.py b/asmodee.py index 823fb96..5ce2f94 100755 --- a/asmodee.py +++ b/asmodee.py @@ -91,8 +91,7 @@ def modos_read(): modos = loader.load() except: modos = {} - -def signal_handler(signal, frame): # Sauvegarder les données persistantes avant sortie +def save_obj() with open("horloge", "wb") as fichier: saver = pickle.Pickler(fichier) saver.dump(clock) @@ -111,6 +110,9 @@ def signal_handler(signal, frame): # Sauvegarder les données persistantes avant with open("moderateurs", "wb") as fichier: saver = pickle.Pickler(fichier) saver.dump(modos) + +def signal_handler(signal, frame): # Sauvegarder les données persistantes avant sortie + save_obj() sys.exit(0) class Userstats: #Pour garder des stats sur les users @@ -221,11 +223,11 @@ def verifPMRoom(room, event): # Pour obtenir ou créer un salon pour les message try: client_id = bot.client.user_id.split("@")[1].split(":")[0] except: - client_id = "asmodee_d" + client_id = "asmodee" try: client_host = bot.client.user_id.split("@")[1].split(":")[1] except: - client_host = "ombreport.info_d" + client_host = "ombreport.info" alias = "#" + client_id + "_" + nick + ":" + client_host salon = None #salons = bot.client.rooms @@ -249,6 +251,10 @@ def verifPMRoom(room, event): # Pour obtenir ou créer un salon pour les message salon.invite_user(event['sender']) salon.add_room_alias(alias) salon.update_aliases() + #Il faudrait recharger le bot pour prendre en compte le nouveau salon dans les listener + #Mais sans interrompre la requête + #save() + #main() except: print("Impossible de creer ou joindre " + alias) return None @@ -267,7 +273,10 @@ def getNick(room, event): # Obtenir le DisplayName à partir du mxid try: for user in members: if user.user_id == event['sender']: - nick = user.get_friendly_name() + nick = user.get_friendly_name() + break + if (len(nick) == 0): + nick = event['sender'] except: try: nick = [user.get_friendly_name() for user in members if user.user_id == event['sender']][0] @@ -335,10 +344,14 @@ def help_center(room,event,name,private): # Aide sur les commandes disponibles salon.send_text("- !quote : Affiche une citation du salon au hasard\n- !quote : Affiche une citation d'une personne du salon au hasard\n- !quote add : : Enregistre une citation\n- !quote list [Personne] : Affiche les citation du salon ou d'une personne du salon en message privé\n- !quote list all : Affiche toutes les citations de tous les salons en message privé\n- !quote del : Supprime la citation avec l'id spécifié") elif (re.search("biere", args[0])): salon.send_text("- !biere : Fournit une boisson du salon au hasard\n- !biere : Fournit une boisson spécifique du salon\n- !biere give [:Nom du Breuvage] : Offre une boisson (spécifique en option) à la personne spécifiée\n- !biere add : : Enregistre une phrase pour ce breuvage\n- !biere list [Nom de Breuvage] : Affiche les phrases des breuvages du salon ou celles d'un breuvage spécifique du salon en message privé\n- !biere list all : Affiche toutes les citations de tous breuvages de tous les salons en message privé\n- !biere del : Supprime la phrase avec l'id spécifié") + elif (re.search("accueil", args[0])): + salon.send_text("- !accueil : Modifie le message d'accueil avec message. Il sera affiché à tout nouvel arrivant précédé de la mention 'Bienvenue sur le salon XXX, YYY.'") + elif (re.search("modo", args[0])): + salon.send_text("- !modo : Affiche la liste des modérateurs (ils peuvent gérer le message d'accueil, supprimer des citations ou des boissons)\n- !modo add : Ajoute une personne comme modérateur du salon\n- !modo del : Retire une personne des modérateurs.") else: salon.send_text("A venir") else: - salon.send_text("Commandes disponibles:\n- !card\n- !carte\n- !liste [Nombre d'elements souhaites]\n- !horloge : gestion des horloges PBTA\n- !last : Date de dernier post\n- !actif : Nombre de message et taille moyenne de ceux ci\n- !quote : citations du salon\n- !biere : breuvages du salon\n- :roll \n- :sw \n- :dom \n- :wod \n- :owod \n- :ars \n- :des \n- :star \n\n- Pour plus de details, tapez !" + name + " \n\nRetrouvez Asmodee sur https://git.ombreport.info/nemesis/asmodee_matrix") + salon.send_text("Commandes disponibles:\n- !card\n- !carte\n- !liste [Nombre d'elements souhaites]\n- !horloge : gestion des horloges PBTA\n- !last : Date de dernier post\n- !actif : Nombre de message et taille moyenne de ceux ci\n- !quote : citations du salon\n- !biere : breuvages du salon\n- !accueil : Modifie le message d'accueil\n- !modo : Affiche les modérateurs du salon\n- :roll \n- :sw \n- :dom \n- :wod \n- :owod \n- :ars \n- :des \n- :star \n\n- Pour plus de details, tapez !" + name + " \n\nRetrouvez Asmodee sur https://git.ombreport.info/nemesis/asmodee_matrix") def roll(result,type,explosif,nb,f,noadd,ars,relance,mitige): # Lancement d'un dé # verif type et contenu params? @@ -771,13 +784,17 @@ def cristal(room, event): args = event['content']['body'].split() args.pop(0) if (len(args) < 2 or args[len(args)-1][-1] != '?'): - room.send_text("Utilisation : !cristal ") + room.send_text("Utilisation : !cristal ") else: args[len(args)-1] = args[len(args)-1][0:-1] + print(args[len(args)-1]) args = list(set(args).difference(set(["Dans", "Jusque", "le", "la", "les", "de", "des", "un", "une", "est", "sont", "serait", "seraient", "était", "étaient", "sera", "seront", "ont", "aurait", "auraient", "aura", "auront", "a", "à"]))) conj = args[0] args.pop(0) + print(conj) + print(args) cle = max(args, key=len) + print(cle) if (conj == "Est-ce" or conj == "est-ce"): # traitement Oui/non phrases = [] @@ -1311,6 +1328,7 @@ def invitations(room_id, state): # Reponse aux invitations bot.client.join_room(room_id) time.sleep(2) del bot + save() main() except: print("Impossible de rejoindre ce salon")