|
|
@ -31,6 +31,7 @@ cartes=list(cartes_base) |
|
|
|
bot = None |
|
|
|
clock = {} |
|
|
|
stats = {} |
|
|
|
quotes = {} |
|
|
|
|
|
|
|
def horloge_read(): |
|
|
|
global clock |
|
|
@ -50,6 +51,15 @@ def stats_read(): |
|
|
|
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: |
|
|
|
saver = pickle.Pickler(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 <name ou id> : 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 <name ou id> : 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 <name ou id> : 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 <nick>:<citation>") |
|
|
|
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) |
|
|
|
|
|
|
|