<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def reject(self, condition=None, description=None):
 """Send a response disposition to the service to indicate that a received message has been rejected. If the client is running in PeekLock mode, the service will wait on this disposition. Otherwise it will be ignored. A rejected message will increment the messages delivery count. Returns `True` is message was rejected, or `False` if the message was already settled. :param condition: The AMQP rejection code. By default this is `amqp:internal-error`. :type condition: bytes or str :param description: A description/reason to accompany the rejection. :type description: bytes or str :rtype: bool :raises: TypeError if the message is being sent rather than received. """

        if self._can_settle_message():
            self._response = errors.MessageRejected(
                condition=condition,
                description=description,
                encoding=self._encoding)
            self._settler(self._response)
            self.state = constants.MessageState.ReceivedSettled
            return True
        return False