package core import ( "bytes" "fmt" "os/exec" "strings" "time" "github.com/bwmarrin/discordgo" ) func createAudio(msg string) (filename string, file *bytes.Reader) { curr_time := time.Now().Unix() filename = fmt.Sprintf("/tmp/%d.mp3", curr_time) var cmd_args string = fmt.Sprintf("espeak-ng -s 120 -v mb-fr2 -p 30 '%s' --stdout", maxString(msg, 300)) cmd := exec.Command("sh", "-c", cmd_args) out, err := cmd.CombinedOutput() if err != nil { fmt.Println(fmt.Sprint(err)) } file = bytes.NewReader(out) return } func createHelpMessage() string { // build list of possible commands 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( "%s : %s (Example : %s)\n", command.name, command.desc, command.example)) } return strings.Join(help, "") } func MessageHandler(s *discordgo.Session, m *discordgo.MessageCreate) { for alias, _ := range CommandRegister { if strings.HasPrefix(m.Content, alias) { if m.Author.ID == s.State.User.ID { return } var message string = strings.TrimPrefix(m.Content, alias) fmt.Println(message) CommandRegister[alias].command(s, m, message) } } } func MessageHelp(s *discordgo.Session, m *discordgo.MessageCreate, message string) { s.ChannelMessageSend(m.ChannelID, createHelpMessage()) } func MessagePing(s *discordgo.Session, m *discordgo.MessageCreate, message string) { if m.Content == "ping" { s.ChannelMessageSend(m.ChannelID, "Pong!") } if m.Content == "pong" { s.ChannelMessageSend(m.ChannelID, "Ping!") } } func MessageAudio(s *discordgo.Session, m *discordgo.MessageCreate, message string) { var cleanMessage string = prepareTTSMessage(message) filename, file := createAudio(cleanMessage) s.ChannelFileSend(m.ChannelID, filename, file) }