Thanks govet.

This commit is contained in:
Chris Rhodes 2016-09-27 22:02:28 -07:00
parent 8164119cac
commit 6c53613186
2 changed files with 21 additions and 21 deletions

View file

@ -594,9 +594,16 @@ func (s *State) Message(channelID, messageID string) (*Message, error) {
// OnReady takes a Ready event and updates all internal state. // OnReady takes a Ready event and updates all internal state.
func (s *State) onReady(se *Session, r *Ready) (err error) { func (s *State) onReady(se *Session, r *Ready) (err error) {
// We must track at least the current user for Voice, if state is if s == nil {
// either nil or disabled, we will set a very simple state item. return ErrNilState
if s == nil || !se.StateEnabled { }
s.Lock()
defer s.Unlock()
// We must track at least the current user for Voice, even
// if state is disabled, store the bare essentials.
if !se.StateEnabled {
ready := Ready{ ready := Ready{
Version: r.Version, Version: r.Version,
SessionID: r.SessionID, SessionID: r.SessionID,
@ -604,29 +611,11 @@ func (s *State) onReady(se *Session, r *Ready) (err error) {
User: r.User, User: r.User,
} }
if s == nil {
*s = State{
TrackChannels: false,
TrackEmojis: false,
TrackMembers: false,
TrackRoles: false,
TrackVoice: false,
guildMap: make(map[string]*Guild),
channelMap: make(map[string]*Channel),
}
}
s.Lock()
defer s.Unlock()
s.Ready = ready s.Ready = ready
return nil return nil
} }
s.Lock()
defer s.Unlock()
s.Ready = *r s.Ready = *r
for _, g := range s.Guilds { for _, g := range s.Guilds {

View file

@ -47,6 +47,17 @@ func (s *Session) Open() (err error) {
} }
}() }()
// A basic state is a hard requirement for Voice.
if s.State == nil {
state := NewState()
state.TrackChannels = false
state.TrackEmojis = false
state.TrackMembers = false
state.TrackRoles = false
state.TrackVoice = false
s.State = state
}
if s.wsConn != nil { if s.wsConn != nil {
err = errors.New("Web socket already opened.") err = errors.New("Web socket already opened.")
return return