New class imodule : interface for modules
This commit is contained in:
parent
31be5808e5
commit
adeb4959c8
103
events.py
103
events.py
|
@ -11,11 +11,9 @@ from xml.dom.minidom import parse
|
||||||
from xml.dom.minidom import parseString
|
from xml.dom.minidom import parseString
|
||||||
from xml.dom.minidom import getDOMImplementation
|
from xml.dom.minidom import getDOMImplementation
|
||||||
|
|
||||||
filename = ""
|
import imodule
|
||||||
EVENTS = {}
|
|
||||||
STREND = {}
|
|
||||||
threadManager = None
|
|
||||||
newStrendEvt = threading.Event()
|
|
||||||
|
|
||||||
class Manager(threading.Thread):
|
class Manager(threading.Thread):
|
||||||
def __init__(self, servers):
|
def __init__(self, servers):
|
||||||
|
@ -44,16 +42,7 @@ class Manager(threading.Thread):
|
||||||
if closer is not None and closer.end is not None and closer.end > datetime.now():
|
if closer is not None and closer.end is not None and closer.end > datetime.now():
|
||||||
timer.cancel()
|
timer.cancel()
|
||||||
|
|
||||||
def launch (servers):
|
|
||||||
global threadManager
|
|
||||||
stop()
|
|
||||||
threadManager = Manager(servers)
|
|
||||||
threadManager.start()
|
|
||||||
|
|
||||||
def stop ():
|
|
||||||
if threadManager is not None:
|
|
||||||
threadManager.stop = True
|
|
||||||
newStrendEvt.set()
|
|
||||||
|
|
||||||
class Strend:
|
class Strend:
|
||||||
def __init__(self, item):
|
def __init__(self, item):
|
||||||
|
@ -84,41 +73,61 @@ class Strend:
|
||||||
del STREND[self.name]
|
del STREND[self.name]
|
||||||
newStrendEvt.set()
|
newStrendEvt.set()
|
||||||
|
|
||||||
def xmlparse(node):
|
|
||||||
"""Parse the given node and add events to the global list."""
|
|
||||||
for item in node.getElementsByTagName("strend"):
|
|
||||||
STREND[item.getAttribute("name")] = Strend(item)
|
|
||||||
|
|
||||||
for item in node.getElementsByTagName("event"):
|
|
||||||
if (item.hasAttribute("year")):
|
|
||||||
year = int(item.getAttribute("year"))
|
|
||||||
else:
|
|
||||||
year = 0
|
|
||||||
if (item.hasAttribute("month")):
|
|
||||||
month = int(item.getAttribute("month"))
|
|
||||||
else:
|
|
||||||
month = 0
|
|
||||||
if (item.hasAttribute("day")):
|
|
||||||
day = int(item.getAttribute("day"))
|
|
||||||
else:
|
|
||||||
day = 0
|
|
||||||
if (item.hasAttribute("hour")):
|
|
||||||
hour = int(item.getAttribute("hour"))
|
|
||||||
else:
|
|
||||||
hour = 0
|
|
||||||
if (item.hasAttribute("minute")):
|
|
||||||
minute = int(item.getAttribute("minute"))
|
|
||||||
else:
|
|
||||||
minute = 0
|
|
||||||
if (item.hasAttribute("second")):
|
|
||||||
second = int(item.getAttribute("second"))
|
|
||||||
else:
|
|
||||||
second = 0
|
|
||||||
|
|
||||||
if year == month == day == hour == minute == second == 0:
|
class Nemodule(imodule.ModuleBase):
|
||||||
EVENTS[item.getAttribute("name")] = (None, item.getAttribute("before_after"), None)
|
filename = ""
|
||||||
else:
|
events = dict()
|
||||||
EVENTS[item.getAttribute("name")] = (datetime(year, month, day, hour, minute, second),item.getAttribute("msg_before"), item.getAttribute("msg_after"))
|
strend = dict()
|
||||||
|
threadManager = None
|
||||||
|
newStrendEvt = threading.Event()
|
||||||
|
|
||||||
|
def launch (self, servers):
|
||||||
|
self.stop()
|
||||||
|
self.threadManager = Manager(servers)
|
||||||
|
self.threadManager.start()
|
||||||
|
|
||||||
|
def stop (self):
|
||||||
|
if self.threadManager is not None:
|
||||||
|
self.threadManager.stop = True
|
||||||
|
self.newStrendEvt.set()
|
||||||
|
|
||||||
|
|
||||||
|
def xmlparse(self, node):
|
||||||
|
"""Parse the given node and add events to the global list."""
|
||||||
|
for item in node.getElementsByTagName("strend"):
|
||||||
|
strend[item.getAttribute("name")] = Strend(item)
|
||||||
|
|
||||||
|
for item in node.getElementsByTagName("event"):
|
||||||
|
if (item.hasAttribute("year")):
|
||||||
|
year = int(item.getAttribute("year"))
|
||||||
|
else:
|
||||||
|
year = 0
|
||||||
|
if (item.hasAttribute("month")):
|
||||||
|
month = int(item.getAttribute("month"))
|
||||||
|
else:
|
||||||
|
month = 0
|
||||||
|
if (item.hasAttribute("day")):
|
||||||
|
day = int(item.getAttribute("day"))
|
||||||
|
else:
|
||||||
|
day = 0
|
||||||
|
if (item.hasAttribute("hour")):
|
||||||
|
hour = int(item.getAttribute("hour"))
|
||||||
|
else:
|
||||||
|
hour = 0
|
||||||
|
if (item.hasAttribute("minute")):
|
||||||
|
minute = int(item.getAttribute("minute"))
|
||||||
|
else:
|
||||||
|
minute = 0
|
||||||
|
if (item.hasAttribute("second")):
|
||||||
|
second = int(item.getAttribute("second"))
|
||||||
|
else:
|
||||||
|
second = 0
|
||||||
|
|
||||||
|
if year == month == day == hour == minute == second == 0:
|
||||||
|
events[item.getAttribute("name")] = (None, item.getAttribute("before_after"), None)
|
||||||
|
else:
|
||||||
|
events[item.getAttribute("name")] = (datetime(year, month, day, hour, minute, second),item.getAttribute("msg_before"), item.getAttribute("msg_after"))
|
||||||
|
|
||||||
|
|
||||||
def load_module(datas_path):
|
def load_module(datas_path):
|
||||||
|
|
66
imodule.py
Normal file
66
imodule.py
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
# coding=utf-8
|
||||||
|
|
||||||
|
class ModuleException(Exception):
|
||||||
|
def __init__(self, value):
|
||||||
|
self.value = value
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return repr(self.value)
|
||||||
|
|
||||||
|
|
||||||
|
class ModuleState:
|
||||||
|
def __init__(self, filename):
|
||||||
|
self.filename = filename
|
||||||
|
|
||||||
|
if not os.access(self.filename, os.R_OK):
|
||||||
|
with open(self.filename) as f:
|
||||||
|
for line in f:
|
||||||
|
print line
|
||||||
|
|
||||||
|
|
||||||
|
class ModuleBase:
|
||||||
|
def __init__(self, datas_path):
|
||||||
|
self.datas_path = datas_path
|
||||||
|
|
||||||
|
if self.module_name is None:
|
||||||
|
raise ModuleException("module_name not defined")
|
||||||
|
|
||||||
|
if self.conf is not None:
|
||||||
|
self.conf = self.datas_path + self.conf
|
||||||
|
if not os.access(self.conf, os.R_OK):
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def print(self, message):
|
||||||
|
print ("[%s] %s" % (self.module_name, message))
|
||||||
|
|
||||||
|
|
||||||
|
def load(self):
|
||||||
|
return True
|
||||||
|
|
||||||
|
def save(self):
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def launch(self, servers):
|
||||||
|
return True
|
||||||
|
|
||||||
|
def stop(self):
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def help_tiny(self):
|
||||||
|
return None
|
||||||
|
|
||||||
|
def help_full(self):
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def parseanswer(self, msg):
|
||||||
|
return False
|
||||||
|
|
||||||
|
def parseask(self, msg):
|
||||||
|
return False
|
||||||
|
|
||||||
|
def parselisten(self, msg):
|
||||||
|
return False
|
14
qd.py
14
qd.py
|
@ -293,7 +293,7 @@ def parselisten (msg):
|
||||||
# if msg.channel == "#nemutest" and msg.sender not in DELAYED:
|
# if msg.channel == "#nemutest" and msg.sender not in DELAYED:
|
||||||
if msg.channel != "#nemutest" and msg.sender not in DELAYED:
|
if msg.channel != "#nemutest" and msg.sender not in DELAYED:
|
||||||
|
|
||||||
if re.match("(42|quarante[- ]?deux).{,2}", msg.content.strip().lower()):
|
if re.match("^(42|quarante[- ]?deux).{,2}$", msg.content.strip().lower()):
|
||||||
if msg.time.minute == 10 and msg.time.second == 10 and msg.time.hour == 10:
|
if msg.time.minute == 10 and msg.time.second == 10 and msg.time.hour == 10:
|
||||||
getUser(msg.sender).playTen()
|
getUser(msg.sender).playTen()
|
||||||
getUser(msg.sender).playGreat()
|
getUser(msg.sender).playGreat()
|
||||||
|
@ -304,7 +304,7 @@ def parselisten (msg):
|
||||||
else:
|
else:
|
||||||
getUser(msg.sender).playBad()
|
getUser(msg.sender).playBad()
|
||||||
|
|
||||||
if re.match("(23|vingt[ -]?trois).{,2}", msg.content.strip().lower()):
|
if re.match("^(23|vingt[ -]?trois).{,2}$", msg.content.strip().lower()):
|
||||||
if msg.time.minute == 23:
|
if msg.time.minute == 23:
|
||||||
if msg.time.second == 0:
|
if msg.time.second == 0:
|
||||||
getUser(msg.sender).playGreat()
|
getUser(msg.sender).playGreat()
|
||||||
|
@ -312,7 +312,7 @@ def parselisten (msg):
|
||||||
else:
|
else:
|
||||||
getUser(msg.sender).playBad()
|
getUser(msg.sender).playBad()
|
||||||
|
|
||||||
if re.match("(10){3}.{,2}", msg.content.strip().lower()):
|
if re.match("^(10){3}.{,2}$", msg.content.strip().lower()):
|
||||||
if msg.time.minute == 10 and msg.time.hour == 10:
|
if msg.time.minute == 10 and msg.time.hour == 10:
|
||||||
if msg.time.second == 10:
|
if msg.time.second == 10:
|
||||||
getUser(msg.sender).playGreat()
|
getUser(msg.sender).playGreat()
|
||||||
|
@ -320,13 +320,13 @@ def parselisten (msg):
|
||||||
else:
|
else:
|
||||||
getUser(msg.sender).playBad()
|
getUser(msg.sender).playBad()
|
||||||
|
|
||||||
if re.match("0?12345.{,2}", msg.content.strip().lower()):
|
if re.match("^0?12345.{,2}$", msg.content.strip().lower()):
|
||||||
if msg.time.hour == 1 and msg.time.minute == 23 and (msg.time.second == 45 or (msg.time.second == 46 and msg.time.microsecond < 330000)):
|
if msg.time.hour == 1 and msg.time.minute == 23 and (msg.time.second == 45 or (msg.time.second == 46 and msg.time.microsecond < 330000)):
|
||||||
getUser(msg.sender).playSuite()
|
getUser(msg.sender).playSuite()
|
||||||
else:
|
else:
|
||||||
getUser(msg.sender).playBad()
|
getUser(msg.sender).playBad()
|
||||||
|
|
||||||
if re.match("[1l][e3]{2}[t7] ?time.{,2}", msg.content.strip().lower()):
|
if re.match("^[1l][e3]{2}[t7] ?time.{,2}$", msg.content.strip().lower()):
|
||||||
if msg.time.hour == 13 and msg.time.minute == 37:
|
if msg.time.hour == 13 and msg.time.minute == 37:
|
||||||
if msg.time.second == 0:
|
if msg.time.second == 0:
|
||||||
getUser(msg.sender).playGreat()
|
getUser(msg.sender).playGreat()
|
||||||
|
@ -334,7 +334,7 @@ def parselisten (msg):
|
||||||
else:
|
else:
|
||||||
getUser(msg.sender).playBad()
|
getUser(msg.sender).playBad()
|
||||||
|
|
||||||
if re.match("(pi|3.14) ?time.{,2}", msg.content.strip().lower()):
|
if re.match("^(pi|3.14) ?time.{,2}$", msg.content.strip().lower()):
|
||||||
if msg.time.hour == 3 and msg.time.minute == 14:
|
if msg.time.hour == 3 and msg.time.minute == 14:
|
||||||
if msg.time.second == 15 or msg.time.second == 16:
|
if msg.time.second == 15 or msg.time.second == 16:
|
||||||
getUser(msg.sender).playGreat()
|
getUser(msg.sender).playGreat()
|
||||||
|
@ -342,7 +342,7 @@ def parselisten (msg):
|
||||||
else:
|
else:
|
||||||
getUser(msg.sender).playBad()
|
getUser(msg.sender).playBad()
|
||||||
|
|
||||||
if re.match("(404( ?time)?|time ?not ?found).{,2}", msg.content.strip().lower()):
|
if re.match("^(404( ?time)?|time ?not ?found).{,2}$", msg.content.strip().lower()):
|
||||||
if msg.time.hour == 4 and msg.time.minute == 4:
|
if msg.time.hour == 4 and msg.time.minute == 4:
|
||||||
if msg.time.second == 0 or msg.time.second == 4:
|
if msg.time.second == 0 or msg.time.second == 4:
|
||||||
getUser(msg.sender).playGreat()
|
getUser(msg.sender).playGreat()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user