|
|
@ -32,6 +32,7 @@ bot = None |
|
|
|
clock = {} |
|
|
|
stats = {} |
|
|
|
quotes = {} |
|
|
|
bieres = {} |
|
|
|
admins = [] # Admins du bot |
|
|
|
|
|
|
|
def horloge_read(): |
|
|
@ -60,6 +61,15 @@ def quotes_read(): |
|
|
|
quotes = loader.load() |
|
|
|
except: |
|
|
|
quotes = {} |
|
|
|
|
|
|
|
def bieres_read(): |
|
|
|
global bieres |
|
|
|
try: |
|
|
|
with open("bieres", "rb") as fichier: |
|
|
|
loader = pickle.Unpickler(fichier) |
|
|
|
bieres = loader.load() |
|
|
|
except: |
|
|
|
bieres = {} |
|
|
|
|
|
|
|
def signal_handler(signal, frame): |
|
|
|
with open("horloge", "wb") as fichier: |
|
|
@ -71,6 +81,9 @@ def signal_handler(signal, frame): |
|
|
|
with open("quotes", "wb") as fichier: |
|
|
|
saver = pickle.Pickler(fichier) |
|
|
|
saver.dump(quotes) |
|
|
|
with open("bieres", "wb") as fichier: |
|
|
|
saver = pickle.Pickler(fichier) |
|
|
|
saver.dump(bieres) |
|
|
|
sys.exit(0) |
|
|
|
|
|
|
|
class Userstats: #Pour garder des stats sur les users |
|
|
@ -1030,6 +1043,122 @@ def quote(room,event): |
|
|
|
reponses(room,phrases) |
|
|
|
else: |
|
|
|
room.send_text("Je n'ai pas de citations pour ce salon") |
|
|
|
|
|
|
|
def biere(room,event): |
|
|
|
global bieres |
|
|
|
args = event['content']['body'].split() |
|
|
|
args.pop(0) |
|
|
|
brevages = {} |
|
|
|
give = False |
|
|
|
elu = "" |
|
|
|
envoyeur = getNick(room,event) |
|
|
|
|
|
|
|
try: |
|
|
|
breuvages = bieres[room.room_id] |
|
|
|
except: |
|
|
|
breuvages = {} |
|
|
|
|
|
|
|
if (len(args) > 1 and args[0] == "give"): |
|
|
|
give = True |
|
|
|
args.pop(0) |
|
|
|
submit = " ".join(args).split(":") |
|
|
|
elu = submit[0] |
|
|
|
try: |
|
|
|
args = submit[1].split() |
|
|
|
except: |
|
|
|
args = "" |
|
|
|
if (len(args) > 3 and args[0] == "add"): |
|
|
|
#ajoute une biere |
|
|
|
args.pop(0) |
|
|
|
submit = " ".join(args).split(":") |
|
|
|
if (len(submit) > 1): |
|
|
|
# Ajout de la citation |
|
|
|
nick = submit[0].strip() |
|
|
|
submit.pop(0) |
|
|
|
citation = ":".join(submit) |
|
|
|
tps = datetime.now().microsecond |
|
|
|
breuvages[nick,tps] = citation |
|
|
|
bieres[room.room_id] = breuvages |
|
|
|
room.send_text("Ajout du breuvage " + nick + ":" + citation) |
|
|
|
else: |
|
|
|
# message d'aide |
|
|
|
room.send_text("!biere add <nick>:<citation>") |
|
|
|
elif (len(args) > 0 and args[0] == "list"): |
|
|
|
# liste les quotes |
|
|
|
args.pop(0) |
|
|
|
salon = verifPMRoom(room,event) |
|
|
|
if (len(args) == 0): |
|
|
|
# Liste les breuvages du salon |
|
|
|
reponse = "Voici les reponses du salon " + room.room_id + "\n" |
|
|
|
if (len(room.aliases) > 0): |
|
|
|
reponse = reponse + "(alias : " + room.aliases[0] + "\n" |
|
|
|
for cle,valeur in breuvages.items(): |
|
|
|
reponse = reponse + cle[0] + " / " + str(cle[1]) + " : " + valeur + "\n" |
|
|
|
if (len(reponse) > 500): |
|
|
|
salon.send_text(reponse) |
|
|
|
reponse = "" |
|
|
|
salon.send_text(reponse) |
|
|
|
elif (args[0] == "all"): |
|
|
|
# tous les breuvages de tous les salons |
|
|
|
reponse = "Les breuvages de tous les salons : " + "\n" |
|
|
|
salon.send_text(reponse) |
|
|
|
for rid,fame in biere.items(): |
|
|
|
reponse = "Voici les reponses du salon " + rid + "\n" |
|
|
|
for cle,valeur in fame.items(): |
|
|
|
reponse = reponse + cle[0] + " / " + str(cle[1]) + " : " + valeur + "\n" |
|
|
|
if (len(reponse) > 500): |
|
|
|
salon.send_text(reponse) |
|
|
|
reponse = "" |
|
|
|
salon.send_text(reponse) |
|
|
|
else: |
|
|
|
# les breuvages du pseudo spécifié |
|
|
|
nick = " ".join(args) |
|
|
|
reponse = "Voici les reponses du breuvage " + nick + "\n" |
|
|
|
for cle,valeur in breuvages.items(): |
|
|
|
if (cle[0] == nick): |
|
|
|
reponse = reponse + cle[0] + " / " + str(cle[1]) + " : " + valeur + "\n" |
|
|
|
salon.send_text(reponse) |
|
|
|
elif (len(args) > 1 and args[0] == "del"): |
|
|
|
salon = verifPMRoom(room,event) |
|
|
|
if (event['sender'] in admins): |
|
|
|
id = args[1] |
|
|
|
reponse = "Voici le breuvage supprimé : \n" |
|
|
|
for rid,fame in bieres.items(): |
|
|
|
for cle,valeur in fame.items(): |
|
|
|
if (str(cle[1]) == id): |
|
|
|
del fame[cle[0],cle[1]] |
|
|
|
reponse = reponse + rid + " / " + cle[0] + " / " + str(cle[1]) + " : " + valeur + "\n" |
|
|
|
break |
|
|
|
salon.send_text(reponse) |
|
|
|
else: |
|
|
|
salon.send_text("Vous n'êtes pas autorisés à supprimer des breuvages.") |
|
|
|
elif (len(args) > 0): |
|
|
|
# cite une reponse d'un breuvage precis |
|
|
|
nick = " ".join(args) |
|
|
|
phrases = [] |
|
|
|
for cle,valeur in breuvages.items(): |
|
|
|
if (cle[0] == nick): |
|
|
|
if (give): |
|
|
|
phrases.append(valeur + " pour " + elu + " de la part de " + envoyeur) |
|
|
|
else: |
|
|
|
phrases.append(valeur + " pour " + envoyeur) |
|
|
|
if (len(phrases) > 0 ): |
|
|
|
reponses(room,phrases) |
|
|
|
else: |
|
|
|
room.send_text("Je n'ai pas de " + nick + " en stock!") |
|
|
|
else: |
|
|
|
# cite une réponse d'un breuvage aleatoire |
|
|
|
phrases = [] |
|
|
|
for cle,valeur in breuvages.items(): |
|
|
|
if (give): |
|
|
|
phrases.append(valeur + " pour " + elu + " de la part de " + envoyeur) |
|
|
|
else: |
|
|
|
phrases.append(valeur + " pour " + envoyeur) |
|
|
|
if (len(phrases) > 0 ): |
|
|
|
reponses(room,phrases) |
|
|
|
else: |
|
|
|
room.send_text("Je n'ai pas de breuvages pour ce salon") |
|
|
|
|
|
|
|
|
|
|
|
def invitations(room_id, state): |
|
|
|
global bot |
|
|
@ -1122,9 +1251,14 @@ def main(): |
|
|
|
quotes_read() |
|
|
|
quote_handler = MCommandHandler("quote", quote) |
|
|
|
bot.add_handler(quote_handler) |
|
|
|
|
|
|
|
# bieres |
|
|
|
bieres_read() |
|
|
|
biere_handler = MCommandHandler("biere", quote) |
|
|
|
bot.add_handler(biere_handler) |
|
|
|
|
|
|
|
test_handler = MCommandHandler("test", verifPMRoom) |
|
|
|
bot.add_handler(test_handler) |
|
|
|
#test_handler = MCommandHandler("test", verifPMRoom) |
|
|
|
#bot.add_handler(test_handler) |
|
|
|
|
|
|
|
# Invitations |
|
|
|
bot.client.add_invite_listener(invitations) |
|
|
|