aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorGravatar jesopo2019-02-12 20:42:26 +0000
committerGravatar jesopo2019-02-12 20:42:26 +0000
commit3fc2fec32497ab019f9a5ac067f8ec5b480b1b66 (patch)
treef046f65725e5421e2c18a87136efe434a4b7a06b /modules
parentWe were just checking if `arbitrary` was falsey, thus losing empty trailing args (diff)
signature
Add nick_regain.py, to watch for the bot's desired nick becoming free
Diffstat (limited to 'modules')
-rw-r--r--modules/nick_regain.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/modules/nick_regain.py b/modules/nick_regain.py
new file mode 100644
index 00000000..0dc370c0
--- /dev/null
+++ b/modules/nick_regain.py
@@ -0,0 +1,44 @@
+from src import ModuleManager, utils
+
+class Module(ModuleManager.BaseModule):
+ @utils.hook("received.numeric.251")
+ def on_connect(self, event):
+ target_nick = event["server"].connection_params.nickname
+ if not event["server"].irc_equals(
+ event["server"].nickname, target_nick):
+ if "MONITOR" in event["server"].isupport:
+ print("monitor")
+ event["server"].send("MONITOR + %s" % target_nick)
+ else:
+ self.timers.add("ison-check", 30, server=event["server"])
+
+ @utils.hook("self.nick")
+ def self_nick(self, event):
+ target_nick = event["server"].connection_params.nickname
+ if event["server"].irc_equals(event["new_nickname"], target_nick):
+ if "MONITOR" in event["server"].isupport:
+ event["server"].send("MONITOR - %s " % target_nick)
+
+ @utils.hook("received.numeric.731")
+ def mon_offline(self, event):
+ target_nick = event["server"].connection_params.nickname
+ nicks = event["args"][1].split(",")
+ nicks = [event["server"].irc_lower(n) for n in nicks]
+ if event["server"].irc_lower(target_nick) in nicks:
+ event["server"].send_nick(target_nick)
+
+ @utils.hook("timer.ison-check")
+ def ison_check(self, event):
+ target_nick = event["server"].connection_params.nickname
+ if not event["server"].irc_equals(
+ event["server"].nickname, target_nick):
+ event["server"].send("ISON %s" % target_nick)
+ event["timer"].redo()
+
+ @utils.hook("received.numeric.303")
+ def ison_response(self, event):
+ target_nick = event["server"].connection_params.nickname
+ if not event["args"][1] and not event["server"].irc_equals(
+ event["server"].nickname, target_nick):
+ event["server"].send_nick(target_nick)
+