reloading thread watcher doesn't spawn duplicate threads

This commit is contained in:
iou1name 2018-02-13 16:50:49 -05:00
parent fb2637a14e
commit 6ef18ff0be

View File

@ -13,7 +13,8 @@ def setup(bot):
""" """
Establishes the bot's dictionary of watched threads. Establishes the bot's dictionary of watched threads.
""" """
bot.memory["watcher"] = {} if not bot.memory.get("watcher"):
bot.memory["watcher"] = {}
con = bot.db.connect() con = bot.db.connect()
cur = con.cursor() cur = con.cursor()
@ -30,6 +31,8 @@ def setup(bot):
con.close() con.close()
else: else:
for thread in watching: for thread in watching:
if get_thread_url(thread[0]) in bot.memory["watcher"].keys():
continue
t = WatcherThread(bot, thread[0], thread[1], thread[2], thread[3], t = WatcherThread(bot, thread[0], thread[1], thread[2], thread[3],
thread[4]) thread[4])
t.start() t.start()
@ -167,7 +170,7 @@ class WatcherThread(threading.Thread):
if res.status_code == 404: if res.status_code == 404:
msg = "[\x0304Watcher\x03] Thread deleted: " \ msg = "[\x0304Watcher\x03] Thread deleted: " \
+ f"\x0307{get_thread_url(self.api_url)}" + f"\x0307{get_thread_url(self.api_url)}"
self.bot.say(msg, channel) self.bot.say(msg, self.channel)
self.stop.set() self.stop.set()
continue continue
@ -178,7 +181,7 @@ class WatcherThread(threading.Thread):
if thread["posts"][0].get("closed"): if thread["posts"][0].get("closed"):
msg = "[\x0304Watcher\x03] Thread closed: " \ msg = "[\x0304Watcher\x03] Thread closed: " \
+ f"\x0307{get_thread_url(self.api_url)}" + f"\x0307{get_thread_url(self.api_url)}"
self.bot.say(msg, channel) self.bot.say(msg, self.channel)
self.stop.set() self.stop.set()
continue continue
@ -187,5 +190,5 @@ class WatcherThread(threading.Thread):
self.last_post = new_last_post self.last_post = new_last_post
msg = "[\x0304Watcher\x03] New post from \x0308" \ msg = "[\x0304Watcher\x03] New post from \x0308" \
+ f"{self.name}\x03 in \x0307{get_thread_url(self.api_url)}" + f"{self.name}\x03 in \x0307{get_thread_url(self.api_url)}"
self.bot.say(msg, channel) self.bot.say(msg, self.channel)