Fixed bug where ':Closing link:' crashes bot when spoken in chat and bug in thread stopping in tasks

This commit is contained in:
aewens 2018-11-15 14:18:41 -05:00
parent dc5d1ca756
commit a28241c718
2 changed files with 19 additions and 14 deletions

View File

@ -263,26 +263,19 @@ class Bot:
message = message.strip(self.splitter)
self.logger.debug("{}".format(message))
if ":Closing link:" in message:
self.logger.warning(message)
self.stop()
if "crashed" in callback:
callback["crashed"]()
break
if "raw" in callback:
callback["raw"](message)
if "PING :" in message:
self.ping(message)
if "ping" in callback:
callback["ping"]()
elif "PRIVMSG " in message:
if "PRIVMSG " in message:
name, source, response = self.parse(message)
if source == self.botnick and "pm" in callback:
callback["pm"](name, response)
elif "message" in callback:
callback["message"](name, source, response)
elif "PING :" in message:
self.ping(message)
if "ping" in callback:
callback["ping"]()
elif "MODE " in message:
channel, mode = self.handle_mode(message)
if "mode" in callback:
@ -308,4 +301,11 @@ class Bot:
if "invite" in callback:
callback["invite"](channel, name)
elif "unhandled" in callback:
callback["unhandled"](message)
if "unhandled" in callback:
callback["unhandled"](message)
elif ":Closing link:" in message:
self.logger.warning(message)
self.stop()
if "crashed" in callback:
callback["crashed"]()
break

View File

@ -11,6 +11,9 @@ class Tasks:
self.states = dict()
def periodic(self, scheduler, interval, action, index, state=dict()):
if not self.states[index]:
return
self.states[index] = action(state)
scheduler.enter(interval, 1, self.periodic, (
scheduler, interval, action, index, self.states[index]
@ -34,7 +37,9 @@ class Tasks:
def stop(self):
list(map(self.scheduler.cancel, self.scheduler.queue))
self.thread.stop()
for key, value in self.states.items():
self.states[key] = False
self.thread.join()
def run(self):
self.thread.daemon = True