code: func (api *Client) SetUserCustomStatusContext(ctx context.Context, statusText, statusEmoji string, statusExpiration int64) error {
  	// XXX(theckman): this anonymous struct is for making requests to the Slack
  	// API for setting and unsetting a User's Custom Status/Emoji. To change
  	// these values we must provide a JSON document as the profile POST field.
  	//
  	// We use an anonymous struct over UserProfile because to unset the values
  	// on the User's profile we cannot use the `json:"omitempty"` tag. This is
  	// because an empty string ("") is what's used to unset the values. Check
  	// out the API docs for more details:
  	//
  	// - https://api.slack.com/docs/presence-and-status#custom_status
  	profile, err := json.Marshal(
  		&struct {
  			StatusText       string `json:"status_text"`
  			StatusEmoji      string `json:"status_emoji"`
  			StatusExpiration int64  `json:"status_expiration"`
  		}{
  			StatusText:       statusText,
  			StatusEmoji:      statusEmoji,
  			StatusExpiration: statusExpiration,
  		},
  	)
  
  	if err != nil {
  		return err
  	}
  
  	values := url.Values{
  		"token":   {api.token},
  		"profile": {string(profile)},
  	}
  
  	response := &userResponseFull{}
  	if err = api.postMethod(ctx, "users.profile.set", values, response); err != nil {
  		return err
  	}
  
  	return response.Err()
  }
docs: // SetUserCustomStatusContext will set a custom status and emoji for the currently authenticated user with a custom context
  //
  // For more information see SetUserCustomStatus