From c2424029b57e50a3587476900ee842b97feec947 Mon Sep 17 00:00:00 2001 From: Dan <14043624+delivrance@users.noreply.github.com> Date: Wed, 29 May 2019 09:37:50 +0200 Subject: [PATCH] Fix dialogs after L100 update --- pyrogram/client/client.py | 4 ++-- pyrogram/client/methods/chats/get_dialogs.py | 2 +- pyrogram/client/methods/chats/get_dialogs_count.py | 2 +- pyrogram/client/methods/chats/iter_dialogs.py | 2 +- pyrogram/client/types/user_and_chats/dialog.py | 2 +- pyrogram/client/types/user_and_chats/dialogs.py | 12 ++++++++++-- 6 files changed, 16 insertions(+), 8 deletions(-) diff --git a/pyrogram/client/client.py b/pyrogram/client/client.py index 8c1e3001..0d1cde19 100644 --- a/pyrogram/client/client.py +++ b/pyrogram/client/client.py @@ -313,7 +313,7 @@ class Client(Methods, BaseClient): self.get_initial_dialogs() self.get_contacts() else: - self.send(functions.messages.GetPinnedDialogs()) + self.send(functions.messages.GetPinnedDialogs(folder_id=0)) self.get_initial_dialogs_chunk() else: self.send(functions.updates.GetState()) @@ -1325,7 +1325,7 @@ class Client(Methods, BaseClient): return r def get_initial_dialogs(self): - self.send(functions.messages.GetPinnedDialogs()) + self.send(functions.messages.GetPinnedDialogs(folder_id=0)) dialogs = self.get_initial_dialogs_chunk() offset_date = utils.get_offset_date(dialogs) diff --git a/pyrogram/client/methods/chats/get_dialogs.py b/pyrogram/client/methods/chats/get_dialogs.py index 605ee782..948a7642 100644 --- a/pyrogram/client/methods/chats/get_dialogs.py +++ b/pyrogram/client/methods/chats/get_dialogs.py @@ -62,7 +62,7 @@ class GetDialogs(BaseClient): while True: try: if pinned_only: - r = self.send(functions.messages.GetPinnedDialogs()) + r = self.send(functions.messages.GetPinnedDialogs(folder_id=0)) else: r = self.send( functions.messages.GetDialogs( diff --git a/pyrogram/client/methods/chats/get_dialogs_count.py b/pyrogram/client/methods/chats/get_dialogs_count.py index b9b0970a..c804709d 100644 --- a/pyrogram/client/methods/chats/get_dialogs_count.py +++ b/pyrogram/client/methods/chats/get_dialogs_count.py @@ -36,7 +36,7 @@ class GetDialogsCount(BaseClient): """ if pinned_only: - return len(self.send(functions.messages.GetPinnedDialogs()).dialogs) + return len(self.send(functions.messages.GetPinnedDialogs(folder_id=0)).dialogs) else: r = self.send( functions.messages.GetDialogs( diff --git a/pyrogram/client/methods/chats/iter_dialogs.py b/pyrogram/client/methods/chats/iter_dialogs.py index 1209a5df..976a49df 100644 --- a/pyrogram/client/methods/chats/iter_dialogs.py +++ b/pyrogram/client/methods/chats/iter_dialogs.py @@ -26,7 +26,7 @@ class IterDialogs(BaseClient): def iter_dialogs( self, offset_date: int = 0, - limit: int = 0 + limit: int = None ) -> Generator["pyrogram.Dialog", None, None]: """Iterate through a user's dialogs sequentially. diff --git a/pyrogram/client/types/user_and_chats/dialog.py b/pyrogram/client/types/user_and_chats/dialog.py index fc691ab6..4b900012 100644 --- a/pyrogram/client/types/user_and_chats/dialog.py +++ b/pyrogram/client/types/user_and_chats/dialog.py @@ -69,7 +69,7 @@ class Dialog(PyrogramType): self.is_pinned = is_pinned @staticmethod - def _parse(client, dialog, messages, users, chats) -> "Dialog": + def _parse(client, dialog: types.Dialog, messages, users, chats) -> "Dialog": chat_id = dialog.peer if isinstance(chat_id, types.PeerUser): diff --git a/pyrogram/client/types/user_and_chats/dialogs.py b/pyrogram/client/types/user_and_chats/dialogs.py index 0d6a0935..862fcf22 100644 --- a/pyrogram/client/types/user_and_chats/dialogs.py +++ b/pyrogram/client/types/user_and_chats/dialogs.py @@ -51,7 +51,7 @@ class Dialogs(PyrogramType): self.dialogs = dialogs @staticmethod - def _parse(client, dialogs) -> "Dialogs": + def _parse(client, dialogs: types.messages.Dialogs) -> "Dialogs": users = {i.id: i for i in dialogs.users} chats = {i.id: i for i in dialogs.chats} @@ -72,8 +72,16 @@ class Dialogs(PyrogramType): messages[chat_id] = Message._parse(client, message, users, chats) + parsed_dialogs = [] + + for dialog in dialogs.dialogs: + if not isinstance(dialog, types.Dialog): + continue + + parsed_dialogs.append(Dialog._parse(client, dialog, messages, users, chats)) + return Dialogs( total_count=getattr(dialogs, "count", len(dialogs.dialogs)), - dialogs=[Dialog._parse(client, dialog, messages, users, chats) for dialog in dialogs.dialogs], + dialogs=parsed_dialogs, client=client )