diff options
| author | 2019-11-22 16:23:30 +0000 | |
|---|---|---|
| committer | 2019-11-22 16:23:30 +0000 | |
| commit | 5730d6fe591b63b8d50fbebf7c151504003921bd (patch) | |
| tree | f6d170e30a8bd82513b52b98771c4f4c7a8fd778 /modules/ircv3_typing.py | |
| parent | update CHANGELOG.md (diff) | |
| signature | ||
refactor commands (mostly stdout/stderr) and split typing/reply out
closes #208
Diffstat (limited to 'modules/ircv3_typing.py')
| -rw-r--r-- | modules/ircv3_typing.py | 27 |
1 files changed, 27 insertions, 0 deletions
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")) |
