"talkback" function (random answers based on a set of patterns)
This commit is contained in:
@ -4,6 +4,8 @@ import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"os/exec"
|
||||
"math/rand"
|
||||
"sort"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@ -26,9 +28,9 @@ func createAudio(msg string) (filename string, file *bytes.Reader) {
|
||||
|
||||
func createHelpMessage() string {
|
||||
// build list of possible commands
|
||||
// TODO: currently, the help needs to get value initiated at startup time to be built.
|
||||
// I don't like that and wish to test what is rendered without connecting to the server
|
||||
var help []string
|
||||
help = append(help,
|
||||
fmt.Sprintf("Hello, I'm **%s**. Here are the things I can do :\n", ConfigRegister.Name))
|
||||
for _, command := range CommandRegister {
|
||||
help = append(help,
|
||||
fmt.Sprintf(
|
||||
@ -37,7 +39,11 @@ func createHelpMessage() string {
|
||||
command.desc,
|
||||
command.example))
|
||||
}
|
||||
return strings.Join(help, "")
|
||||
sort.Strings(help)
|
||||
welcome := fmt.Sprintf(
|
||||
"Hello, I'm **%s**. Here are the things I can do :\n",
|
||||
ConfigRegister.Name)
|
||||
return welcome + strings.Join(help, "")
|
||||
}
|
||||
|
||||
func MessageHandler(s *discordgo.Session, m *discordgo.MessageCreate) {
|
||||
@ -47,12 +53,28 @@ func MessageHandler(s *discordgo.Session, m *discordgo.MessageCreate) {
|
||||
return
|
||||
}
|
||||
var message string = strings.TrimPrefix(m.Content, alias)
|
||||
fmt.Println(message)
|
||||
CommandRegister[alias].command(s, m, message)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func MessageTalkback(s *discordgo.Session, m *discordgo.MessageCreate) {
|
||||
if m.Author.ID == s.State.User.ID {
|
||||
return
|
||||
}
|
||||
for _, t := range ConfigRegister.Talkback {
|
||||
for _, p := range t.Domain.Patterns {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
if strings.Contains(strings.ToLower(m.Content), strings.ToLower(p)) &&
|
||||
rand.Intn(2) == 1 {
|
||||
rand.Seed(time.Now().UnixNano())
|
||||
answer := t.Domain.Answers[rand.Intn(len(t.Domain.Answers))]
|
||||
s.ChannelMessageSend(m.ChannelID, answer)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func MessageHelp(s *discordgo.Session, m *discordgo.MessageCreate, message string) {
|
||||
s.ChannelMessageSend(m.ChannelID, createHelpMessage())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user