calamity-0.3.0.0: Calamity/Types/Model/Guild/Member.hs
-- | Guild Members
module Calamity.Types.Model.Guild.Member (Member (..)) where
import Calamity.Internal.AesonThings
import Calamity.Internal.OverriddenVia
import Calamity.Internal.Utils
import Calamity.Types.Model.Guild.Role
import Calamity.Types.Model.User
import Calamity.Types.Snowflake
import Control.DeepSeq (NFData)
import Data.Aeson
import Data.Text (Text)
import Data.Time
import Data.Vector.Unboxing (Vector)
import Data.Word (Word64)
import GHC.Generics
import TextShow
import qualified TextShow.Generic as TSG
data Member' = Member'
{ id :: Snowflake User
, username :: Text
, discriminator :: Text
, bot :: Maybe Bool
, avatar :: Maybe Text
, mfaEnabled :: Maybe Bool
, verified :: Maybe Bool
, email :: Maybe Text
, flags :: Maybe Word64
, premiumType :: Maybe Word64
, nick :: Maybe Text
, roles :: AesonVector (Snowflake Role)
, joinedAt :: CalamityFromStringShow UTCTime
, deaf :: Bool
, mute :: Bool
}
deriving (Generic)
deriving (TextShow) via TSG.FromGeneric Member'
deriving
(FromJSON)
via WithSpecialCases
'[ "user"
`ExtractFields` [ "id"
, "username"
, "discriminator"
, "bot"
, "avatar"
, "mfa_enabled"
, "verified"
, "email"
, "flags"
, "premium_type"
]
]
Member'
data Member = Member
{ id :: Snowflake User
, username :: Text
, discriminator :: Text
, bot :: Maybe Bool
, avatar :: Maybe Text
, mfaEnabled :: Maybe Bool
, verified :: Maybe Bool
, email :: Maybe Text
, flags :: Maybe Word64
, premiumType :: Maybe Word64
, nick :: Maybe Text
, roles :: Vector (Snowflake Role)
, joinedAt :: UTCTime
, deaf :: Bool
, mute :: Bool
}
deriving (Eq, Show, Generic, NFData)
deriving (TextShow, FromJSON) via OverriddenVia Member Member'
deriving (HasID Member) via HasIDFieldCoerce "id" Member User
deriving (HasID User) via HasIDField "id" Member