<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def open_channel_with_funding( self, registry_address_hex, token_address_hex, peer_address_hex, total_deposit, settle_timeout=None, ):
 """ Convenience method to open a channel. Args: registry_address_hex (str):
 hex encoded address of the registry for the channel. token_address_hex (str):
 hex encoded address of the token for the channel. peer_address_hex (str):
 hex encoded address of the channel peer. total_deposit (int):
 amount of total funding for the channel. settle_timeout (int):
 amount of blocks for the settle time (if None use app defaults). Return: netting_channel: the (newly opened) netting channel object. """

        # Check, if peer is discoverable
        registry_address = decode_hex(registry_address_hex)
        peer_address = decode_hex(peer_address_hex)
        token_address = decode_hex(token_address_hex)
        try:
            self._discovery.get(peer_address)
        except KeyError:
            print('Error: peer {} not found in discovery'.format(peer_address_hex))
            return None

        self._api.channel_open(
            registry_address,
            token_address,
            peer_address,
            settle_timeout=settle_timeout,
        )

        return self._api.set_total_channel_deposit(
            registry_address,
            token_address,
            peer_address,
            total_deposit,
        )