diff --git a/plugins/MessageParser/plugin.py b/plugins/MessageParser/plugin.py index baca48ad4..062e07916 100644 --- a/plugins/MessageParser/plugin.py +++ b/plugins/MessageParser/plugin.py @@ -192,20 +192,23 @@ class MessageParser(callbacks.Plugin, plugins.ChannelDBHandler): return max_triggers = self.registryValue('maxTriggers', channel, irc.network) for (channel, regexp, action) in results: - for match in re.finditer(regexp, msg.args[1]): - if match is not None: - thisaction = action - self._updateRank(irc.network, channel, regexp) - for (i, j) in enumerate(match.groups()): - if match.group(i+1) is not None: - # Need a lambda to prevent re.sub from - # interpreting backslashes in the replacement - thisaction = re.sub(r'\$' + str(i+1), lambda _: match.group(i+1), thisaction) - actions.append((regexp, thisaction)) - if max_triggers != 0 and max_triggers == len(actions): - break - if max_triggers != 0 and max_triggers == len(actions): - break + try: + for match in re.finditer(regexp, msg.args[1]): + if match is not None: + thisaction = action + self._updateRank(irc.network, channel, regexp) + for (i, j) in enumerate(match.groups()): + if match.group(i+1) is not None: + # Need a lambda to prevent re.sub from + # interpreting backslashes in the replacement + thisaction = re.sub(r'\$' + str(i+1), lambda _: match.group(i+1), thisaction) + actions.append((regexp, thisaction)) + if max_triggers != 0 and max_triggers == len(actions): + break + if max_triggers != 0 and max_triggers == len(actions): + break + except Exception: + self.log.exception('Error while handling %r', regexp) for (regexp, action) in actions: