Browse Source

Cristal + horloge

master
nemesis 6 years ago
parent
commit
759702dbe8
  1. 202
      asmodee.py

202
asmodee.py

@ -3,6 +3,9 @@ import re
import copy
import configparser
import io
import signal
import sys
import pickle
from matrix_bot_api.matrix_bot_api import MatrixBotAPI
from matrix_bot_api.mregex_handler import MRegexHandler
@ -21,6 +24,26 @@ cartes_base = ["As de carreau", "2 de carreau", "3 de carreau", "4 de carreau",
"10 de trefle", "Valet de trefle", "Dame de trefle", "Roi de trefle", "Joker rouge", "Joker noir"]
cartes=list(cartes_base)
bot = None
clock = {}
def horloge_read():
global clock
try:
with open("horloge", "rb") as fichier:
loader = pickle.Unpickler(fichier)
clock = loader.load()
except:
if (!fichier.closed):
fichier.close()
fichier = open("horloge.txt", "w")
fichier.close()
def signal_handler(signal, frame):
with open("horloge", "wb") as fichier:
saver = pickle.Pickler(fichier)
saver.dump(clock)
sys.exit(0)
class Parser: #Pour parser la ligne de commande
def __init__(self, str, nick, room):
@ -108,6 +131,16 @@ class Parser: #Pour parser la ligne de commande
return True
return False
def getNick(room, event):
members = room.get_joined_members()
nick = ""
try:
#nick = members[event['sender']]['displayname']
nick = [user.get_friendly_name() for user in members if user.user_id == event['sender']][0]
except:
nick = "Voisin du dessus"
return(nick)
def card(room, event):
room.send_text(cartes_base[random.randrange(0,len(cartes_base))])
@ -229,13 +262,7 @@ def rolls(result,jet,type,nb,explosif,noadd,wild,f,g,ars,relance,mitige):
def entryPoint(room, event):
global parser
text = event['content']['body']
members = room.get_joined_members()
nick = ""
try:
#nick = members[event['sender']]['displayname']
nick = [user.get_friendly_name() for user in members if user.user_id == event['sender']][0]
except:
nick = "Voisin du dessus"
nick = getNick(room,event)
parser = Parser(text,nick,room)
print(text)
@ -499,13 +526,7 @@ def reponses(room, phrases):
room.send_text(phrases[i])
def jdr(room, event):
members = room.get_joined_members()
nick = ""
try:
#nick = members[event['sender']]['displayname']
nick = [user.get_friendly_name() for user in members if user.user_id == event['sender']][0]
except:
nick = "Voisin du dessus"
nick = getNick(room,event)
phrases = []
phrases.append("Rock & Role baby!")
phrases.append("De toute maniere " + nick + ", les gens ont perdu la foi dans le rolisme.")
@ -513,13 +534,7 @@ def jdr(room, event):
reponses(room, phrases)
def gens(room, event):
members = room.get_joined_members()
nick = ""
try:
#nick = members[event['sender']]['displayname']
nick = [user.get_friendly_name() for user in members if user.user_id == event['sender']][0]
except:
nick = "Voisin du dessus"
nick = getNick(room,event)
phrases = []
phrases.append("L'enfer c'est les autres.")
phrases.append("Bah " + nick + ", les gens c'est pratique pour jouer aux osselets. Bon faut juste trouver ou mettre la chair ensuite.")
@ -527,13 +542,7 @@ def gens(room, event):
reponses(room, phrases)
def va(room, event):
members = room.get_joined_members()
nick = ""
try:
#nick = members[event['sender']]['displayname']
nick = [user.get_friendly_name() for user in members if user.user_id == event['sender']][0]
except:
nick = "Voisin du dessus"
nick = getNick(room,event)
phrases = []
phrases.append("Moi ca va si jamais quelqu'un se pose la question...")
phrases.append("Quand l'appetit va, tout va " + nick +"!")
@ -541,13 +550,7 @@ def va(room, event):
reponses(room, phrases)
def maman(room, event):
members = room.get_joined_members()
nick = ""
try:
#nick = members[event['sender']]['displayname']
nick = [user.get_friendly_name() for user in members if user.user_id == event['sender']][0]
except:
nick = "Voisin du dessus"
nick = getNick(room,event)
phrases = []
phrases.append("On avait dit 'Pas les mamans'!")
phrases.append("Oh, c'est pas la mere a boire " + nick + "}!")
@ -556,13 +559,7 @@ def maman(room, event):
def hi_callback(room, event):
# Somebody said hi, let's say Hi back
members = room.get_joined_members()
nick = ""
try:
#nick = members[event['sender']]['displayname']
nick = [user.get_friendly_name() for user in members if user.user_id == event['sender']][0]
except:
nick = "Voisin du dessus"
nick = getNick(room,event)
phrases = []
phrases.append("Salutations " + nick + "!")
phrases.append("Chalut " + nick + " :)")
@ -579,14 +576,7 @@ def echo_callback(room, event):
def liste(room, event):
res = []
members = room.get_joined_members()
nick = ""
try:
#nick = members[event['sender']]['displayname']
nick = [user.get_friendly_name() for user in members if user.user_id == event['sender']][0]
except:
nick = "Voisin du dessus"
nick = getNick(room,event)
args = event['content']['body'].split()
args.pop(0)
@ -605,7 +595,105 @@ def liste(room, event):
else:
room.send_text("Utilisation : !liste <options/de/la/liste> [nombre d elements]")
def cristal(room, event):
nick = getNick(room,event)
args = event['content']['body'].split()
args.pop(0)
if (len(args) < 2 || args[len(args)-1][-1] != '?'):
room.send_text("Utilisation : !cristal <Quel est votre question?>")
else:
args[len(args)-1] = args[len(args)-1][0:-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)
cle = max(args, key=len)
if (conj == "Est-ce" || conj == "est-ce"):
# traitement Oui/non
phrases = []
phrases.append("Evidemment " + nick + ", qu'est ce que tu croyais?")
phrases.append("Non " + nick + ", malheurement non.")
phrases.append("Oui " + nick +", et quelque chose d'encore pire ensuite pour " + cle + "!")
phrases.append("Je ne sais pas si je dois te le dire au risque de te faire de la peine, " + nick + "...")
reponses(room, phrases)
elif (conj == "Combien" || conj == "combien"):
# traitement quantité
phrases = []
phrases.append("Enormement " + nick + "!")
phrases.append("Quasiment aucun " + nick + " :)")
phrases.append("Peu comparé à l'immensité, mais au niveau de " + nick +", forcément...")
phrases.append("J'en vois des dizaines, des centaines et par un prompt renfort ils furent 500 en arrivant au port!")
reponses(room, phrases)
elif (conj == "Pourquoi" || conj == "pourquoi"):
# traitement raison
phrases = []
phrases.append("Parce que la vie est injuste " + nick + "!")
phrases.append("A cause del'orgueil, " + nick + ", la mère de tous les vices.")
phrases.append("Pour la richesse, pour le pouvoir, pour le pouvoir qu'apporte la richesse.")
phrases.append("A cause d'une démence aussi soudaine que passagère.")
reponses(room, phrases)
elif (conj == "Comment" || conj == "comment"):
# traitement methode
phrases = []
phrases.append("Discrètement, sournoisement, vicieusement " + nick + "!")
phrases.append("Avec panache! :)")
phrases.append("Avec un trombone et un élastique, comme McGuy" + nick +"!")
phrases.append("Avec une aide des plus innattendues.")
reponses(room, phrases)
elif (conj == "Quand" || conj == "quand"):
# traitement temps
phrases = []
phrases.append("Plus vite que tu ne l'imagine, retourne toi " + nick + "!")
phrases.append("Dans vraiment de temps, mais n'est pas mort ce qui à jamais dort...")
phrases.append("Pile poil la durée que tu imaginais.")
phrases.append("Dans plus lontemps que tu ne le pensais, mais tous les intervenants ont une bonne excuse. Leur collègue de droite a merdé.")
reponses(room, phrases)
elif (conj == "" || conj == ""):
# traitement lieu
phrases = []
phrases.append("Dans la ville voisine")
phrases.append("A l'extérieur")
phrases.append("Au dernier endroit où on y penserait")
phrases.append("Là où les ennuis se concentrent, comme d'habitude")
reponses(room, phrases)
else:
# reponse generique
phrases = []
phrases.append("Toujours en mouvement le futur est. Toujours sans lunettes flou je vois.")
phrases.append("La boule de cristal est momentanément indisponible, veuillez réitérer votre divination ultérieurement.")
phrases.append("Une ombre plane sur ton âme, ses crocs approchent.")
phrases.append("Tu portes quelque chose de sombre, je refuse de me laisser souiller.")
reponses(room, phrases)
def horloge(room, event):
global clock
nick = getNick(room,event)
args = event['content']['body'].split()
args.pop(0)
if (len(args) == 0):
# Liste des horloges du salon
for cle,valeur in clock.items():
if (cle[0] == room.room_id):
room.send_text(cle[1] + " : \u1F540 \n") if (valeur == 0)
room.send_text(cle[1] + " : \u1F552 \n") if (valeur == 1)
room.send_text(cle[1] + " : \u1F555 \n") if (valeur == 2)
room.send_text(cle[1] + " : \u1F558 \n") if (valeur == 3)
room.send_text(cle[1] + " : \u1F559 \n") if (valeur == 4)
room.send_text(cle[1] + " : \u1F55A \n") if (valeur == 5)
room.send_text(cle[1] + " : \u1F55B \n") if (valeur == 6)
room.send_text(cle[1] + " : " + valeur + " \n") if (valeur > 6)
elif (len(args) >= 2 && args[len(args)-1].isnumeric()):
# Place le niveau de l'horloge entre 0 et 6
nv = int(args[len(args)-1])
clock[room.room_id, args[0:-1]] = nv
elif (len(args) >= 2 && args[0] == "del"):
# Supprime une horloge
args.pop(0)
clock.pop(room.room_id, args)
else:
room.send_text("Utilisation : \n- !horloge : Affiche les horloges. \n- !horloge <nom> <niveau> : Place ou crée l'horloge au niveau spécifié.\n- !horloge del <nom> : Supprime l'horloge.")
def invitations(room_id, state):
global bot
try:
@ -661,7 +749,17 @@ def main():
# Un élément d'une liste
liste_handler = MCommandHandler("liste", liste)
bot.add_handler(liste_handler)
# Boule de cristal
cristal_handler = MCommandHandler("cristal", cristal)
bot.add_handler(cristal_handler)
# horloges
horloge_read()
signal.signal(signal.SIGINT, signal_handler)
horloge_handler = MCommandHandler("horloge", horloge)
bot.add_handler(horloge_handler)
# Invitations
bot.client.add_invite_listener(invitations)

Loading…
Cancel
Save