core: harden message processing by catching wrong returns from v2 modules
This commit is contained in:
parent
e002dc46a2
commit
a7bbb1c1cc
18
main.py
18
main.py
|
@ -11,6 +11,7 @@ import traceback
|
||||||
|
|
||||||
# global variables
|
# global variables
|
||||||
STOP_REQUESTED = False
|
STOP_REQUESTED = False
|
||||||
|
DEBUG_MODE = False
|
||||||
DELAY_AFTER_RESPONSE = 3
|
DELAY_AFTER_RESPONSE = 3
|
||||||
DELAY_AFTER_MESSAGE = 0.1
|
DELAY_AFTER_MESSAGE = 0.1
|
||||||
DELAY_AFTER_IDLE = 1.0
|
DELAY_AFTER_IDLE = 1.0
|
||||||
|
@ -48,6 +49,8 @@ class ModuleV1:
|
||||||
|
|
||||||
def set_predefine(self):
|
def set_predefine(self):
|
||||||
try:
|
try:
|
||||||
|
if DEBUG_MODE:
|
||||||
|
print(f"Predefine on module v1 {self.alias} ({self.path})")
|
||||||
exec(self.predefine)
|
exec(self.predefine)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"[ERROR] module v1: module \"{self.path}\" ({self.alias}) raised exception \"{e}\" "
|
print(f"[ERROR] module v1: module \"{self.path}\" ({self.alias}) raised exception \"{e}\" "
|
||||||
|
@ -59,6 +62,8 @@ class ModuleV1:
|
||||||
|
|
||||||
self.MESSAGE = msg
|
self.MESSAGE = msg
|
||||||
try:
|
try:
|
||||||
|
if DEBUG_MODE:
|
||||||
|
print(f"Calling module v1 {self.alias} ({self.path})")
|
||||||
exec(self.code)
|
exec(self.code)
|
||||||
return self.RESPONSE, self.FORMAT
|
return self.RESPONSE, self.FORMAT
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
@ -79,6 +84,8 @@ class ModuleV2:
|
||||||
# running the module
|
# running the module
|
||||||
def process(self, msg):
|
def process(self, msg):
|
||||||
try:
|
try:
|
||||||
|
if DEBUG_MODE:
|
||||||
|
print(f"Calling module v2 {self.alias} ({self.path})")
|
||||||
return self.obj.process(msg, self.path)
|
return self.obj.process(msg, self.path)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"[ERROR] module v2: module \"{self.path}\" ({self.alias}) raised exception \"{e}\"")
|
print(f"[ERROR] module v2: module \"{self.path}\" ({self.alias}) raised exception \"{e}\"")
|
||||||
|
@ -276,13 +283,24 @@ def queue_processor():
|
||||||
print(f"[INFO]: Queue length is {len(message_queue)}")
|
print(f"[INFO]: Queue length is {len(message_queue)}")
|
||||||
updater.bot.send_message(msg.chat.id, f"[INFO]: Queue length is {len(message_queue)}")
|
updater.bot.send_message(msg.chat.id, f"[INFO]: Queue length is {len(message_queue)}")
|
||||||
|
|
||||||
|
elif len(command) == 2 and command[0] == "debug":
|
||||||
|
global DEBUG_MODE
|
||||||
|
if command[1] == "on":
|
||||||
|
DEBUG_MODE = True
|
||||||
|
else:
|
||||||
|
DEBUG_MODE = False
|
||||||
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# modules are used in here
|
# modules are used in here
|
||||||
for mod in mcu.modules:
|
for mod in mcu.modules:
|
||||||
if mod.enabled:
|
if mod.enabled:
|
||||||
if mod.version in [1, 2]:
|
if mod.version in [1, 2]:
|
||||||
|
try:
|
||||||
response, formatting = mod.process(msg)
|
response, formatting = mod.process(msg)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Module {mod.alias} ({mod.path}) failed to do a proper return, skipping...")
|
||||||
|
continue
|
||||||
|
|
||||||
if response:
|
if response:
|
||||||
if not formatting:
|
if not formatting:
|
||||||
|
|
Loading…
Reference in New Issue