diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Changelog for Calamity
 
+## 0.1.23.1
+
++ Fix some more json parsing issues
+
 ## 0.1.23.0
 
 + The `roles` field was incorrectly present on the `PresenceUpdate` type, that
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: 1670c807d892d798e219ad1be5721bfa7b6c20eaf193322fbec3bd6cb25e7449
+-- hash: 0772994714492feed4b5b795eb15b0795c3b76609b3e5675079f5b442d29687f
 
 name:           calamity
-version:        0.1.23.0
+version:        0.1.23.1
 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/Gateway/DispatchEvents.hs b/src/Calamity/Gateway/DispatchEvents.hs
--- a/src/Calamity/Gateway/DispatchEvents.hs
+++ b/src/Calamity/Gateway/DispatchEvents.hs
@@ -152,7 +152,7 @@
 data InviteCreateData = InviteCreateData
   { channelID      :: Snowflake Channel
   , code           :: Text
-  , createdAt      :: UnixTimestamp
+  , createdAt      :: UTCTime
   , guildID        :: Maybe (Snowflake Guild)
   , inviter        :: Maybe (Snowflake User)
   , maxAge         :: Int
diff --git a/src/Calamity/Internal/AesonThings.hs b/src/Calamity/Internal/AesonThings.hs
--- a/src/Calamity/Internal/AesonThings.hs
+++ b/src/Calamity/Internal/AesonThings.hs
@@ -36,6 +36,7 @@
 type ExtractFieldFrom label field = ExtractFieldInto label field label
 data ExtractFields label fields
 data ExtractArrayField label field
+data MapFieldWith field ty
 
 class PerformAction action where
   runAction :: Proxy action -> Object -> Parser Object
@@ -67,6 +68,9 @@
         a'' <- Array <$> traverse (withObject "extracting field" (.: textSymbolVal @field)) a'
         pure $ o & at (textSymbolVal @label) ?~ a''
       Nothing -> pure o
+
+instance (KnownSymbol field, Reifies ty (Value -> Value)) => PerformAction (MapFieldWith field ty) where
+  runAction _ o = pure (o & ix (textSymbolVal @field) %~ reflect @ty Proxy)
 
 newtype WithSpecialCases (rules :: [Type]) a = WithSpecialCases a
 
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
@@ -34,7 +34,7 @@
   deriving
     (FromJSON)
     via WithSpecialCases
-          '["user" `ExtractFieldFrom` "user"]
+          '["user" `ExtractFieldFrom` "id"]
           Presence
   deriving (HasID User) via HasIDField "user" Presence
   deriving (HasID Guild) via HasIDField "guildID" Presence
