github.com/diamondburned/arikawa/v2@v2.1.0/voice/session_example_test.go (about) 1 package voice_test 2 3 import ( 4 "io" 5 "log" 6 "testing" 7 8 "github.com/diamondburned/arikawa/v2/discord" 9 "github.com/diamondburned/arikawa/v2/internal/testenv" 10 "github.com/diamondburned/arikawa/v2/state" 11 "github.com/diamondburned/arikawa/v2/voice" 12 ) 13 14 var ( 15 token string 16 channelID discord.ChannelID 17 ) 18 19 func init() { 20 e, err := testenv.GetEnv() 21 if err == nil { 22 token = e.BotToken 23 channelID = e.VoiceChID 24 } 25 } 26 27 // pseudo function for example 28 func writeOpusInto(w io.Writer) {} 29 30 // make godoc not show the full file 31 func TestNoop(t *testing.T) { 32 t.Skip("noop") 33 } 34 35 func ExampleSession() { 36 s, err := state.New("Bot " + token) 37 if err != nil { 38 log.Fatalln("failed to make state:", err) 39 } 40 41 // This is required for bots. 42 voice.AddIntents(s.Gateway) 43 44 if err := s.Open(); err != nil { 45 log.Fatalln("failed to open gateway:", err) 46 } 47 defer s.Close() 48 49 c, err := s.Channel(channelID) 50 if err != nil { 51 log.Fatalln("failed to get channel:", err) 52 } 53 54 v, err := voice.NewSession(s) 55 if err != nil { 56 log.Fatalln("failed to create voice session:", err) 57 } 58 59 if err := v.JoinChannel(c.GuildID, c.ID, false, false); err != nil { 60 log.Fatalln("failed to join voice channel:", err) 61 } 62 defer v.Leave() 63 64 // Start writing Opus frames. 65 for { 66 writeOpusInto(v) 67 } 68 }