babili-bot/bot/responses.py

30 lines
969 B
Python

import re
class Responses:
def __init__(self, bot):
self.bot = bot
self.triggers = {
"name": dict(),
"source": dict(),
"response": dict()
}
def add_trigger(self, trigger_type, pattern, callback):
if trigger_type in self.triggers:
self.triggers[trigger_type][pattern] = callback
def parse(self, name, source, response):
check = {
"name": name,
"source": source,
"response": response
}
for trigger in list(self.triggers.keys()):
for pattern, callback in self.triggers[trigger].items():
if pattern[0] == "!" and pattern == response:
callback(self, name, source, response)
else:
regex = re.compile(pattern)
if regex.match(check[trigger]) is not None:
callback(self, name, source, response)