Skip to content

Commit

Permalink
Convert unix timestamp from date and forward_date in messages to date…
Browse files Browse the repository at this point in the history
… object #35
  • Loading branch information
leandrotoledo committed Aug 14, 2015
1 parent ea16146 commit 9b6ccaf
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 5 deletions.
36 changes: 31 additions & 5 deletions telegram/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@


from telegram import TelegramObject
from datetime import datetime
from time import mktime


class Message(TelegramObject):
Expand Down Expand Up @@ -79,6 +81,11 @@ def de_json(data):
else:
from_user = None

if 'date' in data:
date = datetime.fromtimestamp(data['date'])
else:
date = None

if 'chat' in data:
if 'first_name' in data['chat']:
from telegram import User
Expand All @@ -95,6 +102,11 @@ def de_json(data):
else:
forward_from = None

if 'forward_date' in data:
forward_date = datetime.fromtimestamp(data['forward_date'])
else:
forward_date = None

if 'reply_to_message' in data:
reply_to_message = Message.de_json(data['reply_to_message'])
else:
Expand Down Expand Up @@ -156,10 +168,10 @@ def de_json(data):

return Message(message_id=data.get('message_id', None),
from_user=from_user,
date=data.get('date', None),
date=date,
chat=chat,
forward_from=forward_from,
forward_date=data.get('forward_date', None),
forward_date=forward_date,
reply_to_message=reply_to_message,
text=data.get('text', ''),
audio=audio,
Expand All @@ -180,12 +192,22 @@ def de_json(data):
def to_dict(self):
data = {'message_id': self.message_id,
'from': self.from_user.to_dict(),
'date': self.date,
'chat': self.chat.to_dict()}
try:
# Python 3.3+ supports .timestamp()
data['date'] = int(self.date.timestamp())

if self.forward_date:
data['forward_date'] = int(self.forward_date.timestamp())
except AttributeError:
# _totimestamp() for Python 3 (< 3.3) and Python 2
data['date'] = self._totimestamp(self.date)

if self.forward_date:
data['forward_date'] = self._totimestamp(self.forward_date)

if self.forward_from:
data['forward_from'] = self.forward_from
if self.forward_date:
data['forward_date'] = self.forward_date
if self.reply_to_message:
data['reply_to_message'] = self.reply_to_message
if self.text:
Expand Down Expand Up @@ -219,3 +241,7 @@ def to_dict(self):
if self.group_chat_created:
data['group_chat_created'] = self.group_chat_created
return data

@staticmethod
def _totimestamp(dt):
return int(mktime(dt.timetuple()))
5 changes: 5 additions & 0 deletions tests/test_bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import os
import telegram
import unittest
from datetime import datetime


class BotTest(unittest.TestCase):
Expand All @@ -44,6 +45,9 @@ def testSendMessage(self):
message = self._bot.sendMessage(chat_id=12173560,
text='Моё судно на воздушной подушке полно угрей')
self.assertEqual(u'Моё судно на воздушной подушке полно угрей', message.text)
import pdb; pdb.set_trace()
self.assertIsInstance(message.date, datetime)


def testGetUpdates(self):
'''Test the telegram.Bot getUpdates method'''
Expand All @@ -59,6 +63,7 @@ def testForwardMessage(self):
message_id=138)
self.assertEqual('Oi', message.text)
self.assertEqual('leandrotoledo', message.forward_from.username)
self.assertIsInstance(message.forward_date, datetime)

def testSendPhoto(self):
'''Test the telegram.Bot sendPhoto method'''
Expand Down

0 comments on commit 9b6ccaf

Please sign in to comment.