|coro|

        Returns the guild's special vanity invite.

        The guild must be partnered, i.e. have 'VANITY_URL' in
        :attr:`~Guild.features`.

        You must have the :attr:`~Permissions.manage_guild` permission to use
        this as well.

        Raises
        -------
        Forbidden
            You do not have the proper permissions to get this.
        HTTPException
            Retrieving the vanity invite failed.

        Returns
        --------
        :class:`Invite`
            The special vanity invite.

async def vanity_invite(self):
        """|coro|

        Returns the guild's special vanity invite.

        The guild must be partnered, i.e. have 'VANITY_URL' in
        :attr:`~Guild.features`.

        You must have the :attr:`~Permissions.manage_guild` permission to use
        this as well.

        Raises
        -------
        Forbidden
            You do not have the proper permissions to get this.
        HTTPException
            Retrieving the vanity invite failed.

        Returns
        --------
        :class:`Invite`
            The special vanity invite.
        """

        # we start with { code: abc }
        payload = await self._state.http.get_vanity_code(self.id)

        # get the vanity URL channel since default channels aren't
        # reliable or a thing anymore
        data = await self._state.http.get_invite(payload['code'])

        payload['guild'] = self
        payload['channel'] = self.get_channel(int(data['channel']['id']))
        payload['revoked'] = False
        payload['temporary'] = False
        payload['max_uses'] = 0
        payload['max_age'] = 0
        return Invite(state=self._state, data=payload)