code: def iter_dialogs(
          self,
          offset_date: int = 0,
          limit: int = 0
      ) -> Generator["pyrogram.Dialog", None, None]:
          
          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
docs: 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.