61 lines
1.5 KiB
Go
61 lines
1.5 KiB
Go
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 MessageHandler(s *discordgo.Session, m *discordgo.MessageCreate) {
|
|
for alias, command := 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)
|
|
command(s, m, message)
|
|
}
|
|
}
|
|
}
|
|
|
|
func MessageHelp(s *discordgo.Session, m *discordgo.MessageCreate, message string) {
|
|
// build list of possible commands
|
|
fmt.Println(message)
|
|
return
|
|
}
|
|
|
|
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)
|
|
}
|