From f184824b8c4412b4450df468dd80b6047ab52f5b Mon Sep 17 00:00:00 2001 From: Yannis Matezki Date: Tue, 27 Dec 2022 19:23:54 +0100 Subject: [PATCH] Provide previous Member state for GuildMemberUpdate events (#1304) --- events.go | 1 + state.go | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/events.go b/events.go index 890df22..6608ab6 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 f7bd6b7..38c92d0 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: