diff --git a/src/irclib.py b/src/irclib.py index f7e5d0223..950ffaee9 100644 --- a/src/irclib.py +++ b/src/irclib.py @@ -955,7 +955,7 @@ class Irc(IrcCommandDispatcher, log.Firewalled): REQUEST_CAPABILITIES = set(['account-notify', 'extended-join', 'multi-prefix', 'metadata-notify', 'account-tag', - 'userhost-in-names', 'invite-notify']) + 'userhost-in-names', 'invite-notify', 'server-time']) def _queueConnectMessages(self): if self.zombie: diff --git a/src/ircmsgs.py b/src/ircmsgs.py index 6ed2e3b0a..f5102a40d 100644 --- a/src/ircmsgs.py +++ b/src/ircmsgs.py @@ -38,6 +38,7 @@ object (which, as you'll read later, is quite...full-featured :)) import re import sys import time +import datetime import functools from . import conf, ircutils, utils @@ -148,7 +149,13 @@ class IrcMsg(object): else: self.args = s.split() self.command = self.args.pop(0) - self.time = time.time() + if 'time' in self.server_tags: + s = self.server_tags['time'] + date = datetime.datetime.strptime(s, '%Y-%m-%dT%H:%M:%S.%fZ') + print(repr(date)) + self.time = date.timestamp() + else: + self.time = time.time() except (IndexError, ValueError): raise MalformedIrcMsg(repr(originalString)) else: diff --git a/test/test_ircmsgs.py b/test/test_ircmsgs.py index 9725c6e9a..e189656c6 100644 --- a/test/test_ircmsgs.py +++ b/test/test_ircmsgs.py @@ -153,6 +153,10 @@ class IrcMsgTestCase(SupyTestCase): after = time.time() self.assertTrue(before <= msg.time <= after) + msg = ircmsgs.IrcMsg('@time=2011-10-19T16:40:51.620Z ' + ':Angel!angel@example.org PRIVMSG Wiz :Hello') + self.assertEqual(msg.time, 1319035251.62) + class FunctionsTestCase(SupyTestCase): def testIsAction(self): L = [':jemfinch!~jfincher@ts26-2.homenet.ohio-state.edu PRIVMSG'