aboutsummaryrefslogtreecommitdiff
path: root/src/core_modules/ircv3_echo_message.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/core_modules/ircv3_echo_message.py')
-rw-r--r--src/core_modules/ircv3_echo_message.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/core_modules/ircv3_echo_message.py b/src/core_modules/ircv3_echo_message.py
new file mode 100644
index 00000000..276ac554
--- /dev/null
+++ b/src/core_modules/ircv3_echo_message.py
@@ -0,0 +1,21 @@
+from src import EventManager, ModuleManager, utils
+
+CAP = utils.irc.Capability("echo-message", depends_on=["labeled-response"])
+
+@utils.export("cap", CAP)
+class Module(ModuleManager.BaseModule):
+ @utils.hook("raw.send.privmsg", priority=EventManager.PRIORITY_LOW)
+ @utils.hook("raw.send.notice", priority=EventManager.PRIORITY_LOW)
+ def send_message(self, event):
+ if event["server"].has_capability(CAP):
+ event.eat()
+
+ @utils.hook("preprocess.send.privmsg")
+ @utils.hook("preprocess.send.notice")
+ @utils.hook("preprocess.send.tagmsg")
+ def preprocess_send(self, event):
+ if event["server"].has_capability(CAP):
+ event["events"].on("labeled-response").hook(self.on_echo)
+
+ def on_echo(self, event):
+ event["responses"][0].id = event["line"].id