diff --git a/telethon/client/dialogs.py b/telethon/client/dialogs.py index a2d86d11..b0db0a61 100644 --- a/telethon/client/dialogs.py +++ b/telethon/client/dialogs.py @@ -91,8 +91,9 @@ class _DialogsIter(RequestIter): cd.entity, 'migrated_to', None) is None: self.buffer.append(cd) - if len(r.dialogs) < self.request.limit\ + if not self.buffer or len(r.dialogs) < self.request.limit\ or not isinstance(r, types.messages.DialogsSlice): + # Buffer being empty means all returned dialogs were skipped (due to offsets). # Less than we requested means we reached the end, or # we didn't get a DialogsSlice which means we got all. return True