Browse Source

ne pas prendre en compte ses propres messages

master
Nemesis 5 years ago
parent
commit
0ad9c5665e
  1. 96
      asmodee.py

96
asmodee.py

@ -42,6 +42,7 @@ admins = [] # Admins du bot
modos = {} # Moderateurs des salons
modules = {} # Modules activés par salon
liste_mod = [] # Modules disponibles
USERNAME = ""
# Chargement des données persistantes
def horloge_read():
@ -52,7 +53,7 @@ def horloge_read():
clock = loader.load()
except:
clock = {}
def stats_read():
global stats
try:
@ -61,7 +62,7 @@ def stats_read():
stats = loader.load()
except:
stats = {}
def quotes_read():
global quotes
try:
@ -80,7 +81,7 @@ def citations_read():
except:
citations = {}
def bieres_read():
global bieres
try:
@ -152,6 +153,15 @@ def signal_handler(signal, frame): # Sauvegarder les données persistantes avant
save_obj()
sys.exit(0)
def not_myself(f):
def handler(room, event):
if event['sender'] == USERNAME:
return
f(room, event)
return handler
class Userstats: #Pour garder des stats sur les users
def __init__(self,room,user,nick):
self.room = room
@ -313,7 +323,6 @@ def verifPMRoom(room, event): # Pour obtenir ou créer un salon pour les message
print("il etait deja dedans, c'est sale")
return salon
def getNick(room, event): # Obtenir le DisplayName à partir du mxid
members = room.get_joined_members()
nick = ""
@ -330,7 +339,8 @@ def getNick(room, event): # Obtenir le DisplayName à partir du mxid
except:
nick = event['sender']
return(nick)
@not_myself
def card(room, event): # Tirer une carte du paquet sans la retirer
global modules
try:
@ -341,6 +351,7 @@ def card(room, event): # Tirer une carte du paquet sans la retirer
reponse = cartes_base[random.randrange(0,len(cartes_base))]
msg(room,reponse)
@not_myself
def carte(room, event): # Tirer une carte du paquet en la retirant ensuite
global modules
try:
@ -361,8 +372,10 @@ def carte(room, event): # Tirer une carte du paquet en la retirant ensuite
msg(room,cartes[i])
cartes.pop(i)
@not_myself
def help(room, event): # Aide en message privé
help_center(room,event,"help",True)
@not_myself
def aide(room, event): # Aide dans le salon
help_center(room,event,"aide",False)
def help_center(room,event,name,private): # Aide sur les commandes disponibles
@ -530,6 +543,7 @@ def rolls(result,jet,type,nb,explosif,noadd,wild,f,g,ars,relance,mitige,z): # La
#print("fin rolls : " + str(result) + "|" + str(total) + "|" + str(jet))
return (result,total,jet)
@not_myself
def entryPoint(room, event): # Analyse des commandes ":", point d'entrée pour les jets de dés
global modules
try:
@ -811,7 +825,8 @@ def rollTypePoint(): # Parser le nombre de faces du dé
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],content)
@not_myself
def jdr(room, event):
global modules
try:
@ -826,6 +841,7 @@ def jdr(room, event):
phrases.append("Bon, c'est quand la prochaine partie " + nick + "?")
reponses(room, phrases)
@not_myself
def gens(room, event):
global modules
try:
@ -854,6 +870,7 @@ def va(room, event):
phrases.append("Attention a " + nick + ", la suite est 'not safe for depression'")
reponses(room, phrases)
@not_myself
def hi_callback(room, event):
global modules
try:
@ -870,6 +887,7 @@ def hi_callback(room, event):
phrases.append("Oh non, et voilà de nouveau " + nick + "...")
reponses(room, phrases)
@not_myself
def liste(room, event): # Afficher un élement aléatoire d'une liste fournie
global modules
try:
@ -879,7 +897,7 @@ def liste(room, event): # Afficher un élement aléatoire d'une liste fournie
if (modules[room.room_id, 'liste']):
res = []
nick = getNick(room,event)
args = event['content']['body'].split()
args.pop(0)
try:
@ -897,6 +915,7 @@ def liste(room, event): # Afficher un élement aléatoire d'une liste fournie
else:
msg(room,"Utilisation : !liste <options/de/la/liste> [nombre d elements]")
@not_myself
def cristal(room, event): # Affiche une réponse à une question posée
global modules
try:
@ -905,7 +924,7 @@ def cristal(room, event): # Affiche une réponse à une question posée
modules[room.room_id, 'cristal'] = False
if (modules[room.room_id, 'cristal']):
nick = getNick(room,event)
args = event['content']['body'].split()
args.pop(0)
if (len(args) < 2 or args[len(args)-1][-1] != '?'):
@ -974,6 +993,7 @@ def cristal(room, event): # Affiche une réponse à une question posée
phrases.append("Tu portes quelque chose de sombre, je refuse de me laisser souiller.")
reponses(room, phrases)
@not_myself
def horloge(room, event): # Gestion des horloges PBTA
global modules
try:
@ -983,7 +1003,7 @@ def horloge(room, event): # Gestion des horloges PBTA
if (modules[room.room_id, 'horloge']):
global clock
nick = getNick(room,event)
args = event['content']['body'].split()
args.pop(0)
if (len(args) == 0):
@ -1016,7 +1036,8 @@ def horloge(room, event): # Gestion des horloges PBTA
del clock[room.room_id, ' '.join(args)]
else:
msg(room,"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.")
@not_myself
def statistiques(room,event): # Enregistrement des statistiques
global modules
try:
@ -1029,7 +1050,7 @@ def statistiques(room,event): # Enregistrement des statistiques
user = event['sender']
usrstats1 = 0
usrstats2 = 0
if ('body' in event['content']):
try:
usrstats1 = stats[room.room_id,user]
@ -1039,12 +1060,12 @@ def statistiques(room,event): # Enregistrement des statistiques
usrstats2 = stats[room.room_id,nick]
except:
usrstats2 = Userstats(room.room_id,user,nick)
# date de la phrase
date = datetime.now()
usrstats1.date = date
usrstats2.date = date
# recup nb phrases +1, 1 sinon
if (usrstats1.mess >= usrstats2.mess):
usrstats2.mess = usrstats1.mess + 1
@ -1052,7 +1073,7 @@ def statistiques(room,event): # Enregistrement des statistiques
else:
usrstats1.mess = usrstats2.mess + 1
usrstats2.mess = usrstats1.mess
# recup nb lettres +lettres phrase, lettres phrases sinon
if (usrstats1.char >= usrstats2.char):
usrstats2.char = usrstats1.char + len(event['content']['body'])
@ -1060,7 +1081,7 @@ def statistiques(room,event): # Enregistrement des statistiques
else:
usrstats1.char = usrstats2.char + len(event['content']['body'])
usrstats2.char = usrstats1.char
# si kapoue, recup nb kapoue +1, 1 sinon
if (re.match(".*KAPOUE|.*[Kk]apoue", event['content']['body'])):
if (usrstats1.kapoue >= usrstats2.kapoue):
@ -1069,11 +1090,12 @@ def statistiques(room,event): # Enregistrement des statistiques
else:
usrstats1.kapoue = usrstats2.kapoue + 1
usrstats2.kapoue = usrstats1.kapoue
# insertion des objets
stats[room.room_id,user] = usrstats1
stats[room.room_id,nick] = usrstats2
@not_myself
def last(room,event): # Regarde la dernière fois que quelqu'un a écrit un message
global modules
try:
@ -1097,7 +1119,8 @@ def last(room,event): # Regarde la dernière fois que quelqu'un a écrit un mess
#for cle,valeur in stats.items():
# if (cle[0] == room.room_id):
# msg(room,cle[1] + "\n")
@not_myself
def actif(room,event): # Stats d'activité d'une personne
global modules
try:
@ -1119,7 +1142,8 @@ def actif(room,event): # Stats d'activité d'une personne
msg(room,usrstats.nick + " a poste " + str(usrstats.mess) + " messages avec une moyenne de " + moy + " caracteres par message")
except:
msg(room,pers + " : Personne non reconnue\n")
@not_myself
def nb_kap(room,event):
global modules
try:
@ -1147,7 +1171,8 @@ def nb_kap(room,event):
msg(room,usrstats.nick + " a crié " + str(usrstats.kapoue) + " KAPOUE! Faites le manger par des fourmis! Pauvres bêtes...")
except:
msg(room,pers + " : Personne non reconnue\n")
@not_myself
def quote(room,event): # Gestion des citations
global modules
try:
@ -1163,7 +1188,7 @@ def quote(room,event): # Gestion des citations
famous = quotes[room.room_id]
except:
famous = {}
if (len(args) > 3 and args[0] == "add"):
#ajoute une quote
args.pop(0)
@ -1262,6 +1287,7 @@ def quote(room,event): # Gestion des citations
else:
msg(room,"Je n'ai pas de citations pour ce salon")
@not_myself
def addquote(room,event): # enregistrer les citations mode reponses matrix
global modules
try:
@ -1275,12 +1301,14 @@ def addquote(room,event): # enregistrer les citations mode reponses matrix
if len(json.dumps(content)) > 420:
# Enlève la commande de la citation
try:
content['body'] = content['body'].replace("\naddquote", " ")
content['body'] = content['body'].replace("\n!addquote", " ")
content['body'] = content['body'].replace("\n!", "\n")
except:
print("\n\nerreur body " + json.dumps(content))
try:
content['formatted_body'] = content['formatted_body'].replace("<p>addquote</p>\n", "")
content['formatted_body'] = content['formatted_body'].replace("addquote", "")
content['formatted_body'] = content['formatted_body'].replace("<p>!addquote</p>\n", "")
content['formatted_body'] = content['formatted_body'].replace("!addquote", "")
content['formatted_body'] = content['formatted_body'].replace("<p>!", "<p>")
except:
print("\n\nerreur formatted_body " + json.dumps(content))
@ -1306,6 +1334,7 @@ def addquote(room,event): # enregistrer les citations mode reponses matrix
msg(room,"Ajout de la citation de " + auteur + ":")
bot.client.api.send_message_event(room.room_id, 'm.room.message', content, None, None)
@not_myself
def showquote(room, event): # afficher les citations mode reponse matrix
global modules
try:
@ -1341,8 +1370,8 @@ def showquote(room, event): # afficher les citations mode reponse matrix
reponses(room,phrases,True)
else:
msg(room,"Je n'ai pas de citations pour ce salon")
@not_myself
def biere(room,event): # Gestion des boissons
global modules
try:
@ -1476,6 +1505,7 @@ def biere(room,event): # Gestion des boissons
else:
msg(room,"Je n'ai pas de breuvages pour ce salon")
@not_myself
def boissons(room,event): # Gestion des alias de boissons
global modules
try:
@ -1485,7 +1515,7 @@ def boissons(room,event): # Gestion des alias de boissons
if (modules[room.room_id, 'biere']):
boisson = ""
elu = ""
args = event['content']['body'].split()
try:
boisson = args[0][1:]
@ -1495,7 +1525,7 @@ def boissons(room,event): # Gestion des alias de boissons
if (len(args) > 0):
elu = " ".join(args)
if (len(elu) > 0 and len(boisson) > 0):
event['content']['body'] = "!biere give " + elu + ":" + boisson
elif (len(elu) > 0):
@ -1507,6 +1537,7 @@ def boissons(room,event): # Gestion des alias de boissons
biere(room,event)
@not_myself
def accueil(room,event): # Mettre un message d'accueil
global modules
try:
@ -1523,10 +1554,10 @@ def accueil(room,event): # Mettre un message d'accueil
if (len(args) > 0):
welcome[room.room_id] = reponse
msg(room,"Le message d'accueil est désormais : " + reponse)
else:
msg(salon,"Vous n'êtes pas autorisés à modifier le message d'accueil.")
def bienvenue(event): # Affichage d'un message d'accueil aux nouveaux venus
room_id = event['room_id']
room = bot.client.rooms[room_id]
@ -1556,6 +1587,7 @@ def bienvenue(event): # Affichage d'un message d'accueil aux nouveaux venus
if (membership == "join" and prev_member != "join"):
msg(room,"Bienvenue sur " + alias + ", " + nick + ". " + reponse)
@not_myself
def modo(room,event): # Definition d'un moderateur
global modos
lmod = []
@ -1590,6 +1622,7 @@ def modo(room,event): # Definition d'un moderateur
else:
msg(salon,"Vous n'êtes pas autorisés à définir les modérateurs.")
@not_myself
def module(room,event): # Definition des modules d'un salon
lmod = []
try:
@ -1662,6 +1695,7 @@ def invitations(room_id, state): # Reponse aux invitations
main()
def main():
global USERNAME
config = configparser.ConfigParser()
config.read('asmodee.ini')
USERNAME = "" # Bot's username
@ -1761,7 +1795,7 @@ def main():
quote_handler = MCommandHandler("quote", quote)
bot.add_handler(quote_handler)
citations_read()
addquote_handler = MEndHandler("addquote", addquote)
addquote_handler = MEndHandler("!addquote", addquote)
bot.add_handler(addquote_handler)
showquote_handler = MCommandHandler("showquote", showquote)
bot.add_handler(showquote_handler)

Loading…
Cancel
Save