aboutsummaryrefslogtreecommitdiff
path: root/modules/line_handler/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'modules/line_handler/__init__.py')
-rw-r--r--modules/line_handler/__init__.py58
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