diff --git a/bot/core.py b/bot/core.py index 8802c28..f09eca6 100644 --- a/bot/core.py +++ b/bot/core.py @@ -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) \ No newline at end of file + 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 \ No newline at end of file diff --git a/bot/tasks.py b/bot/tasks.py index 744a800..0d493e6 100644 --- a/bot/tasks.py +++ b/bot/tasks.py @@ -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