diff --git a/changelog.md b/changelog.md
--- a/changelog.md
+++ b/changelog.md
@@ -6,7 +6,15 @@
 
 ## master
 
-[L0neGamer](https://github.com/aquarial/discord-haskell/pull/107) `EditMessage` takes full `MessageDetailedOpts`
+## 1.12.3
+
+Add another CreateMessage flag option, stop crashing on unknown flags.
+
+## 1.12.2
+
+[L0neGamer](https://github.com/aquarial/discord-haskell/pull/107) `EditMessage` takes full `MessageDetailedOpts` (instead of Embed)
+
+Removed `CreateMessageUploadFile` (use `CreateMessageDetailed { MessageDetailedOpts { messageDetailedFile } }`)
 
 ## 1.12.1
 
diff --git a/discord-haskell.cabal b/discord-haskell.cabal
--- a/discord-haskell.cabal
+++ b/discord-haskell.cabal
@@ -1,7 +1,7 @@
 cabal-version:       2.0
 name:                discord-haskell
 -- library version is also noted at src/Discord/Rest/Prelude.hs
-version:             1.12.2
+version:             1.12.3
 description:         Functions and data types to write discord bots.
                      Official discord docs <https://discord.com/developers/docs/reference>.
                      .
diff --git a/src/Discord/Internal/Rest/Prelude.hs b/src/Discord/Internal/Rest/Prelude.hs
--- a/src/Discord/Internal/Rest/Prelude.hs
+++ b/src/Discord/Internal/Rest/Prelude.hs
@@ -34,7 +34,7 @@
   where
   -- | https://discord.com/developers/docs/reference#user-agent
   -- Second place where the library version is noted
-  agent = "DiscordBot (https://github.com/aquarial/discord-haskell, 1.12.2)"
+  agent = "DiscordBot (https://github.com/aquarial/discord-haskell, 1.12.3)"
 
 -- Append to an URL
 infixl 5 //
diff --git a/src/Discord/Internal/Types/Channel.hs b/src/Discord/Internal/Types/Channel.hs
--- a/src/Discord/Internal/Types/Channel.hs
+++ b/src/Discord/Internal/Types/Channel.hs
@@ -811,6 +811,7 @@
   | MessageFlagHasThread
   | MessageFlagEphemeral
   | MessageFlagLoading
+  | MessageFlagFailedToMentionRollesInThread
   deriving (Show, Read, Eq, Data, Ord)
 
 newtype MessageFlags = MessageFlags [MessageFlag]
@@ -826,6 +827,7 @@
   fromDiscordType MessageFlagHasThread = 1 `shift` 5
   fromDiscordType MessageFlagEphemeral = 1 `shift` 6
   fromDiscordType MessageFlagLoading = 1 `shift` 7
+  fromDiscordType MessageFlagFailedToMentionRollesInThread = 1 `shift` 8
 
 instance ToJSON MessageFlags where
   toJSON (MessageFlags fs) = Number $ fromInteger $ fromIntegral $ foldr (.|.) 0 (fromDiscordType <$> fs)
@@ -835,10 +837,10 @@
 instance FromJSON MessageFlags where
   parseJSON = withScientific "MessageFlags" $ \s ->
       let i = round s
-          range = sum $ fst <$> (discordTypeTable @MessageFlag)
-      in if i /= (i .&. range)
-         then fail "could not get message flags"
-         else return $ MessageFlags (snd <$> filter (\(i',_) -> i .&. i' == i') discordTypeTable)
+          -- TODO check to see that we know about all the flags
+          -- if i /= (i .&. range)
+          -- range = sum $ fst <$> (discordTypeTable @MessageFlag)
+      in return $ MessageFlags (snd <$> filter (\(i',_) -> i .&. i' == i') discordTypeTable)
 
 -- | This is sent on the message object when the message is a response to an Interaction without an existing message (i.e., any non-component interaction).
 data MessageInteraction = MessageInteraction
