core package, embryonic espeak function and tests
This commit is contained in:
@ -1,4 +1,4 @@
|
|||||||
package config
|
package core
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
|||||||
13
core/core_test.go
Normal file
13
core/core_test.go
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
package core
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestCreateAudioSimple(t *testing.T) {
|
||||||
|
var message string = "test 1 2 3"
|
||||||
|
_, err := createAudio(message)
|
||||||
|
if err != nil {
|
||||||
|
t.Fail()
|
||||||
|
}
|
||||||
|
}
|
||||||
51
core/messages.go
Normal file
51
core/messages.go
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
package core
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os/exec"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/bwmarrin/discordgo"
|
||||||
|
)
|
||||||
|
|
||||||
|
func MessagePing(s *discordgo.Session, m *discordgo.MessageCreate) {
|
||||||
|
// Ignore all messages created by the bot itself
|
||||||
|
// This isn't required in this specific example but it's a good practice.
|
||||||
|
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 = "/gogodisco audio"
|
||||||
|
if strings.HasPrefix(m.Content, prefix) {
|
||||||
|
var message string = strings.TrimLeft(m.Content, prefix)
|
||||||
|
createAudio(message)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func createAudio(msg string) ([]byte, error){
|
||||||
|
curr_time := time.Now().Unix()
|
||||||
|
var filename string = fmt.Sprintf("/tmp/%d.mp3", curr_time)
|
||||||
|
fmt.Println(filename)
|
||||||
|
var cmd_args string = fmt.Sprintf("-s 120 -v mb-fr2 -p 30 '%s'", msg)
|
||||||
|
cmd := exec.Command("espeak-ng", cmd_args)
|
||||||
|
out, err := cmd.CombinedOutput()
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(fmt.Sprint(err) + ": " + string(out))
|
||||||
|
}
|
||||||
|
return out, err
|
||||||
|
}
|
||||||
7
main.go
7
main.go
@ -12,8 +12,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
var c config.Config
|
var c core.Config
|
||||||
c.LoadConf()
|
c.LoadConf()
|
||||||
|
|
||||||
discord, err := discordgo.New("Bot " + c.Token)
|
discord, err := discordgo.New("Bot " + c.Token)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -21,6 +21,9 @@ func main() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
discord.AddHandler(core.MessagePing)
|
||||||
|
discord.AddHandler(core.MessageAudio)
|
||||||
|
|
||||||
err = discord.Open()
|
err = discord.Open()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("error opening connection, ", err)
|
fmt.Println("error opening connection, ", err)
|
||||||
|
|||||||
Reference in New Issue
Block a user