diff options
| -rw-r--r-- | modules/line_handler.py | 23 | ||||
| -rw-r--r-- | modules/print_activity.py | 10 |
2 files changed, 24 insertions, 9 deletions
diff --git a/modules/line_handler.py b/modules/line_handler.py index 8a017ed7..d9ddbaad 100644 --- a/modules/line_handler.py +++ b/modules/line_handler.py @@ -290,17 +290,26 @@ class Module(ModuleManager.BaseModule): # a user has disconnected! @utils.hook("raw.received.quit") + @utils.hook("raw.send.quit") def quit(self, event): + nickname = None + if event["direction"] == Direction.RECV: + nickname = event["prefix"].nickname reason = event["args"].get(0) - if (not event["server"].is_own_nickname(event["prefix"].nickname) and - not event["prefix"].hostmask == "*"): - user = event["server"].get_user(event["prefix"].nickname) - event["server"].remove_user(user) - self._event(event, "quit", reason=reason, user=user, - server=event["server"]) + if event["direction"] == Direction.RECV: + nickname = event["prefix"].nickname + if (not event["server"].is_own_nickname(nickname) and + not event["prefix"].hostmask == "*"): + user = event["server"].get_user(nickname) + event["server"].remove_user(user) + self.events.on("received.quit").call(reason=reason, user=user, + server=event["server"]) + else: + event["server"].disconnect() else: - event["server"].disconnect() + self.events.on("send.quit").call(reason=reason, + server=event["server"]) def _match_caps(self, capabilities): return set(capabilities) & CAPABILITIES diff --git a/modules/print_activity.py b/modules/print_activity.py index c0618dd5..43a69533 100644 --- a/modules/print_activity.py +++ b/modules/print_activity.py @@ -89,10 +89,16 @@ class Module(ModuleManager.BaseModule): self.print_line(event, "%s changed nickname to %s" % ( event["old_nickname"], event["new_nickname"])) + def _quit(self, event, nickname, reason): + self.print_line(event, "%s quit%s" % (nickname, + "" if not reason else " (%s)" % reason)) + @utils.hook("received.quit") def on_quit(self, event): - self.print_line(event, "%s quit%s" % (event["user"].nickname, - "" if not event["reason"] else " (%s)" % event["reason"])) + self._quit(event, event["user"].nickname, event["reason"]) + @utils.hook("send.quit") + def send_quit(self, event): + self._quit(event, event["server"].nickname, event["reason"]) def _on_kick(self, event, nickname): self.print_line(event, "%s kicked %s from %s%s" % ( |
