forked from aewens/babili-bot
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)
|
message = message.strip(self.splitter)
|
||||||
self.logger.debug("{}".format(message))
|
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:
|
if "raw" in callback:
|
||||||
callback["raw"](message)
|
callback["raw"](message)
|
||||||
|
|
||||||
if "PING :" in message:
|
if "PRIVMSG " in message:
|
||||||
self.ping(message)
|
|
||||||
if "ping" in callback:
|
|
||||||
callback["ping"]()
|
|
||||||
elif "PRIVMSG " in message:
|
|
||||||
name, source, response = self.parse(message)
|
name, source, response = self.parse(message)
|
||||||
if source == self.botnick and "pm" in callback:
|
if source == self.botnick and "pm" in callback:
|
||||||
callback["pm"](name, response)
|
callback["pm"](name, response)
|
||||||
elif "message" in callback:
|
elif "message" in callback:
|
||||||
callback["message"](name, source, response)
|
callback["message"](name, source, response)
|
||||||
|
elif "PING :" in message:
|
||||||
|
self.ping(message)
|
||||||
|
if "ping" in callback:
|
||||||
|
callback["ping"]()
|
||||||
elif "MODE " in message:
|
elif "MODE " in message:
|
||||||
channel, mode = self.handle_mode(message)
|
channel, mode = self.handle_mode(message)
|
||||||
if "mode" in callback:
|
if "mode" in callback:
|
||||||
|
@ -308,4 +301,11 @@ class Bot:
|
||||||
if "invite" in callback:
|
if "invite" in callback:
|
||||||
callback["invite"](channel, name)
|
callback["invite"](channel, name)
|
||||||
elif "unhandled" in callback:
|
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()
|
self.states = dict()
|
||||||
|
|
||||||
def periodic(self, scheduler, interval, action, index, state=dict()):
|
def periodic(self, scheduler, interval, action, index, state=dict()):
|
||||||
|
if not self.states[index]:
|
||||||
|
return
|
||||||
|
|
||||||
self.states[index] = action(state)
|
self.states[index] = action(state)
|
||||||
scheduler.enter(interval, 1, self.periodic, (
|
scheduler.enter(interval, 1, self.periodic, (
|
||||||
scheduler, interval, action, index, self.states[index]
|
scheduler, interval, action, index, self.states[index]
|
||||||
|
@ -34,7 +37,9 @@ class Tasks:
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
list(map(self.scheduler.cancel, self.scheduler.queue))
|
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):
|
def run(self):
|
||||||
self.thread.daemon = True
|
self.thread.daemon = True
|
||||||
|
|
Loading…
Reference in New Issue