Skip to content

Commit d53a51a

Browse files
committed
parser: Add tag access fields to Message objects
1 parent ff23b8a commit d53a51a

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

irclib/parser.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
Union,
2121
cast,
2222
)
23+
import datetime
2324

2425
from irclib.errors import ParseError
2526

@@ -69,6 +70,15 @@
6970
SelfT = TypeVar("SelfT")
7071

7172

73+
def parse_server_time(value: Optional[str]) -> datetime.datetime:
74+
if value:
75+
ts = datetime.datetime.strptime(value, '%Y-%m-%dT%H:%M:%S.%fZ')
76+
else:
77+
ts = datetime.datetime.utcnow()
78+
79+
return ts.replace(tzinfo=datetime.timezone.utc)
80+
81+
7282
class Parseable(metaclass=ABCMeta):
7383
"""Abstract class for parseable objects"""
7484

@@ -582,6 +592,16 @@ def __init__(
582592
self._command = command
583593
self._parameters = _parse_params(parameters)
584594

595+
self.time = parse_server_time(self.get_tag_value('time'))
596+
self.message_id = self.get_tag_value('msgid')
597+
self.batch_id = self.get_tag_value('batch')
598+
599+
def get_tag_value(self, name):
600+
if self.tags and name in self.tags:
601+
return self.tags[name].value
602+
603+
return None
604+
585605
@property
586606
def tags(self) -> MsgTagList:
587607
"""IRC tag list"""

0 commit comments

Comments
 (0)