From 5730d6fe591b63b8d50fbebf7c151504003921bd Mon Sep 17 00:00:00 2001 From: jesopo Date: Fri, 22 Nov 2019 16:23:30 +0000 Subject: refactor commands (mostly stdout/stderr) and split typing/reply out closes #208 --- modules/ircv3_typing.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 modules/ircv3_typing.py (limited to 'modules/ircv3_typing.py') diff --git a/modules/ircv3_typing.py b/modules/ircv3_typing.py new file mode 100644 index 00000000..ca2fce2b --- /dev/null +++ b/modules/ircv3_typing.py @@ -0,0 +1,27 @@ +from src import IRCLine, ModuleManager, utils + +CAP = utils.irc.Capability("message-tags", "draft/message-tags-0.2") + +class Module(ModuleManager.BaseModule): + def _tagmsg(self, target, state): + return IRCLine.ParsedLine("TAGMSG", [target], + tags={"+draft/typing": state}) + def _has_tags(self, server): + return server.has_capability(CAP) + + @utils.hook("preprocess.command") + def preprocess(self, event): + if (self._has_tags(event["server"]) and + event["hook"].get_kwarg("expect_output", True)): + event["target"]._typing = True + event["server"].send(self._tagmsg(event["target_str"], "active"), + immediate=True) + else: + event["target"]._typing = False + + @utils.hook("postprocess.command") + def postprocess(self, event): + if (event["target"]._typing and + not event["stdout"].has_text() and + not event["stderr"].has_text()): + event["server"].send(self._tagmsg(event["target_str"], "done")) -- cgit v1.3.1-10-gc9f91