code: def message(self, user, message, **kwargs):
          
  
          payload = {"message": message, "user": user, "token": self.token}
          for key, value in kwargs.iteritems():
              if key not in Pushover.message_keywords:
                  raise ValueError("{0}: invalid message parameter".format(key))
              elif key == "timestamp" and value is True:
                  payload[key] = int(time.time())
              elif key == "sound" and value not in self.sounds:
                  raise ValueError("{0}: invalid sound".format(value))
              else:
                  payload[key] = value
  
          return MessageRequest(payload)
docs: Send `message` to the user specified by `user`. It is possible
          to specify additional properties of the message by passing keyword
          arguments. The list of valid keywords is ``title, priority, sound,
          callback, timestamp, url, url_title, device, retry, expire and html``
          which are described in the Pushover API documentation.
  
          For convenience, you can simply set ``timestamp=True`` to set the
          timestamp to the current timestamp.
  
          An image can be attached to a message by passing a file-like object
          to the `attachment` keyword argument.
  
          This method returns a :class:`MessageRequest` object.