diff --git a/events.go b/events.go index 7c2195d..c416813 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 e6f08c7..7babc11 100644 --- a/state.go +++ b/state.go @@ -882,6 +882,13 @@ func (s *State) OnInterface(se *Session, i interface{}) (err error) { } case *MessageUpdate: if s.MaxMessageCount != 0 { + var old *Message + old, err = s.Message(t.ChannelID, t.ID) + if err == nil { + oldCopy := *old + t.BeforeUpdate = &oldCopy + } + err = s.MessageAdd(t.Message) } case *MessageDelete: