aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar jesopo2020-01-17 16:28:23 +0000
committerGravatar jesopo2020-01-17 16:28:23 +0000
commit95668f2b8bdeaa0f92bee1d6cebdeb0fb9da7ec5 (patch)
tree5531c1de7bbf1da0c5c68f592349c36de20e582b /src
parentoverwrite BufferLine.timestamp with ircv3 server-time when available (diff)
signature
give BufferLine.id default value, overwrite in ircv3_msgid.py
Diffstat (limited to 'src')
-rw-r--r--src/IRCBuffer.py8
-rw-r--r--src/core_modules/ircv3_msgid.py15
-rw-r--r--src/core_modules/line_handler/message.py6
3 files changed, 18 insertions, 11 deletions
diff --git a/src/IRCBuffer.py b/src/IRCBuffer.py
index bf3af5df..b8e31aeb 100644
--- a/src/IRCBuffer.py
+++ b/src/IRCBuffer.py
@@ -1,12 +1,10 @@
-import collections, dataclasses, datetime, re, typing
+import collections, dataclasses, datetime, re, typing, uuid
from src import IRCBot, IRCServer, utils
MAX_LINES = 64
@dataclasses.dataclass
class BufferLine(object):
- id: str
- timestamp: datetime.datetime
sender: str
message: str
action: bool
@@ -19,6 +17,10 @@ class BufferLine(object):
notes: typing.Dict[str, str] = dataclasses.field(
default_factory=dict)
+ id: str = dataclasses.field(default_factory=uuid.uuid4)
+ timestamp: datetime.datetime = dataclasses.field(
+ default_factory=utils.datetime.utcnow)
+
class BufferLineMatch(object):
def __init__(self, line: BufferLine, match: str):
self.line = line
diff --git a/src/core_modules/ircv3_msgid.py b/src/core_modules/ircv3_msgid.py
index f95f9fd4..0f20a45f 100644
--- a/src/core_modules/ircv3_msgid.py
+++ b/src/core_modules/ircv3_msgid.py
@@ -3,25 +3,32 @@ from src import ModuleManager, utils
TAG = utils.irc.MessageTag("msgid", "draft/msgid")
class Module(ModuleManager.BaseModule):
- def _on_channel(self, channel, tags):
+ 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 on_channel(self, event):
- self._on_channel(event["channel"], event["tags"])
+ 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"])
+ self._on_channel(event["target"], event["tags"], None)
@utils.hook("postprocess.command")
def postprocess_command(self, event):
diff --git a/src/core_modules/line_handler/message.py b/src/core_modules/line_handler/message.py
index 8db74461..2d9eebe8 100644
--- a/src/core_modules/line_handler/message.py
+++ b/src/core_modules/line_handler/message.py
@@ -97,13 +97,11 @@ def message(events, event):
context = "channel" if is_channel else "private"
hook = events.on(direction).on(event_type).on(context)
- message_id = event["line"].tags.get("id", str(uuid.uuid4()))
buffer_line = None
if message:
- buffer_line = IRCBuffer.BufferLine(message_id, utils.datetime.utcnow(),
- user.nickname, message, action, event["line"].tags, from_self,
- event["line"].command)
+ buffer_line = IRCBuffer.BufferLine(user.nickname, message, action,
+ event["line"].tags, from_self, event["line"].command)
buffer_obj = target_obj
if is_channel: