diff --git a/config.example.yaml b/config.example.yaml index e69de29..6ee4f13 100644 --- a/config.example.yaml +++ b/config.example.yaml @@ -0,0 +1,2 @@ +token: "some_really_long_string" +name: "gogodiscordo" diff --git a/core/core_test.go b/core/core_test.go index 461c58f..3ced1c7 100644 --- a/core/core_test.go +++ b/core/core_test.go @@ -6,8 +6,8 @@ import ( func TestCreateAudioSimple(t *testing.T) { var message string = "test 1 2 3" - _, err, _ := createAudio(message) - if err != nil { + filename, file := createAudio(message) + if file == nil || len(filename) <= 0 { t.Fail() } } @@ -29,7 +29,7 @@ func TestPrepareTTSMessageBigText(t *testing.T) { } func TestPrepareTTSEmoji(t *testing.T) { - var message string = "This is awesome!!! :thumbsup: :nerd_face:" + var message string = "This is awesome!!! :thumbsup: :nerd_face: :cop:" cleanMessage := prepareTTSMessage(message) if cleanMessage != "This is awesome!!!" { t.Fail() diff --git a/core/messages.go b/core/messages.go index 870791e..8ab1dae 100644 --- a/core/messages.go +++ b/core/messages.go @@ -1,8 +1,8 @@ package core import ( + "bytes" "fmt" - "os" "os/exec" "regexp" "strings" @@ -36,6 +36,7 @@ func maxString(s string, max int) string { return s } +// this only strip custom emoji, not default unicode ones func stripEmoji(msg string) string { re := regexp.MustCompile(`:\w+:`) match := re.FindAll([]byte(msg), -1) @@ -57,18 +58,18 @@ func prepareTTSMessage(msg string) string { return strings.Trim(t3, " ") } -func createAudio(msg string) ([]byte, error, string) { +func createAudio(msg string) (filename string, file *bytes.Reader) { curr_time := time.Now().Unix() - var filename string = fmt.Sprintf("/tmp/%d.mp3", curr_time) - var cmd_args string = fmt.Sprintf("espeak-ng -s 120 -v mb-fr2 -p 30 '%s' -w %s", - maxString(msg, 300), - filename) + 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) + ": " + string(out)) + fmt.Println(fmt.Sprint(err)) } - return out, err, filename + file = bytes.NewReader(out) + return } func MessagePing(s *discordgo.Session, m *discordgo.MessageCreate) { @@ -95,8 +96,7 @@ func MessageAudio(s *discordgo.Session, m *discordgo.MessageCreate) { if strings.HasPrefix(m.Content, prefix) { var message string = strings.TrimPrefix(m.Content, prefix) var cleanMessage string = prepareTTSMessage(message) - _, _, filename := createAudio(cleanMessage) - file, _ := os.Open(filename) + filename, file := createAudio(cleanMessage) s.ChannelFileSend(m.ChannelID, filename, file) } }