Hold on to BATCH args, allow event hooks to manipulate batches

This commit is contained in:
jesopo 2019-06-02 15:18:09 +01:00
parent 5204ac3300
commit c212d70b68
2 changed files with 16 additions and 5 deletions

View file

@ -182,7 +182,10 @@ class Module(ModuleManager.BaseModule):
if modifier == "+": if modifier == "+":
batch_type = event["args"][1] batch_type = event["args"][1]
batch = utils.irc.IRCBatch(identifier, batch_type, event["tags"]) args = event["args"][2:]
batch = utils.irc.IRCBatch(identifier, batch_type, args,
event["tags"])
event["server"].batches[identifier] = batch event["server"].batches[identifier] = batch
self.events.on("received.batch.start").call(batch=batch, self.events.on("received.batch.start").call(batch=batch,
@ -191,10 +194,17 @@ class Module(ModuleManager.BaseModule):
batch = event["server"].batches[identifier] batch = event["server"].batches[identifier]
del event["server"].batches[identifier] del event["server"].batches[identifier]
self.events.on("received.batch.end").call(batch=batch, lines = batch.get_lines()
results = self.events.on("received.batch.end").call(batch=batch,
server=event["server"]) server=event["server"])
for line in batch.lines: for result in results:
if not result == None:
lines = result
break
for line in lines:
self._handle(event["server"], line) self._handle(event["server"], line)
# IRCv3 CHGHOST, a user's username and/or hostname has changed # IRCv3 CHGHOST, a user's username and/or hostname has changed

View file

@ -258,10 +258,11 @@ def parse_ctcp(s: str) -> typing.Optional[CTCPMessage]:
return None return None
class IRCBatch(object): class IRCBatch(object):
def __init__(self, identifier: str, batch_type: str, tags: def __init__(self, identifier: str, batch_type: str, args: typing.List[str],
typing.Dict[str, str]={}): tags: typing.Dict[str, str]={}):
self.id = identifier self.id = identifier
self.type = batch_type self.type = batch_type
self.args = args
self.tags = tags self.tags = tags
self._lines = [] # type: typing.List[IRCLine.ParsedLine] self._lines = [] # type: typing.List[IRCLine.ParsedLine]
def add_line(self, line: IRCLine.ParsedLine): def add_line(self, line: IRCLine.ParsedLine):