1
0
Files
gogodiscordo/core/audio.go
2022-03-28 22:20:52 +02:00

55 lines
1.2 KiB
Go
Executable File

package core
import (
"fmt"
"log"
"os/exec"
"time"
"github.com/bwmarrin/discordgo"
)
// playSound plays the current buffer to the provided channel.
func playSound(s *discordgo.Session, guildID, channelID string, audioBuffer []byte) (err error) {
// Join the provided voice channel.
vc, err := s.ChannelVoiceJoin(guildID, channelID, false, false)
if err != nil {
log.Println("Could not find channel.")
return err
}
// Sleep for a specified amount of time before playing the sound
time.Sleep(250 * time.Millisecond)
// Start speaking.
vc.Speaking(true)
log.Println(len(audioBuffer))
vc.OpusSend <- audioBuffer
// Stop speaking
vc.Speaking(false)
// Sleep for a specificed amount of time before ending.
time.Sleep(5000 * time.Millisecond)
// Disconnect from the provided voice channel.
vc.Disconnect()
return nil
}
func getAudioMessage(msg string) (filename string, out []byte) {
curr_time := time.Now().Unix()
filename = fmt.Sprintf("%d.wav", 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))
}
return
}