Explorar o código

Allow calling ChannelVoiceJoin even after connected to voice, closes

Bruce Marriner %!s(int64=9) %!d(string=hai) anos
pai
achega
60149f70bb
Modificáronse 1 ficheiros con 4 adicións e 6 borrados
  1. 4 6
      wsapi.go

+ 4 - 6
wsapi.go

@@ -378,18 +378,12 @@ type voiceChannelJoinOp struct {
 //    deaf  : If true, you will be set to deafened upon joining.
 func (s *Session) ChannelVoiceJoin(gID, cID string, mute, deaf bool) (err error) {
 
-	if s.wsConn == nil {
-		return fmt.Errorf("no websocket connection exists")
-	}
-
 	// Create new voice{} struct if one does not exist.
 	// If you create this prior to calling this func then you can manually
 	// set some variables if needed, such as to enable debugging.
 	if s.Voice == nil {
 		s.Voice = &Voice{}
 	}
-	// TODO : Determine how to properly change channels and change guild
-	// and channel when you are already connected to an existing channel.
 
 	// Send the request to Discord that we want to join the voice channel
 	data := voiceChannelJoinOp{4, voiceChannelJoinData{gID, cID, mute, deaf}}
@@ -434,6 +428,10 @@ func (s *Session) onVoiceStateUpdate(se *Session, st *VoiceStateUpdate) {
 // onVoiceServerUpdate handles the Voice Server Update data websocket event.
 // This event tells us the information needed to open a voice websocket
 // connection and should happen after the VOICE_STATE event.
+//
+// This is also fired if the Guild's voice region changes while connected
+// to a voice channel.  In that case, need to re-establish connection to
+// the new region endpoint.
 func (s *Session) onVoiceServerUpdate(se *Session, st *VoiceServerUpdate) {
 
 	// Store values for later use