From 3ef21e0477ac3295d4488fdb20c58679eae20ff9 Mon Sep 17 00:00:00 2001 From: David Schultz Date: Sat, 12 Jun 2021 00:34:00 -0500 Subject: [PATCH] support `draft/react` spec --- modules/ircv3_react.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 modules/ircv3_react.py diff --git a/modules/ircv3_react.py b/modules/ircv3_react.py new file mode 100644 index 00000000..8f4cd046 --- /dev/null +++ b/modules/ircv3_react.py @@ -0,0 +1,26 @@ +from src import IRCLine, ModuleManager, utils + +TAG = utils.irc.MessageTag("msgid", "draft/msgid") +CAP = utils.irc.Capability("message-tags", "draft/message-tags-0.2") + +class Module(ModuleManager.BaseModule): + def _tagmsg(self, target, msgid, reaction): + return IRCLine.ParsedLine("TAGMSG", [target], + tags={ + "+draft/reply": msgid, + "+draft/react": reaction + }) + def _has_tags(self, server): + return server.has_capability(CAP) + + def _expect_output(self, event): + kwarg = event["hook"].get_kwarg("expect_output", None) + return kwarg if not kwarg is None else event["expect_output"] + + @utils.hook("preprocess.command") + def preprocess(self, event): + if self._has_tags(event["server"]) and self._expect_output(event): + msgid = TAG.get_value(event["line"].tags) + if msgid: + event["server"].send(self._tagmsg(event["target_str"], msgid, "👍"), + immediate=True)