import main import modules.keyword as keyword from pprint import pformat def testNetTarget(name, target): for i in main.monitor.keys(): if "sources" in main.monitor[i].keys(): if name in main.monitor[i]["sources"]: if main.monitor[i]["sources"][name] == True: return i elif target in main.monitor[i]["sources"][name]: return i else: return i return False def magicFunction(A, B): return all(A[k] in B[k] for k in set(A) & set(B)) and set(B) <= set(A) def event(name, target, cast): monitorGroup = testNetTarget(name, target) if monitorGroup == False: return matcher = magicFunction(cast, main.monitor[monitorGroup]) if matcher == True: if "send" in main.monitor[monitorGroup]: for i in main.monitor[monitorGroup]["send"].keys(): if not i in main.pool.keys(): keyword.sendMaster("ERROR on monitor %s: No such name: %s" % (monitorGroup, i)) if not i in main.IRCPool.keys(): keyword.sendMaster("ERROR on monitor %s: No such instance: %s" % (monitorGroup, i)) for x in main.monitor[monitorGroup]["send"][i]: main.IRCPool[i].msg(x, "MONITOR [%s] %s" % (monitorGroup, pformat(cast))) else: keyword.sendMaster("MONITOR [%s] %s " % (monitorGroup, pformat(cast)))