func (s *Slack) ReactionsAdd(name, file, fileComment, channel, timestamp string) (Response, error) {
	return s.reactionsAction(name, file, fileComment, channel, timestamp, "reactions.add")
}
ReactionsAdd to either file, fileComment or a combination of channel and timestamp
package slack
import (
	"errors"
	"net/url"
)
type Reaction struct {
	Name  string   `json:"name"`
	Count int      `json:"count"`
	Uesrs []string `json:"users"`
}
type ReactionsGetResponse struct {
	slackResponse
	Type    string  `json:"type"`
	Channel string  `json:"channel,omitempty"`
	Message Message `json:"message,omitempty"`
	File    File    `json:"file,omitempty"`
	Comment Comment `json:"comment,omitempty"`
}
type ReactionsListResponse struct {
	slackResponse
	Items  ReactionsGetResponse `json:"items"`
	Paging paging               `json:"paging"`
}
func (s *Slack) reactionsAction(name, file, fileComment, channel, timestamp, action string) (Response, error) {
	if name == "" {
		return nil, errors.New("Please provide the emoji name")
	}
	if file == "" && fileComment == "" && (channel == "" || timestamp == "") {
		return nil, errors.New("Please provide file or fileComment or both channel and timestamp")
	}
	params := url.Values{"name": {name}}
	appendNotEmpty("file", file, params)
	appendNotEmpty("file_comment", fileComment, params)
	appendNotEmpty("channel", channel, params)
	appendNotEmpty("timestamp", timestamp, params)
	r := &slackResponse{}
	err := s.do(action, params, r)
	if err != nil {
		return nil, err
	}
	return r, nil
}