func NewFileMessage(path string) (*FileMessage, error) {
	rand.Seed(time.Now().UTC().UnixNano())
	yamlFile, err := ioutil.ReadFile(path)
	if err != nil {
		return nil, err
	}
	msg := StorageModel{}
	err = yaml.Unmarshal(yamlFile, &msg)
	if err != nil {
		return nil, err
	}
	return &FileMessage{
		msg: msg,
	}, nil
}
NewFileMessage creates new message repository access entity
package message
import (
	"gopkg.in/yaml.v2"
	"io/ioutil"
	"math/rand"
	"sync/atomic"
	"time"
)
type ShuffleStringSlice struct {
	s []string
	i uint64
}
func (s *ShuffleStringSlice) UnmarshalYAML(unmarshal func(interface{}) error) error {
	var str []string
	err := unmarshal(&str)
	shuffleStringSlice(str)
	s.s = str
	return err
}
func (s *ShuffleStringSlice) GetNext() string {
	if len(s.s) == 0 {
		return ""
	}
	atomic.AddUint64(&s.i, 1)
	if s.i == uint64(len(s.s)) {
		s.i = 0
		shuffleStringSlice(s.s)
	}
	return s.s[s.i]
}
type StorageModel struct {
	Greeting ShuffleStringSlice `yaml:"greeting"`
	Curse    ShuffleStringSlice `yaml:"curse"`
	Roll     ShuffleStringSlice `yaml:"roll"`
}
type FileMessage struct {
	msg StorageModel
}