-def connect_NK():
- sock=socket.socket()
- try:
- # On établit la connexion sur port 4242
- sock.connect(("127.0.0.1",4242))
- # On passe en SSL
- sock=ssl.wrap_socket(sock,ca_certs='../keys/ca_.crt')
- # On fait un hello
- sock.write('hello "Basile"')
- # On récupère la réponse du hello
- out=sock.read()
- out=json.loads(out)
- except Exception as exc:
- # Si on a foiré quelque part, c'est que le serveur est down
- raise NKRefused(str(exc))
- if out["retcode"]==0:
- return sock
- elif out["retcode"]==11:
- raise NKHelloFailed(out["errmsg"])
- else:
- raise NKUnknownError(out["errmsg"])
-
-def login_NK(username,password,typ="bdd"):
- sock=connect_NK()
- if typ=="special": # ça c'est pour Basile lui-même
- masque='["note"]'
- elif typ=="bdd":
- masque='[["all"],["all"],false]'
- try:
- # Basile a un compte special user
- commande='login [%s,%s,"%s",%s]'%(json.dumps(username),json.dumps(password),typ,masque)
- sock.write(commande)
- out=sock.read()
- except Exception as exc:
- # Si on a foiré quelque part, c'est que le serveur est down
- raise NKRefused(str(exc))
- # On vérifie ensuite que le login
- return json.loads(out),sock
-
-
-def is_something(chain,matches,avant=u".*(?:^| )",apres=u"(?:$|\.| |,|;).*",case_sensitive=False,debug=False):
- if case_sensitive:
- chain=unicode(chain,"utf8")
- else:
- chain=unicode(chain,"utf8").lower()
- allmatches="("+"|".join(matches)+")"
- reg=(avant+allmatches+apres).lower()
- o=re.match(reg,chain)
- return o
-
-def is_insult(chain,debug=True):
- return is_something(chain,config.insultes,avant=".*(?:^| |')")
-def is_not_insult(chain):
- chain=unicode(chain,"utf8")
- insult_regexp=u"("+u"|".join(config.insultes)+u")"
- middle_regexp=u"(une? (?:(?:putain|enfoiré) d(?:e |'))*|)(?:| super )(?: (?:gros|petit|grand|énorme) |)"
- reg=".*pas %s%s.*"%(middle_regexp,insult_regexp)
- if re.match(reg,chain):
- return True
- else:
- return False
-def is_compliment(chain,debug=True):
- return is_something(chain,config.compliment_triggers,avant=".*(?:^| |')")
-def is_perdu(chain):
- return is_something(chain,config.perdu)
-def is_tag(chain):
- return is_something(chain,config.tag_triggers)
-def is_gros(chain):
- return is_something(chain,config.gros)
-def is_tesla(chain):
- return is_something(chain,config.tesla_triggers,avant=u"^",apres=u"$",debug=True)
-def is_merci(chain):
- return is_something(chain,config.merci_triggers)
-def is_tamere(chain):
- return is_something(chain,config.tamere_triggers)
-def is_bad_action_trigger(chain,pseudo):
- return is_something(chain,config.bad_action_triggers,avant=u"^",
- apres="(?: [a-z]*ment)? %s($|\.| |,|;).*"%(pseudo))
-def is_good_action_trigger(chain,pseudo):
- return is_something(chain,config.good_action_triggers,avant=u"^",
- apres="(?: [a-z]*ment)? %s($|\.| |,|;).*"%(pseudo))
-def is_bonjour(chain):
- return is_something(chain,config.bonjour_triggers,avant=u"^")
-def is_bonne_nuit(chain):
- return is_something(chain,config.bonne_nuit_triggers,avant=u"^")
-def is_pan(chain):
- return re.match(u"^(pan|bim|bang)( .*)?$",unicode(chain,"utf8").lower().strip())
-
-def is_time(conf):
- _,_,_,h,m,s,_,_,_=time.localtime()
- return (conf[0],0,0)<(h,m,s)<(conf[1],0,0)
-def is_day():
- return is_time(config.daytime)
-def is_night():
- return is_time(config.nighttime)
-
-
-class UnicodeBotError(Exception):
- pass
-
-class CrashError(Exception):
- """Pour pouvoir faire crasher Basile, parce que ça a l'air drôle"""
- pass