aboutsummaryrefslogtreecommitdiff
path: root/src/core_modules/ircv3_msgid.py
blob: 0f20a45f2547bff3513b2e5c97db7ff5f2c391e7 (about) (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
from src import ModuleManager, utils

TAG = utils.irc.MessageTag("msgid", "draft/msgid")

class Module(ModuleManager.BaseModule):
    def _on_channel(self, channel, tags, buffer_line):
        msgid = TAG.get_value(tags)
        if not msgid == None:
            channel.set_setting("last-msgid", msgid)

            if buffer_line:
                buffer_line.id = msgid

    @utils.hook("received.message.channel")
    @utils.hook("send.message.channel")
    @utils.hook("received.notice.channel")
    @utils.hook("send.notice.channel")
    def on_channel(self, event):
        self._on_channel(event["channel"], event["tags"], event["buffer_line"])

    @utils.hook("received.tagmsg.channel")
    @utils.hook("send.tagmsg.channel")
    def tagmsg(self, event):
        self._on_channel(event["channel"], event["tags"], None)


    @utils.hook("received.ctcp.request")
    @utils.hook("received.ctcp.response")
    def ctcp(self, event):
        if event["is_channel"]:
            self._on_channel(event["target"], event["tags"], None)

    @utils.hook("postprocess.command")
    def postprocess_command(self, event):
        msgid = TAG.get_value(event["line"].tags)
        if msgid:
            event["tags"]["+draft/reply"] = msgid
            event["tags"]["+draft/reply"] = msgid