From 1a0e4c05faf9d2bc7615de5943fc50ad14791197 Mon Sep 17 00:00:00 2001 From: Bruce Marriner Date: Mon, 8 Feb 2016 10:18:08 -0600 Subject: [PATCH] Call user callback for VOICE_STATE_UPDATE events, closes #101 --- wsapi.go | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/wsapi.go b/wsapi.go index 7efdf7a..99cc067 100644 --- a/wsapi.go +++ b/wsapi.go @@ -323,12 +323,20 @@ func (s *Session) event(messageType int, message []byte) { } return case "VOICE_STATE_UPDATE": - // TEMP CODE FOR TESTING VOICE + if s.Voice == nil && s.OnVoiceStateUpdate == nil { + break + } var st *VoiceState if err = unmarshalEvent(e, &st); err == nil { - s.onVoiceStateUpdate(st) + if s.Voice != nil { + s.onVoiceStateUpdate(st) + } + if s.OnVoiceStateUpdate != nil { + s.OnVoiceStateUpdate(s, st) + return + } + } - return case "USER_UPDATE": if s.OnUserUpdate != nil { var st *User @@ -749,12 +757,6 @@ func (s *Session) ChannelVoiceJoin(gID, cID string, mute, deaf bool) (err error) // for the session user. func (s *Session) onVoiceStateUpdate(st *VoiceState) { - // If s.Voice is nil, we must not have even requested to join - // a voice channel yet, so this shouldn't be processed. - if s.Voice == nil { - return - } - // Need to have this happen at login and store it in the Session // TODO : This should be done upon connecting to Discord, or // be moved to a small helper function