Skip to content

Commit

Permalink
Merge pull request bwmarrin#165 from b1naryth1ef/bugfix/channel-mappings
Browse files Browse the repository at this point in the history
Fix channelMap not being filled for bot users/>100 guilds
  • Loading branch information
bwmarrin committed Apr 13, 2016
2 parents 7444c0a + 2f568c4 commit 6fb0b3e
Showing 1 changed file with 13 additions and 19 deletions.
32 changes: 13 additions & 19 deletions state.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ func (s *State) OnReady(r *Ready) error {

for _, c := range g.Channels {
c.GuildID = g.ID

s.channelMap[c.ID] = c
}
}
Expand All @@ -64,16 +63,17 @@ func (s *State) GuildAdd(guild *Guild) error {
return ErrNilState
}

// Update the channels to point to the right guild
s.Lock()
defer s.Unlock()

// Update the channels to point to the right guild, adding them to the channelMap as we go
for _, c := range guild.Channels {
c.GuildID = guild.ID
s.channelMap[c.ID] = c
}

// If the guild exists, replace it.
if g, err := s.Guild(guild.ID); err == nil {
s.Lock()
defer s.Unlock()

if g, ok := s.guildMap[guild.ID]; ok {
// If this guild already exists with data, don't stomp on props.
if g.Unavailable != nil && !*g.Unavailable {
guild.Members = g.Members
Expand All @@ -86,9 +86,6 @@ func (s *State) GuildAdd(guild *Guild) error {
return nil
}

s.Lock()
defer s.Unlock()

s.Guilds = append(s.Guilds, guild)
s.guildMap[guild.ID] = guild

Expand Down Expand Up @@ -224,27 +221,24 @@ func (s *State) ChannelAdd(channel *Channel) error {
return ErrNilState
}

// If the channel exists, replace it.
if c, err := s.Channel(channel.ID); err == nil {
s.Lock()
defer s.Unlock()
s.Lock()
defer s.Unlock()

// If the channel exists, replace it
if c, ok := s.channelMap[channel.ID]; ok {
channel.Messages = c.Messages
channel.PermissionOverwrites = c.PermissionOverwrites

*c = *channel
return nil
}

s.Lock()
defer s.Unlock()

if channel.IsPrivate {
s.PrivateChannels = append(s.PrivateChannels, channel)
} else {
guild, err := s.Guild(channel.GuildID)
if err != nil {
return err
guild, ok := s.guildMap[channel.GuildID]
if !ok {
return errors.New("Guild for channel not found.")
}

guild.Channels = append(guild.Channels, channel)
Expand Down

0 comments on commit 6fb0b3e

Please sign in to comment.