From 84aeb76f7684c6636a641cfe8afd94f0345ef5e7 Mon Sep 17 00:00:00 2001 From: Chris Felegy Date: Mon, 5 Nov 2018 17:24:52 -0500 Subject: [PATCH] meta: add travis ci --- .travis.yml | 7 + example/main.go | 344 ++++++++++++++++++++++++------------------------ 2 files changed, 178 insertions(+), 173 deletions(-) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..8aa8385 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,7 @@ +language: go +go: + - "1.10" +install: go get -t ./... +script: + - go test + - go build ./example/... diff --git a/example/main.go b/example/main.go index 0548557..3cb35df 100644 --- a/example/main.go +++ b/example/main.go @@ -1,173 +1,171 @@ -package main - -import ( - "flag" - "log" - "os" - "os/signal" - "strconv" - "strings" - "syscall" - - "github.com/foxbot/gavalink" - - // this requires the "feature/manual-voice-connection branch!!" - "github.com/foxbot/discordgo" -) - -var token string -var lavalink *gavalink.Lavalink -var player *gavalink.Player - -func init() { - flag.StringVar(&token, "token", "", "token=unprefixed token") -} - -func main() { - flag.Parse() - - if token == "" { - panic("no token specified!") - } - token = "Bot " + token - - dg, err := discordgo.New(token) - if err != nil { - panic(err) - } - dg.SyncEvents = false - - dg.AddHandler(ready) - dg.AddHandler(messageCreate) - dg.AddHandler(voiceServerUpdate) - - err = dg.Open() - if err != nil { - panic(err) - } - - sc := make(chan os.Signal, 1) - signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill) - <-sc - - dg.Close() -} - -func ready(s *discordgo.Session, event *discordgo.Ready) { - log.Println("discordgo ready!") - s.UpdateStatus(0, "gavalink") - - lavalink = gavalink.NewLavalink("1", event.User.ID) - - err := lavalink.AddNodes(gavalink.NodeConfig{ - REST: "http://localhost:2333", - WebSocket: "ws://localhost:2334", - Password: "youshallnotpass", - }) - if err != nil { - log.Println(err) - } -} - -func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) { - if m.Author.ID == s.State.User.ID { - return - } - - if m.Content == "~>>join" { - c, err := s.State.Channel(m.ChannelID) - if err != nil { - log.Println("fail find channel") - return - } - - g, err := s.State.Guild(c.GuildID) - if err != nil { - log.Println("fail find guild") - return - } - - for _, vs := range g.VoiceStates { - if vs.UserID == m.Author.ID { - log.Println("trying to connect to channel") - err = s.ChannelVoiceJoinManual(c.GuildID, vs.ChannelID, false, false) - if err != nil { - log.Println(err) - } else { - log.Println("channel voice join succeeded") - } - } - } - } else if strings.HasPrefix(m.Content, "~>>play") { - query := m.Content[8:] - node, err := lavalink.BestNode() - if err != nil { - log.Println(err) - return - } - tracks, err := node.LoadTracks(query) - if err != nil { - log.Println(err) - return - } - if tracks.Type != gavalink.TrackLoaded { - log.Println("weird tracks type", tracks.Type) - } - track := tracks.Tracks[0].Data - err = player.Play(track) - if err != nil { - log.Println(err) - } - } else if m.Content == "~>>stop" { - err := player.Stop() - if err != nil { - log.Println(err) - } - } else if m.Content == "~>>pause" { - err := player.Pause(!player.Paused()) - if err != nil { - log.Println(err) - } - } else if strings.HasPrefix(m.Content, "~>>volume") { - query := m.Content[10:] - vol, err := strconv.Atoi(query) - if err != nil { - log.Println(err) - return - } - err = player.Volume(vol) - if err != nil { - log.Println(err) - } - } -} - -func voiceServerUpdate(s *discordgo.Session, event *discordgo.VoiceServerUpdate) { - log.Println("received VSU") - vsu := gavalink.VoiceServerUpdate{ - Endpoint: event.Endpoint, - GuildID: event.GuildID, - Token: event.Token, - } - - if p, err := lavalink.GetPlayer(event.GuildID); err == nil { - err = p.Forward(s.State.SessionID, vsu) - if err != nil { - log.Println(err) - } - return - } - - node, err := lavalink.BestNode() - if err != nil { - log.Println(err) - return - } - - handler := new(gavalink.DummyEventHandler) - player, err = node.CreatePlayer(event.GuildID, s.State.SessionID, vsu, handler) - if err != nil { - log.Println(err) - return - } -} +package main + +import ( + "flag" + "log" + "os" + "os/signal" + "strconv" + "strings" + "syscall" + + "github.com/bwmarrin/discordgo" + "github.com/foxbot/gavalink" +) + +var token string +var lavalink *gavalink.Lavalink +var player *gavalink.Player + +func init() { + flag.StringVar(&token, "token", "", "token=unprefixed token") +} + +func main() { + flag.Parse() + + if token == "" { + panic("no token specified!") + } + token = "Bot " + token + + dg, err := discordgo.New(token) + if err != nil { + panic(err) + } + dg.SyncEvents = false + + dg.AddHandler(ready) + dg.AddHandler(messageCreate) + dg.AddHandler(voiceServerUpdate) + + err = dg.Open() + if err != nil { + panic(err) + } + + sc := make(chan os.Signal, 1) + signal.Notify(sc, syscall.SIGINT, syscall.SIGTERM, os.Interrupt, os.Kill) + <-sc + + dg.Close() +} + +func ready(s *discordgo.Session, event *discordgo.Ready) { + log.Println("discordgo ready!") + s.UpdateStatus(0, "gavalink") + + lavalink = gavalink.NewLavalink("1", event.User.ID) + + err := lavalink.AddNodes(gavalink.NodeConfig{ + REST: "http://localhost:2333", + WebSocket: "ws://localhost:2334", + Password: "youshallnotpass", + }) + if err != nil { + log.Println(err) + } +} + +func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) { + if m.Author.ID == s.State.User.ID { + return + } + + if m.Content == "~>>join" { + c, err := s.State.Channel(m.ChannelID) + if err != nil { + log.Println("fail find channel") + return + } + + g, err := s.State.Guild(c.GuildID) + if err != nil { + log.Println("fail find guild") + return + } + + for _, vs := range g.VoiceStates { + if vs.UserID == m.Author.ID { + log.Println("trying to connect to channel") + err = s.ChannelVoiceJoinManual(c.GuildID, vs.ChannelID, false, false) + if err != nil { + log.Println(err) + } else { + log.Println("channel voice join succeeded") + } + } + } + } else if strings.HasPrefix(m.Content, "~>>play") { + query := m.Content[8:] + node, err := lavalink.BestNode() + if err != nil { + log.Println(err) + return + } + tracks, err := node.LoadTracks(query) + if err != nil { + log.Println(err) + return + } + if tracks.Type != gavalink.TrackLoaded { + log.Println("weird tracks type", tracks.Type) + } + track := tracks.Tracks[0].Data + err = player.Play(track) + if err != nil { + log.Println(err) + } + } else if m.Content == "~>>stop" { + err := player.Stop() + if err != nil { + log.Println(err) + } + } else if m.Content == "~>>pause" { + err := player.Pause(!player.Paused()) + if err != nil { + log.Println(err) + } + } else if strings.HasPrefix(m.Content, "~>>volume") { + query := m.Content[10:] + vol, err := strconv.Atoi(query) + if err != nil { + log.Println(err) + return + } + err = player.Volume(vol) + if err != nil { + log.Println(err) + } + } +} + +func voiceServerUpdate(s *discordgo.Session, event *discordgo.VoiceServerUpdate) { + log.Println("received VSU") + vsu := gavalink.VoiceServerUpdate{ + Endpoint: event.Endpoint, + GuildID: event.GuildID, + Token: event.Token, + } + + if p, err := lavalink.GetPlayer(event.GuildID); err == nil { + err = p.Forward(s.State.SessionID, vsu) + if err != nil { + log.Println(err) + } + return + } + + node, err := lavalink.BestNode() + if err != nil { + log.Println(err) + return + } + + handler := new(gavalink.DummyEventHandler) + player, err = node.CreatePlayer(event.GuildID, s.State.SessionID, vsu, handler) + if err != nil { + log.Println(err) + return + } +}