audio sent in a Reader rather than a file (no write on disk)
This commit is contained in:
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user