diff options
Diffstat (limited to 'modules/line_handler/__init__.py')
| -rw-r--r-- | modules/line_handler/__init__.py | 58 |
1 files changed, 28 insertions, 30 deletions
diff --git a/modules/line_handler/__init__.py b/modules/line_handler/__init__.py index a11fdec5..19e1902b 100644 --- a/modules/line_handler/__init__.py +++ b/modules/line_handler/__init__.py @@ -2,11 +2,6 @@ import enum from src import EventManager, ModuleManager, utils from . import channel, core, ircv3, message, user -LABELED_BATCH = { - "labeled-response": "label", - "draft/labeled-response": "draft/label" -} - class Module(ModuleManager.BaseModule): def _handle(self, server, line): hooks = self.events.on("raw.received").on(line.command).get_hooks() @@ -15,8 +10,9 @@ class Module(ModuleManager.BaseModule): default_events.append(hook.kwargs.get("default_event", False)) default_event = any(default_events) - kwargs = {"args": line.args, "tags": line.tags, "server": server, - "prefix": line.prefix, "direction": utils.Direction.Recv} + kwargs = {"command": line.command, "args": line.args, "tags": line.tags, + "server": server, "source": line.source, + "direction": utils.Direction.Recv} self.events.on("raw.received").on(line.command).call_unsafe(**kwargs) if default_event or not hooks: @@ -26,7 +22,7 @@ class Module(ModuleManager.BaseModule): def handle_raw(self, event): if ("batch" in event["line"].tags and event["line"].tags["batch"] in event["server"].batches): - event["server"].batches[event["line"].tags["batch"]].lines.append( + event["server"].batches[event["line"].tags["batch"]].add_line( event["line"]) else: self._handle(event["server"], event["line"]) @@ -34,8 +30,9 @@ class Module(ModuleManager.BaseModule): @utils.hook("raw.send") def handle_send(self, event): self.events.on("raw.send").on(event["line"].command).call_unsafe( - args=event["line"].args, tags=event["line"].tags, - server=event["server"], direction=utils.Direction.Send) + command=event["line"].command, args=event["line"].args, + tags=event["line"].tags, server=event["server"], + direction=utils.Direction.Send) # ping from the server @utils.hook("raw.received.ping") @@ -158,22 +155,14 @@ class Module(ModuleManager.BaseModule): def invite(self, event): core.invite(self.events, event) - # we've received/sent a message + # we've received/sent a PRIVMSG, NOTICE or TAGMSG @utils.hook("raw.received.privmsg") @utils.hook("raw.send.privmsg") - def privmsg(self, event): - message.privmsg(self.events, event) - - # we've received/sent a notice @utils.hook("raw.received.notice") @utils.hook("raw.send.notice") - def notice(self, event): - message.notice(self.events, event) - - # IRCv3 TAGMSG, used to send tags without any other information @utils.hook("raw.received.tagmsg") - def tagmsg(self, event): - message.tagmsg(self.events, event) + def message(self, event): + message.message(self.events, event) # IRCv3 AWAY, used to notify us that a client we can see has changed /away @utils.hook("raw.received.away") @@ -187,20 +176,29 @@ class Module(ModuleManager.BaseModule): if modifier == "+": batch_type = event["args"][1] - event["server"].batches[identifier] = utils.irc.IRCRecvBatch( - identifier, batch_type, event["tags"]) + args = event["args"][2:] + + batch = utils.irc.IRCBatch(identifier, batch_type, args, + event["tags"]) + event["server"].batches[identifier] = batch + + self.events.on("received.batch.start").call(batch=batch, + server=event["server"]) else: batch = event["server"].batches[identifier] del event["server"].batches[identifier] - add_tags = {} - if batch.type in LABELED_BATCH.keys(): - tag_name = LABELED_BATCH[batch.type] - add_tags[tag_name] = batch.tags[tag_name] + lines = batch.get_lines() + + results = self.events.on("received.batch.end").call(batch=batch, + server=event["server"]) + + for result in results: + if not result == None: + lines = result + break - for line in batch.lines: - if add_tags: - line.tags.update(add_tags) + for line in lines: self._handle(event["server"], line) # IRCv3 CHGHOST, a user's username and/or hostname has changed |
