diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,11 @@
 # Changelog for Calamity
 
+## 0.1.23.0
+
++ The `roles` field was incorrectly present on the `PresenceUpdate` type, that
+  field has been removed.
++ The `game` field on `Presence` was changed to `activities :: [Activity]`
+
 ## 0.1.22.1
 
 + Bump some upper bounds
diff --git a/calamity.cabal b/calamity.cabal
--- a/calamity.cabal
+++ b/calamity.cabal
@@ -4,10 +4,10 @@
 --
 -- see: https://github.com/sol/hpack
 --
--- hash: a5846981d4aa83053956a4f860e1145f8c044323b2d869cf4a670bad5106addf
+-- hash: 1670c807d892d798e219ad1be5721bfa7b6c20eaf193322fbec3bd6cb25e7449
 
 name:           calamity
-version:        0.1.22.1
+version:        0.1.23.0
 synopsis:       A library for writing discord bots in haskell
 description:    Please see the README on GitHub at <https://github.com/nitros12/calamity#readme>
 category:       Network, Web
diff --git a/src/Calamity/Client/Client.hs b/src/Calamity/Client/Client.hs
--- a/src/Calamity/Client/Client.hs
+++ b/src/Calamity/Client/Client.hs
@@ -698,9 +698,8 @@
 updateCache (MessageReactionRemoveAll MessageReactionRemoveAllData { messageID }) =
   updateMessage messageID (#reactions .~ mempty)
 
-updateCache (PresenceUpdate PresenceUpdateData { userID, roles, presence }) =
-  updateGuild (getID presence) ((#members . at (coerceSnowflake userID) . _Just . #roles .~ roles)
-                                . (#presences . at userID ?~ presence))
+updateCache (PresenceUpdate PresenceUpdateData { userID, presence }) =
+  updateGuild (getID presence) (#presences . at userID ?~ presence)
 
 updateCache (UserUpdate user) = setBotUser user
 
diff --git a/src/Calamity/Gateway/DispatchEvents.hs b/src/Calamity/Gateway/DispatchEvents.hs
--- a/src/Calamity/Gateway/DispatchEvents.hs
+++ b/src/Calamity/Gateway/DispatchEvents.hs
@@ -111,10 +111,10 @@
   deriving FromJSON via CalamityJSON GuildMemberRemoveData
 
 data GuildMemberUpdateData = GuildMemberUpdateData
-  { guildID :: Snowflake Guild
-  , roles   :: Vector (Snowflake Role)
-  , user    :: User
-  , nick    :: Maybe Text
+  { guildID  :: Snowflake Guild
+  , roles    :: Vector (Snowflake Role)
+  , user     :: User
+  , nick     :: Maybe Text
   }
   deriving ( Show, Generic )
   deriving FromJSON via CalamityJSON GuildMemberUpdateData
@@ -201,7 +201,6 @@
 
 data PresenceUpdateData = PresenceUpdateData
   { userID   :: Snowflake User
-  , roles    :: Vector (Snowflake Role)
   , presence :: Presence
   }
   deriving ( Show, Generic )
@@ -209,9 +208,8 @@
 instance FromJSON PresenceUpdateData where
   parseJSON = withObject "PresenceUpdate" $ \v -> do
     user <- (v .: "user") >>= (.: "id")
-    roles <- v .: "roles"
     presence <- parseJSON $ Object v
-    pure $ PresenceUpdateData user roles presence
+    pure $ PresenceUpdateData user presence
 
 data TypingStartData = TypingStartData
   { channelID :: Snowflake Channel
diff --git a/src/Calamity/Types/Model/Presence/Presence.hs b/src/Calamity/Types/Model/Presence/Presence.hs
--- a/src/Calamity/Types/Model/Presence/Presence.hs
+++ b/src/Calamity/Types/Model/Presence/Presence.hs
@@ -20,9 +20,9 @@
 
 data Presence = Presence
   { user :: Snowflake User,
-    game :: Maybe Activity,
     guildID :: Snowflake Guild,
     status :: StatusType,
+    activities :: [Activity],
     clientStatus :: ClientStatus
   }
   deriving (Eq, Show, Generic)
