From 43f796caab32c63c8d10e15b0cd540b84e88afd6 Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Sun, 1 Oct 2017 21:02:41 +0200 Subject: [PATCH 1/2] Fix .get_dialogs() failing on Windows --- telethon/telegram_client.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/telethon/telegram_client.py b/telethon/telegram_client.py index 57d8b759..2dd5b98f 100644 --- a/telethon/telegram_client.py +++ b/telethon/telegram_client.py @@ -284,8 +284,10 @@ class TelegramClient(TelegramBareClient): ) offset_id = r.messages[-1].id & 4294967296 # Telegram/danog magic - # Sort by message date - no_date = datetime.fromtimestamp(0) + # Sort by message date. Windows will raise if timestamp is 0, + # so we need to set at least one day ahead while still being + # the smallest date possible. + no_date = datetime.fromtimestamp(86400) ds = sorted( list(dialogs.values()), key=lambda d: getattr(messages[d.top_message], 'date', no_date) From ba147bbe1039ee038ae5c6390fe4a500291daf0a Mon Sep 17 00:00:00 2001 From: Lonami Exo Date: Sun, 1 Oct 2017 21:15:49 +0200 Subject: [PATCH 2/2] Fix TgClient.get_input* not calling utils.get_input* when needed --- telethon/telegram_client.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/telethon/telegram_client.py b/telethon/telegram_client.py index 2dd5b98f..010a2c44 100644 --- a/telethon/telegram_client.py +++ b/telethon/telegram_client.py @@ -907,8 +907,8 @@ class TelegramClient(TelegramBareClient): If even after """ if isinstance(peer, str): - # Let .get_entity resolve the username or phone - return utils.get_input_peer(self.get_entity(peer)) + # Let .get_entity resolve the username or phone (full entity) + peer = self.get_entity(peer) is_peer = False if isinstance(peer, int): @@ -916,9 +916,12 @@ class TelegramClient(TelegramBareClient): is_peer = True elif isinstance(peer, TLObject): - if type(peer).SUBCLASS_OF_ID == 0xc91c90b6: # crc32(b'InputPeer') - return peer is_peer = type(peer).SUBCLASS_OF_ID == 0x2d45687 # crc32(b'Peer') + if not is_peer: + try: + return utils.get_input_peer(peer) + except ValueError: + pass if not is_peer: raise ValueError(