Compare commits

...

3 Commits

5 changed files with 55 additions and 3 deletions

19
main.py
View File

@ -21,17 +21,27 @@ def readfile(filename):
# module object classes # module object classes
class ModuleV1: class ModuleV1:
def __init__(self, path, code, enabled, alias): def __init__(self, path, code, enabled, alias, predefine):
self.version = 1 self.version = 1
self.enabled = enabled self.enabled = enabled
self.code = code self.code = code
self.alias = alias self.alias = alias
self.path = path self.path = path
self.predefine = predefine
if self.predefine:
self.predefine()
# set environmental variables # set environmental variables
def set_env(self): def set_env(self):
self.RESPONCE = "" self.RESPONCE = ""
def predefine(self):
try:
exec(self.predefine)
except Exception as e:
print("[ERROR] module: module \"{}\" ({}) raised exception \"{}\" during predefine stage, disabling it...".format(self.path, self.alias, e))
# running the module # running the module
def process(self, msg): def process(self, msg):
self.set_env() self.set_env()
@ -83,7 +93,12 @@ class ModuleControlUnit:
else: else:
alias = None alias = None
self.modules.append( ModuleV1( "modules/{}/".format(folder), code, enabled, alias ) ) if "predefine" in meta:
predefine = readfile("modules/{}/{}".format(folder, meta["predefine"]))
else:
predefine = False
self.modules.append( ModuleV1( "modules/{}/".format(folder), code, enabled, alias, predefine ) )
print("[INFO] reload_modules: successfully loaded {} as {} (start_on_boot: {})".format(folder, alias, enabled)) print("[INFO] reload_modules: successfully loaded {} as {} (start_on_boot: {})".format(folder, alias, enabled))
else: else:

View File

@ -1,5 +1,5 @@
{ {
"version": 1, "version": 1,
"index_file": "index.py", "index_file": "index.py",
"start_on_boot": true "start_on_boot": false
} }

View File

@ -0,0 +1,6 @@
{
"trigger_lists": [
["коли", "тест", "обж"]
],
"responce_text": "Тести з ОБЖ необхідно проходити лише тим студентам, які не були на практичному занятті. Якщо Ви були на практиці, але все одно пройдете тест, то ризикуєте отримати нижчу оцінку та знизити свій загальний бал"
}

View File

@ -0,0 +1,25 @@
msg = self.MESSAGE["text"].lower()
responce_given = False
for file in os.listdir(self.path + "db/"):
if responce_given:
break
try:
criteria = json.loads( readfile(self.path + "db/" + file) )
for wordset in criteria["trigger_lists"]:
all_words_in = True
for word in wordset:
if not word in msg:
all_words_in = False
break
if all_words_in:
self.RESPONCE = criteria["responce_text"]
responce_given = True
break
except Exception as e:
print("[WARN] module : qna-basic: db file {} raised exception \"{}\"".format(file, e))

View File

@ -0,0 +1,6 @@
{
"version": 1,
"index_file": "index.py",
"start_on_boot": true,
"alias": "qna-basic"
}