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  }