aboutsummaryrefslogtreecommitdiff
path: root/modules/channel_save.py
diff options
context:
space:
mode:
Diffstat (limited to 'modules/channel_save.py')
-rw-r--r--modules/channel_save.py37
1 files changed, 24 insertions, 13 deletions
diff --git a/modules/channel_save.py b/modules/channel_save.py
index cb950ed2..713a7cb5 100644
--- a/modules/channel_save.py
+++ b/modules/channel_save.py
@@ -1,18 +1,29 @@
class Module(object):
- def __init__(self, bot):
- bot.events.on("self").on("join").hook(self.on_join)
- bot.events.on("received").on("numeric").on("366").hook(
- self.on_connect)
+ def __init__(self, bot):
+ bot.events.on("self").on("part").hook(self.on_self_part)
+ bot.events.on("self").on("join").hook(self.on_join)
+ bot.events.on("received").on("numeric").on("366").hook(
+ self.on_identify_trigger)
+ bot.events.on("received").on("numeric").on("001").hook(
+ self.on_identify_trigger)
- def on_join(self, event):
- channels = set(event["server"].get_setting("autojoin", []))
- channels.add(event["channel"].name)
- event["server"].set_setting("autojoin", list(channels))
+ def on_self_part(self, event):
+ pass
- def on_connect(self, event):
- if event["line_split"][3].lower() == "#bitbot":
- channels = event["server"].get_setting("autojoin", [])
- for channel in channels:
- event["server"].send_join(channel)
+ def on_join(self, event):
+ channels = set(event["server"].get_setting("autojoin", []))
+ channels.add(event["channel"].name)
+ event["server"].set_setting("autojoin", list(channels))
+
+ def on_identify_trigger(self, event):
+ if event["number"]=="001" and not event["server"].sasl_success: return
+ if event["line_split"][3].lower() == "#bitbot" or event["number"]=="001":
+ channels = event["server"].get_setting("autojoin", [])
+ chan_keys = event["server"].get_setting("channel_keys", {})
+ for channel in channels:
+ if channel in chan_keys:
+ event["server"].send_join(channel, key=chan_keys[channel])
+ else:
+ event["server"].send_join(channel)