From 0fc03fd592380af7b85447f4173e3504aa1c5114 Mon Sep 17 00:00:00 2001 From: jesopo Date: Mon, 10 Jun 2019 10:11:31 +0100 Subject: Allow preprocess.send callbacks to request a line not be sent at all --- src/IRCServer.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'src/IRCServer.py') diff --git a/src/IRCServer.py b/src/IRCServer.py index 39d0817b..a5c4c34c 100644 --- a/src/IRCServer.py +++ b/src/IRCServer.py @@ -256,7 +256,8 @@ class Server(IRCObject.Object): self.events.on("raw.send").call_unsafe(server=self, line=line.parsed_line) - def send(self, line_parsed: IRCLine.ParsedLine, immediate: bool=False): + def send(self, line_parsed: IRCLine.ParsedLine, immediate: bool=False + ) -> typing.Optional[IRCLine.SentLine]: if not self.send_enabled: return None @@ -267,15 +268,17 @@ class Server(IRCObject.Object): self.events.on("preprocess.send").call_unsafe(server=self, line=line_parsed, events=line_events) - line = line_parsed.format() - line_obj = IRCLine.SentLine(line_events, datetime.datetime.utcnow(), - self.hostmask(), line_parsed) - self.socket.send(line_obj, immediate=immediate) + if line_parsed.valid(): + line = line_parsed.format() + line_obj = IRCLine.SentLine(line_events, datetime.datetime.utcnow(), + self.hostmask(), line_parsed) + self.socket.send(line_obj, immediate=immediate) - if immediate: - self.bot.trigger_write() + if immediate: + self.bot.trigger_write() - return line_obj + return line_obj + return None def send_raw(self, line: str): return self.send(utils.irc.parse_line(line)) -- cgit v1.3.1-10-gc9f91