From 4cc57c507061d5f563c2a3571b9c3a5248a9a017 Mon Sep 17 00:00:00 2001 From: Rens Rikkerink Date: Wed, 9 May 2018 14:18:30 +0200 Subject: [PATCH 1/2] Added copy of previous Message state to MessageUpdate --- events.go | 2 ++ state.go | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/events.go b/events.go index e784cac..8c560db 100644 --- a/events.go +++ b/events.go @@ -162,6 +162,8 @@ type MessageCreate struct { // MessageUpdate is the data for a MessageUpdate event. type MessageUpdate struct { *Message + // BeforeUpdate will be nil if the Message was not previously cached in the state cache. + BeforeUpdate *Message `json:"-"` } // MessageDelete is the data for a MessageDelete event. diff --git a/state.go b/state.go index 695f47c..df1b47a 100644 --- a/state.go +++ b/state.go @@ -863,6 +863,12 @@ func (s *State) OnInterface(se *Session, i interface{}) (err error) { } case *MessageUpdate: if s.MaxMessageCount != 0 { + old, err := s.Message(t.ChannelID, t.ID) + if err == nil { + oldCopy := *old + t.BeforeUpdate = &oldCopy + } + err = s.MessageAdd(t.Message) } case *MessageDelete: From ee1699649048e67171ccb0a6ffd9b6be91541eaa Mon Sep 17 00:00:00 2001 From: Rens Rikkerink Date: Wed, 9 May 2018 14:35:06 +0200 Subject: [PATCH 2/2] Fixed err shadowing --- state.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/state.go b/state.go index df1b47a..77fb2c4 100644 --- a/state.go +++ b/state.go @@ -863,7 +863,8 @@ func (s *State) OnInterface(se *Session, i interface{}) (err error) { } case *MessageUpdate: if s.MaxMessageCount != 0 { - old, err := s.Message(t.ChannelID, t.ID) + var old *Message + old, err = s.Message(t.ChannelID, t.ID) if err == nil { oldCopy := *old t.BeforeUpdate = &oldCopy