2019-02-12 20:42:26 +00:00
|
|
|
from src import ModuleManager, utils
|
|
|
|
|
|
|
|
class Module(ModuleManager.BaseModule):
|
2019-02-12 20:48:52 +00:00
|
|
|
def _done_connecting(self, server):
|
|
|
|
target_nick = server.connection_params.nickname
|
|
|
|
if not server.irc_equals(server.nickname, target_nick):
|
|
|
|
if "MONITOR" in server.isupport:
|
2019-05-12 21:07:25 +00:00
|
|
|
server.send_raw("MONITOR + %s" % target_nick)
|
2019-02-12 21:01:28 +00:00
|
|
|
else:
|
2019-10-08 12:49:43 +00:00
|
|
|
self.timers.add("ison-check", self._ison_check, 30,
|
|
|
|
server=server)
|
2019-02-12 20:48:52 +00:00
|
|
|
|
2019-02-16 15:53:14 +00:00
|
|
|
@utils.hook("received.376")
|
2019-02-12 20:48:52 +00:00
|
|
|
def end_of_motd(self, event):
|
|
|
|
self._done_connecting(event["server"])
|
2019-02-16 15:53:14 +00:00
|
|
|
@utils.hook("received.422")
|
2019-02-12 20:48:52 +00:00
|
|
|
def no_motd(self, event):
|
|
|
|
self._done_connecting(event["server"])
|
2019-02-12 20:42:26 +00:00
|
|
|
|
|
|
|
@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:
|
2019-05-12 21:07:25 +00:00
|
|
|
event["server"].send_raw("MONITOR - %s " % target_nick)
|
2019-02-12 20:42:26 +00:00
|
|
|
|
2019-02-16 15:53:14 +00:00
|
|
|
@utils.hook("received.731")
|
2019-02-12 20:42:26 +00:00
|
|
|
def mon_offline(self, event):
|
|
|
|
target_nick = event["server"].connection_params.nickname
|
2019-06-22 21:08:39 +00:00
|
|
|
nicks = event["line"].args[1].split(",")
|
2019-02-12 20:42:26 +00:00
|
|
|
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)
|
|
|
|
|
2019-10-08 12:49:43 +00:00
|
|
|
def _ison_check(self, timer):
|
|
|
|
server = timer.kwargs["server"]
|
|
|
|
target_nick = server.connection_params.nickname
|
|
|
|
if not server.irc_equals(server.nickname, target_nick):
|
|
|
|
server.send_raw("ISON %s" % target_nick)
|
|
|
|
timer.redo()
|
2019-02-12 20:42:26 +00:00
|
|
|
|
2019-02-16 15:53:14 +00:00
|
|
|
@utils.hook("received.303")
|
2019-02-12 20:42:26 +00:00
|
|
|
def ison_response(self, event):
|
|
|
|
target_nick = event["server"].connection_params.nickname
|
2019-06-22 21:08:39 +00:00
|
|
|
if not event["line"].args[1] and not event["server"].irc_equals(
|
2019-02-12 20:42:26 +00:00
|
|
|
event["server"].nickname, target_nick):
|
|
|
|
event["server"].send_nick(target_nick)
|
|
|
|
|