messagequery.go
func (mq *MessageQuery) QuickReply(qr QuickReply) error {
	//max 10 quick replies
	if len(mq.Message.QuickReplies) >= 10 {
		return errors.New("Number of quick replies is limited to 10")
	}

	//if location then no title or payload
	if qr.ContentType == ContentTypeLocation && (len(qr.Title) != 0 || len(qr.Payload) != 0) {
		return errors.New("Location ContentType supports neither title nor payload")
	}

	//title has a 20 character limit
	if len(qr.Title) > 20 {
		return errors.New("Title is too long, it has a 20 character limit.")
	}
	//payload has a 1000 character limit
	if len(qr.Payload) > 1000 {
		return errors.New("Payload is too long, it has a 1000 character limit.")
	}

	if len(qr.ContentType) == 0 {
		qr.ContentType = ContentTypeText
	}

	mq.Message.QuickReplies = append(mq.Message.QuickReplies, qr)
	return nil
}
func (mq *MessageQuery) QuickReply(qr QuickReply) error {
	//max 10 quick replies
	if len(mq.Message.QuickReplies) >= 10 {
		return errors.New("Number of quick replies is limited to 10")
	}

	//if location then no title or payload
	if qr.ContentType == ContentTypeLocation && (len(qr.Title) != 0 || len(qr.Payload) != 0) {
		return errors.New("Location ContentType supports neither title nor payload")
	}

	//title has a 20 character limit
	if len(qr.Title) > 20 {
		return errors.New("Title is too long, it has a 20 character limit.")
	}
	//payload has a 1000 character limit
	if len(qr.Payload) > 1000 {
		return errors.New("Payload is too long, it has a 1000 character limit.")
	}

	if len(qr.ContentType) == 0 {
		qr.ContentType = ContentTypeText
	}

	mq.Message.QuickReplies = append(mq.Message.QuickReplies, qr)
	return nil
}
// Documentation: https://developers.facebook.com/docs/messenger-platform/send-api-reference/quick-replies#quick_reply