Catch corrupt condition method
This commit is contained in:
parent
bf3c9cc962
commit
00cf85ec01
2 changed files with 16 additions and 2 deletions
|
@ -363,7 +363,13 @@ class Condition(object):
|
|||
"""
|
||||
Validate if condition is met for the current story state
|
||||
"""
|
||||
return self.method(story)
|
||||
try:
|
||||
r = self.method(story)
|
||||
except Exception as e:
|
||||
story.logger.critical("Exception condition: {self.id}, ignoring it")
|
||||
story.logger.exception(e)
|
||||
r = False
|
||||
return r
|
||||
|
||||
def _hasMetTimeout(self, story):
|
||||
now = story.timer.getElapsed()
|
||||
|
|
|
@ -3,6 +3,7 @@ import yaml
|
|||
import os
|
||||
import json
|
||||
from hugvey.voice import VoiceStorage
|
||||
import re
|
||||
|
||||
logger = logging.getLogger('toolbox')
|
||||
|
||||
|
@ -132,7 +133,7 @@ class Toolbox:
|
|||
if len(beginnings) < 1:
|
||||
logger.critical("No beginning set")
|
||||
if len(beginnings) > 1:
|
||||
logger.critical(f"{len(beginnings)} beginning messages configured. Set only one")
|
||||
logger.warn(f"{len(beginnings)} beginning messages configured. Set only one")
|
||||
|
||||
itemsPerId = {item['@id']: item for item in story}
|
||||
|
||||
|
@ -153,6 +154,13 @@ class Toolbox:
|
|||
msgId = item['vars']['msgId'].strip()
|
||||
if msgId not in itemsPerId:
|
||||
logger.critical(f"Message played condition for non-existing message {msgId}!")
|
||||
if item['type'] == 'replyContains':
|
||||
if 'regex' in item['vars'] and len(item['vars']['regex'].rstrip()):
|
||||
try:
|
||||
re.compile(item['vars']['regex'].rstrip())
|
||||
except Exception as e:
|
||||
logger.critical(f"Invalid regex for condition {item['@id']}: {item['vars']['regex'].rstrip()}")
|
||||
logger.exception(e)
|
||||
|
||||
with open(filename, 'w') as fp:
|
||||
json.dump(story, fp, indent=2)
|
||||
|
|
Loading…
Reference in a new issue