-- | Updated messages module Calamity.Types.Model.Channel.UpdatedMessage ( UpdatedMessage(..) ) where import Calamity.Internal.AesonThings import Calamity.Internal.Utils () import Calamity.Types.Model.Channel import Calamity.Types.Model.Guild.Role import Calamity.Types.Model.User import Calamity.Types.Snowflake import Data.Aeson import Data.Text.Lazy ( Text ) import Data.Time import qualified Data.Vector.Unboxed as UV import GHC.Generics import TextShow import qualified TextShow.Generic as TSG data UpdatedMessage = UpdatedMessage { id :: Snowflake Message , channelID :: Snowflake Channel , content :: Maybe Text , editedTimestamp :: Maybe UTCTime , tts :: Maybe Bool , mentionEveryone :: Maybe Bool , mentions :: Maybe (UV.Vector (Snowflake User)) , mentionRoles :: Maybe (UV.Vector (Snowflake Role)) , mentionChannels :: Maybe (UV.Vector (Snowflake Channel)) , attachments :: Maybe [Attachment] , embeds :: Maybe [Embed] , reactions :: Maybe [Reaction] , pinned :: Maybe Bool } deriving ( Eq, Show, Generic ) deriving ( TextShow ) via TSG.FromGeneric UpdatedMessage deriving ( FromJSON ) via WithSpecialCases '["author" `ExtractFieldFrom` "id", "mentions" `ExtractArrayField` "id", "mention_channels" `ExtractArrayField` "id"] UpdatedMessage deriving ( HasID Message ) via HasIDField "id" UpdatedMessage deriving ( HasID Channel ) via HasIDField "channelID" UpdatedMessage