diff --git a/events.go b/events.go index 890df22fd..6608ab6ee 100644 --- a/events.go +++ b/events.go @@ -150,6 +150,7 @@ type GuildMemberAdd struct { // GuildMemberUpdate is the data for a GuildMemberUpdate event. type GuildMemberUpdate struct { *Member + BeforeUpdate *Member `json:"-"` } // GuildMemberRemove is the data for a GuildMemberRemove event. diff --git a/state.go b/state.go index f7bd6b7a6..38c92d047 100644 --- a/state.go +++ b/state.go @@ -983,6 +983,13 @@ func (s *State) OnInterface(se *Session, i interface{}) (err error) { } case *GuildMemberUpdate: if s.TrackMembers { + var old *Member + old, err = s.Member(t.GuildID, t.User.ID) + if err == nil { + oldCopy := *old + t.BeforeUpdate = &oldCopy + } + err = s.MemberAdd(t.Member) } case *GuildMemberRemove: