func CreateReaction(client httd.Puter, channelID, messageID Snowflake, emoji interface{}) (ret *Reaction, err error) {
	if channelID.Empty() {
		err = errors.New("channelID must be set to target the correct channel")
		return
	}
	if messageID.Empty() {
		err = errors.New("messageID must be set to target the specific channel message")
		return
	}
	if emoji == nil {
		err = errors.New("emoji must be set in order to create a message reaction")
		return
	}

	emojiCode := ""
	if _, ok := emoji.(*Emoji); ok {
		emojiCode = emoji.(*Emoji).ID.String()
	} else if _, ok := emoji.(string); ok {
		emojiCode = emoji.(string) // unicode
	} else {
		err = errors.New("emoji type can only be a unicode string or a *Emoji struct")
		return
	}

	_, body, err := client.Put(&httd.Request{
		Ratelimiter: ratelimitChannelMessages(channelID),
		Endpoint:    endpoint.ChannelMessageReactionMe(channelID, messageID, emojiCode),
	})
	if err != nil {
		return
	}

	err = unmarshal(body, &ret)
	return
}
// CreateReaction [PUT]     Create a reaction for the message. This endpoint requires the 'READ_MESSAGE_HISTORY'
//                          permission to be present on the current user. Additionally, if nobody else has
//                          reacted to the message using this emoji, this endpoint requires the 'ADD_REACTIONS'
//                          permission to be present on the current user. Returns a 204 empty response on success.
//                          The maximum request size when sending a message is 8MB.
// Endpoint                 /channels/{channel.id}/messages/{message.id}/reactions/{emoji}/@me
// Rate limiter [MAJOR]     /channels/{channel.id}/messages TODO: I have no idea what the key is
// Discord documentation    https://discordapp.com/developers/docs/resources/channel#create-reaction
// Reviewed                 2018-06-07
// Comment                  -
// emoji either unicode (string) or *Emoji with an snowflake Snowflake if it's custom
CreateReaction [PUT]     Create a reaction for the message. This endpoint requires the 'READ_MESSAGE_HISTORY'
permission to be present on the current user. Additionally, if nobody else has
reacted to the message using this emoji, this endpoint requires the 'ADD_REACTIONS'
permission to be present on the current user. Returns a 204 empty response on success.
The maximum request size when sending a message is 8MB.
// CreateReaction [ PUT ] Create a reaction for the message . This endpoint requires the ' READ_MESSAGE_HISTORY ' // permission to be present on the current user . Additionally if nobody else has // reacted to the message using this emoji this endpoint requires the ' ADD_REACTIONS ' // permission to be present on the current user . Returns a 204 empty response on success . // The maximum request size when sending a message is 8MB . // Endpoint / channels / { channel . id } / messages / { message . id } / reactions / { emoji } / @me // Rate limiter [ MAJOR ] / channels / { channel . id } / messages TODO : I have no idea what the key is // Discord documentation https : // discordapp . com / developers / docs / resources / channel#create - reaction // Reviewed 2018 - 06 - 07 // Comment - // emoji either unicode ( string ) or * Emoji with an snowflake Snowflake if it ' s custom
func CreateReaction(client httd.Puter, channelID, messageID Snowflake, emoji interface{}) (ret *Reaction, err error) {
	if channelID.Empty() {
		err = errors.New("channelID must be set to target the correct channel")
		return
	}
	if messageID.Empty() {
		err = errors.New("messageID must be set to target the specific channel message")
		return
	}
	if emoji == nil {
		err = errors.New("emoji must be set in order to create a message reaction")
		return
	}
	emojiCode := ""
	if _, ok := emoji.(*Emoji); ok {
		emojiCode = emoji.(*Emoji).ID.String()
	} else if _, ok := emoji.(string); ok {
		emojiCode = emoji.(string) 
	} else {
		err = errors.New("emoji type can only be a unicode string or a *Emoji struct")
		return
	}
	_, body, err := client.Put(&httd.Request{
		Ratelimiter: ratelimitChannelMessages(channelID),
		Endpoint:    endpoint.ChannelMessageReactionMe(channelID, messageID, emojiCode),
	})
	if err != nil {
		return
	}
	err = unmarshal(body, &ret)
	return
}
func CreateReaction ( client httd . Puter , channelID , messageID Snowflake , emoji interface { } ) ( ret * Reaction , err error ) { if channelID . Empty ( ) { err = errors . New ( " " ) return } if messageID . Empty ( ) { err = errors . New ( " " ) return } if emoji == nil { err = errors . New ( " " ) return } emojiCode := " " if _ , ok := emoji . ( * Emoji ) ; ok { emojiCode = emoji . ( * Emoji ) . ID . String ( ) } else if _ , ok := emoji . ( string ) ; ok { emojiCode = emoji . ( string ) } else { err = errors . New ( " " ) return } _ , body , err := client . Put ( & httd . Request { Ratelimiter : ratelimitChannelMessages ( channelID ) , Endpoint : endpoint . ChannelMessageReactionMe ( channelID , messageID , emojiCode ) , } ) if err != nil { return } err = unmarshal ( body , & ret ) return }
CreateReaction [PUT]     Create a reaction for the message.
CreateReaction [ PUT ] Create a reaction for the message .
// unicode