code: async def fetch_user_profile(self, user_id):
          
  
          state = self._connection
          data = await self.http.get_user_profile(user_id)
  
          def transform(d):
              return state._get_guild(int(d['id']))
  
          since = data.get('premium_since')
          mutual_guilds = list(filter(None, map(transform, data.get('mutual_guilds', []))))
          user = data['user']
          return Profile(flags=user.get('flags', 0),
                         premium_since=utils.parse_time(since),
                         mutual_guilds=mutual_guilds,
                         user=User(data=user, state=state),
                         connected_accounts=data['connected_accounts'])
docs: |coro|
  
          Gets an arbitrary user's profile. This can only be used by non-bot accounts.
  
          Parameters
          ------------
          user_id: :class:`int`
              The ID of the user to fetch their profile for.
  
          Raises
          -------
          Forbidden
              Not allowed to fetch profiles.
          HTTPException
              Fetching the profile failed.
  
          Returns
          --------
          :class:`.Profile`
              The profile of the user.