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 MessageHelp(s *discordgo.Session, m *discordgo.MessageCreate) { if m.Author.ID == s.State.User.ID { return } if m.Content == "/ggd help" { // build list of possible commands return } } func MessagePing(s *discordgo.Session, m *discordgo.MessageCreate) { if m.Author.ID == s.State.User.ID { return } 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) { if m.Author.ID == s.State.User.ID { return } var prefix string = "/ggd tts" if strings.HasPrefix(m.Content, prefix) { var message string = strings.TrimPrefix(m.Content, prefix) var cleanMessage string = prepareTTSMessage(message) filename, file := createAudio(cleanMessage) s.ChannelFileSend(m.ChannelID, filename, file) } }