code: func (p *Photo) UnmarshalJSON(jsonStr []byte) error {
  	var hq photoSize
  
  	if jsonStr[0] == '{' {
  		if err := json.Unmarshal(jsonStr, &hq); err != nil {
  			return err
  		}
  	} else {
  		var sizes []photoSize
  
  		if err := json.Unmarshal(jsonStr, &sizes); err != nil {
  			return err
  		}
  
  		hq = sizes[len(sizes)-1]
  	}
  
  	p.File = hq.File
  	p.Width = hq.Width
  	p.Height = hq.Height
  
  	return nil
  }
docs: // UnmarshalJSON is custom unmarshaller required to abstract
  // away the hassle of treating different thumbnail sizes.
  // Instead, Telebot chooses the hi-res one and just sticks to
  // it.
  //
  // I really do find it a beautiful solution.