mirror of
https://github.com/python-telegram-bot/python-telegram-bot.git
synced 2025-03-17 04:39:55 +01:00
Convert unix timestamp from date and forward_date in messages to date object #35
This commit is contained in:
parent
ea1614631e
commit
9b6ccaf94b
2 changed files with 36 additions and 5 deletions
|
@ -18,6 +18,8 @@
|
|||
|
||||
|
||||
from telegram import TelegramObject
|
||||
from datetime import datetime
|
||||
from time import mktime
|
||||
|
||||
|
||||
class Message(TelegramObject):
|
||||
|
@ -79,6 +81,11 @@ class Message(TelegramObject):
|
|||
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
|
||||
|
@ -95,6 +102,11 @@ class Message(TelegramObject):
|
|||
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:
|
||||
|
@ -156,10 +168,10 @@ class Message(TelegramObject):
|
|||
|
||||
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,
|
||||
|
@ -180,12 +192,22 @@ class Message(TelegramObject):
|
|||
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:
|
||||
|
@ -219,3 +241,7 @@ class Message(TelegramObject):
|
|||
if self.group_chat_created:
|
||||
data['group_chat_created'] = self.group_chat_created
|
||||
return data
|
||||
|
||||
@staticmethod
|
||||
def _totimestamp(dt):
|
||||
return int(mktime(dt.timetuple()))
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
import os
|
||||
import telegram
|
||||
import unittest
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class BotTest(unittest.TestCase):
|
||||
|
@ -44,6 +45,9 @@ class BotTest(unittest.TestCase):
|
|||
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'''
|
||||
|
@ -59,6 +63,7 @@ class BotTest(unittest.TestCase):
|
|||
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'''
|
||||
|
|
Loading…
Add table
Reference in a new issue