]> gitweb.pimeys.fr Git - bots/josh.git/blob - isit.py
Triggers on "allah is doing"
[bots/josh.git] / isit.py
1 #!/usr/bin/python
2 # -*- coding:utf8 -*-
3
4 """ Des fonctions utilitaire pour savoir si on est dans tel ou tel cas. """
5
6 import re
7 import time
8
9 import config
10
11 def regex_join(liste, avant=u".*(?:^| )", apres=u"(?:$|\.| |,|;).*"):
12 """Fabrique une regexp à partir d'une liste d'éléments à matcher."""
13 return avant + u"(" + u"|".join(liste) + u")" + apres
14
15 def is_something(chain, regexp=None, matches=[], avant=u".*(?:^| )", apres=u"(?:$|\.| |,|;).*",
16 case_sensitive=False):
17 """Vérifie si chain contient un des éléments de ``matches``.
18 Si ``regexp`` est fournie, c'est simplement elle qui est testée"""
19 if not case_sensitive:
20 chain = chain.lower()
21 apres = apres.lower()
22 avant = avant.lower()
23 if regexp == None:
24 regexp = regex_join(matches, avant, apres)
25 regexp = re.compile(regexp)
26 o = regexp.match(chain)
27 return o
28
29 def regexp_compile():
30 """Compilation des regexp à partir de la conf.
31 Place les résultats dans le namespace de ``config``"""
32 config.allah_regexp = regex_join(config.allah_triggers, avant=".*", apres="$")
33 config.allah_regexp_compiled = re.compile(config.allah_regexp)
34
35 config.tag_regexp = regex_join(config.tag_triggers, avant=".*", apres="$")
36 config.tag_regexp_compiled = re.compile(config.tag_regexp)
37
38
39 regexp_compile()
40 def is_tag(chain):
41 """Vérifie si ``chain`` demande de fermer sa gueule."""
42 return is_something(chain, config.tag_regexp_compiled)
43
44 def is_allah(chain):
45 """Vérifie si ``chain``est du allah-spam."""
46 return is_something(chain, config.allah_regexp_compiled)