markov.go: multiple line responses
continuous-integration/drone/push Build is passing Details

This commit is contained in:
an 2019-08-26 19:43:31 +02:00
parent 7fe45e2bc7
commit c85e1adcc4
1 changed files with 10 additions and 3 deletions

View File

@ -49,8 +49,11 @@ func markovHandleMessage(m *Message) {
responseText := markovChain.Generate(*markovAnswerLen, text) responseText := markovChain.Generate(*markovAnswerLen, text)
if responseText != "" { if responseText != "" {
go func() { go func() {
responses := strings.Split(responseText, "\n")
for _, s := range responses {
time.Sleep(time.Duration(rand.Intn(8)+2) * time.Second) time.Sleep(time.Duration(rand.Intn(8)+2) * time.Second)
SayCh <- m.Channel + "\n" + responseText SayCh <- m.Channel + "\n" + s
}
}() }()
} }
} }
@ -228,7 +231,11 @@ func (c *MarkovChain) Generate(n int, in string) string {
return start + " ... pfrrrz" return start + " ... pfrrrz"
} else { } else {
xlog.Debug("Found words: [%s]", strings.Join(words, " ")) xlog.Debug("Found words: [%s]", strings.Join(words, " "))
return start + " " + strings.Join(words, " ") answer := start + " " + strings.Join(words, " ")
if rand.Intn(100) < 25 {
answer = answer + "\n" + c.Generate(n, answer)
}
return answer
} }
} }