Use this method to iterate through a user's dialogs sequentially.

        This convenience method does the same as repeatedly calling :meth:`get_dialogs` in a loop, thus saving you from
        the hassle of setting up boilerplate code. It is useful for getting the whole dialogs list with a single call.

        Args:
            offset_date (``int``):
                The offset date in Unix time taken from the top message of a :obj:`Dialog`.
                Defaults to 0 (most recent dialog).

            limit (``str``, *optional*):
                Limits the number of dialogs to be retrieved.
                By default, no limit is applied and all dialogs are returned.

        Returns:
            A generator yielding :obj:`Dialog <pyrogram.Dialog>` objects.

        Raises:
            :class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.

def iter_dialogs(
        self,
        offset_date: int = 0,
        limit: int = 0
    ) -> Generator["pyrogram.Dialog", None, None]:
        """Use this method to iterate through a user's dialogs sequentially.

        This convenience method does the same as repeatedly calling :meth:`get_dialogs` in a loop, thus saving you from
        the hassle of setting up boilerplate code. It is useful for getting the whole dialogs list with a single call.

        Args:
            offset_date (``int``):
                The offset date in Unix time taken from the top message of a :obj:`Dialog`.
                Defaults to 0 (most recent dialog).

            limit (``str``, *optional*):
                Limits the number of dialogs to be retrieved.
                By default, no limit is applied and all dialogs are returned.

        Returns:
            A generator yielding :obj:`Dialog <pyrogram.Dialog>` objects.

        Raises:
            :class:`RPCError <pyrogram.RPCError>` in case of a Telegram RPC error.
        """
        current = 0
        total = limit or (1 << 31) - 1
        limit = min(100, total)

        pinned_dialogs = self.get_dialogs(
            pinned_only=True
        ).dialogs

        for dialog in pinned_dialogs:
            yield dialog

            current += 1

            if current >= total:
                return

        while True:
            dialogs = self.get_dialogs(
                offset_date=offset_date,
                limit=limit
            ).dialogs

            if not dialogs:
                return

            offset_date = dialogs[-1].top_message.date

            for dialog in dialogs:
                yield dialog

                current += 1

                if current >= total:
                    return