From 0c7562440e46cd321677a4a88e7675014fd70d4a Mon Sep 17 00:00:00 2001 From: Chris Rhodes Date: Tue, 3 May 2016 20:51:04 -0700 Subject: [PATCH] Merge message contents in state. Fixes #192 --- state.go | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/state.go b/state.go index e3c8908..91c9300 100644 --- a/state.go +++ b/state.go @@ -324,7 +324,7 @@ func (s *State) Channel(channelID string) (*Channel, error) { if s == nil { return nil, ErrNilState } - + s.RLock() defer s.RUnlock() @@ -413,10 +413,25 @@ func (s *State) MessageAdd(message *Message) error { s.Lock() defer s.Unlock() - // If the message exists, replace it. - for i, m := range c.Messages { + // If the message exists, merge in the new message contents. + for _, m := range c.Messages { if m.ID == message.ID { - c.Messages[i] = message + if message.Content != "" { + m.Content = message.Content + } + if message.EditedTimestamp != "" { + m.EditedTimestamp = message.EditedTimestamp + } + if message.Mentions != nil { + m.Mentions = message.Mentions + } + if message.Embeds != nil { + m.Embeds = message.Embeds + } + if message.Attachments != nil { + m.Attachments = message.Attachments + } + return nil } }