diff --git a/telethon/telegram_client.py b/telethon/telegram_client.py index 0c8cfc64..76141425 100644 --- a/telethon/telegram_client.py +++ b/telethon/telegram_client.py @@ -286,8 +286,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) @@ -941,8 +943,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): @@ -950,9 +952,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(