diff --git a/Calamity/Client/Client.hs b/Calamity/Client/Client.hs
--- a/Calamity/Client/Client.hs
+++ b/Calamity/Client/Client.hs
@@ -518,19 +518,19 @@
   updateCache evt
   Just guild <- getGuild gid
   Just member <- pure $ guild ^. #members % at (getID member)
-  pure $ map ($ member) (getEventHandlers @'GuildMemberAddEvt eh)
+  pure $ map ($ (guild, member)) (getEventHandlers @'GuildMemberAddEvt eh)
 handleEvent' eh evt@(GuildMemberRemove GuildMemberRemoveData {user, guildID}) = do
   Just guild <- getGuild guildID
   Just member <- pure $ guild ^. #members % at (getID user)
   updateCache evt
-  pure $ map ($ member) (getEventHandlers @'GuildMemberRemoveEvt eh)
+  pure $ map ($ (guild, member)) (getEventHandlers @'GuildMemberRemoveEvt eh)
 handleEvent' eh evt@(GuildMemberUpdate GuildMemberUpdateData {user, guildID}) = do
   Just oldGuild <- getGuild guildID
   Just oldMember <- pure $ oldGuild ^. #members % at (getID user)
   updateCache evt
   Just newGuild <- getGuild guildID
   Just newMember <- pure $ newGuild ^. #members % at (getID user)
-  pure $ map ($ (oldMember, newMember)) (getEventHandlers @'GuildMemberUpdateEvt eh)
+  pure $ map ($ (newGuild, oldMember, newMember)) (getEventHandlers @'GuildMemberUpdateEvt eh)
 handleEvent' eh evt@(GuildMembersChunk GuildMembersChunkData {members, guildID}) = do
   updateCache evt
   Just guild <- getGuild guildID
@@ -641,7 +641,7 @@
         if oldUser /= newUser
           then map ($ (oldUser, newUser)) (getEventHandlers @'UserUpdateEvt eh)
           else mempty
-  pure $ userUpdates <> map ($ (oldMember, newMember)) (getEventHandlers @'GuildMemberUpdateEvt eh)
+  pure $ userUpdates <> map ($ (newGuild, oldMember, newMember)) (getEventHandlers @'GuildMemberUpdateEvt eh)
 handleEvent' eh (TypingStart TypingStartData {channelID, guildID, userID, timestamp = UnixTimestamp timestamp}) =
   case guildID of
     Just gid -> do
diff --git a/Calamity/Client/Types.hs b/Calamity/Client/Types.hs
--- a/Calamity/Client/Types.hs
+++ b/Calamity/Client/Types.hs
@@ -201,9 +201,9 @@
   EHType 'GuildBanRemoveEvt = (Guild, User)
   EHType 'GuildEmojisUpdateEvt = (Guild, [Emoji])
   EHType 'GuildIntegrationsUpdateEvt = Guild
-  EHType 'GuildMemberAddEvt = Member
-  EHType 'GuildMemberRemoveEvt = Member
-  EHType 'GuildMemberUpdateEvt = (Member, Member)
+  EHType 'GuildMemberAddEvt = (Guild, Member)
+  EHType 'GuildMemberRemoveEvt = (Guild, Member)
+  EHType 'GuildMemberUpdateEvt = (Guild, Member, Member)
   EHType 'GuildMembersChunkEvt = (Guild, [Member])
   EHType 'GuildRoleCreateEvt = (Guild, Role)
   EHType 'GuildRoleUpdateEvt = (Guild, Role, Role)
diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,16 @@
 # Changelog for Calamity
 
+## 0.6.0.0
+
++ Updated the events `GuildMemberAddEvt`, `GuildMemberRemoveEvt`, and
+  `GuildMemberUpdateEvt` to include the relevant `Guild`.
+  
+```hs
+EHType 'GuildMemberAddEvt = (Guild, Member)
+EHType 'GuildMemberRemoveEvt = (Guild, Member)
+EHType 'GuildMemberUpdateEvt = (Guild, Member, Member)
+```
+
 ## 0.5.0.0
 
 + Replaced lens with optics internally, you should use optics for field labels now.
diff --git a/calamity.cabal b/calamity.cabal
--- a/calamity.cabal
+++ b/calamity.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           calamity
-version:        0.5.0.0
+version:        0.6.0.0
 synopsis:       A library for writing discord bots in haskell
 description:    Please see the README on GitHub at <https://github.com/simmsb/calamity#readme>
 category:       Network, Web
