Fixed bug where ':Closing link:' crashes bot when spoken in chat and bug in thread stopping in tasks
This commit is contained in:
parent
dc5d1ca756
commit
a28241c718
26
bot/core.py
26
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)
|
||||
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
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue