{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
module Discord.Internal.Types.User where
import Data.Aeson
import Data.Text (Text)
import qualified Data.Text as T
import Discord.Internal.Types.Prelude
import Data.Time (UTCTime)
data User = User
{ User -> UserId
userId :: UserId
, User -> Text
userName :: T.Text
, User -> Maybe Text
userDiscrim :: Maybe T.Text
, User -> Maybe Text
userGlobalName :: Maybe T.Text
, User -> Maybe Text
userAvatar :: Maybe T.Text
, User -> Bool
userIsBot :: Bool
, User -> Bool
userIsWebhook :: Bool
, User -> Maybe Bool
userIsSystem :: Maybe Bool
, User -> Maybe Bool
userMfa :: Maybe Bool
, User -> Maybe Text
userBanner :: Maybe T.Text
, User -> Maybe Int
userAccentColor :: Maybe Int
, User -> Maybe Text
userLocale :: Maybe T.Text
, User -> Maybe Bool
userVerified :: Maybe Bool
, User -> Maybe Text
userEmail :: Maybe T.Text
, User -> Maybe Integer
userFlags :: Maybe Integer
, User -> Maybe Integer
userPremiumType :: Maybe Integer
, User -> Maybe Integer
userPublicFlags :: Maybe Integer
, User -> Maybe GuildMember
userMember :: Maybe GuildMember
} deriving (Int -> User -> ShowS
[User] -> ShowS
User -> String
(Int -> User -> ShowS)
-> (User -> String) -> ([User] -> ShowS) -> Show User
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> User -> ShowS
showsPrec :: Int -> User -> ShowS
$cshow :: User -> String
show :: User -> String
$cshowList :: [User] -> ShowS
showList :: [User] -> ShowS
Show, ReadPrec [User]
ReadPrec User
Int -> ReadS User
ReadS [User]
(Int -> ReadS User)
-> ReadS [User] -> ReadPrec User -> ReadPrec [User] -> Read User
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS User
readsPrec :: Int -> ReadS User
$creadList :: ReadS [User]
readList :: ReadS [User]
$creadPrec :: ReadPrec User
readPrec :: ReadPrec User
$creadListPrec :: ReadPrec [User]
readListPrec :: ReadPrec [User]
Read, User -> User -> Bool
(User -> User -> Bool) -> (User -> User -> Bool) -> Eq User
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: User -> User -> Bool
== :: User -> User -> Bool
$c/= :: User -> User -> Bool
/= :: User -> User -> Bool
Eq, Eq User
Eq User =>
(User -> User -> Ordering)
-> (User -> User -> Bool)
-> (User -> User -> Bool)
-> (User -> User -> Bool)
-> (User -> User -> Bool)
-> (User -> User -> User)
-> (User -> User -> User)
-> Ord User
User -> User -> Bool
User -> User -> Ordering
User -> User -> User
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: User -> User -> Ordering
compare :: User -> User -> Ordering
$c< :: User -> User -> Bool
< :: User -> User -> Bool
$c<= :: User -> User -> Bool
<= :: User -> User -> Bool
$c> :: User -> User -> Bool
> :: User -> User -> Bool
$c>= :: User -> User -> Bool
>= :: User -> User -> Bool
$cmax :: User -> User -> User
max :: User -> User -> User
$cmin :: User -> User -> User
min :: User -> User -> User
Ord)
instance FromJSON User where
parseJSON :: Value -> Parser User
parseJSON = String -> (Object -> Parser User) -> Value -> Parser User
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"User" ((Object -> Parser User) -> Value -> Parser User)
-> (Object -> Parser User) -> Value -> Parser User
forall a b. (a -> b) -> a -> b
$ \Object
o ->
UserId
-> Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Bool
-> Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User
User (UserId
-> Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Bool
-> Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
-> Parser UserId
-> Parser
(Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Bool
-> Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser UserId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser
(Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Bool
-> Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
-> Parser Text
-> Parser
(Maybe Text
-> Maybe Text
-> Maybe Text
-> Bool
-> Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"username"
Parser
(Maybe Text
-> Maybe Text
-> Maybe Text
-> Bool
-> Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
-> Parser (Maybe Text)
-> Parser
(Maybe Text
-> Maybe Text
-> Bool
-> Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"discriminator"
Parser
(Maybe Text
-> Maybe Text
-> Bool
-> Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
-> Parser (Maybe Text)
-> Parser
(Maybe Text
-> Bool
-> Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"global_name"
Parser
(Maybe Text
-> Bool
-> Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
-> Parser (Maybe Text)
-> Parser
(Bool
-> Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"avatar"
Parser
(Bool
-> Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
-> Parser Bool
-> Parser
(Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"bot" Parser (Maybe Bool) -> Bool -> Parser Bool
forall a. Parser (Maybe a) -> a -> Parser a
.!= Bool
False
Parser
(Bool
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
-> Parser Bool
-> Parser
(Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Bool -> Parser Bool
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
False
Parser
(Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
-> Parser (Maybe Bool)
-> Parser
(Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"system"
Parser
(Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
-> Parser (Maybe Bool)
-> Parser
(Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"mfa_enabled"
Parser
(Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
-> Parser (Maybe Text)
-> Parser
(Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"banner"
Parser
(Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
-> Parser (Maybe Int)
-> Parser
(Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"accent_color"
Parser
(Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
-> Parser (Maybe Text)
-> Parser
(Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"locale"
Parser
(Maybe Bool
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
-> Parser (Maybe Bool)
-> Parser
(Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"verified"
Parser
(Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> Maybe GuildMember
-> User)
-> Parser (Maybe Text)
-> Parser
(Maybe Integer
-> Maybe Integer -> Maybe Integer -> Maybe GuildMember -> User)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"email"
Parser
(Maybe Integer
-> Maybe Integer -> Maybe Integer -> Maybe GuildMember -> User)
-> Parser (Maybe Integer)
-> Parser
(Maybe Integer -> Maybe Integer -> Maybe GuildMember -> User)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"flags"
Parser
(Maybe Integer -> Maybe Integer -> Maybe GuildMember -> User)
-> Parser (Maybe Integer)
-> Parser (Maybe Integer -> Maybe GuildMember -> User)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"premium_type"
Parser (Maybe Integer -> Maybe GuildMember -> User)
-> Parser (Maybe Integer) -> Parser (Maybe GuildMember -> User)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Integer)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"public_flags"
Parser (Maybe GuildMember -> User)
-> Parser (Maybe GuildMember) -> Parser User
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe GuildMember)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"member"
instance ToJSON User where
toJSON :: User -> Value
toJSON User{Bool
Maybe Bool
Maybe Int
Maybe Integer
Maybe Text
Maybe GuildMember
Text
UserId
userId :: User -> UserId
userName :: User -> Text
userDiscrim :: User -> Maybe Text
userGlobalName :: User -> Maybe Text
userAvatar :: User -> Maybe Text
userIsBot :: User -> Bool
userIsWebhook :: User -> Bool
userIsSystem :: User -> Maybe Bool
userMfa :: User -> Maybe Bool
userBanner :: User -> Maybe Text
userAccentColor :: User -> Maybe Int
userLocale :: User -> Maybe Text
userVerified :: User -> Maybe Bool
userEmail :: User -> Maybe Text
userFlags :: User -> Maybe Integer
userPremiumType :: User -> Maybe Integer
userPublicFlags :: User -> Maybe Integer
userMember :: User -> Maybe GuildMember
userId :: UserId
userName :: Text
userDiscrim :: Maybe Text
userGlobalName :: Maybe Text
userAvatar :: Maybe Text
userIsBot :: Bool
userIsWebhook :: Bool
userIsSystem :: Maybe Bool
userMfa :: Maybe Bool
userBanner :: Maybe Text
userAccentColor :: Maybe Int
userLocale :: Maybe Text
userVerified :: Maybe Bool
userEmail :: Maybe Text
userFlags :: Maybe Integer
userPremiumType :: Maybe Integer
userPublicFlags :: Maybe Integer
userMember :: Maybe GuildMember
..} = [Maybe Pair] -> Value
objectFromMaybes
[ Key
"id" Key -> UserId -> Maybe Pair
forall a. ToJSON a => Key -> a -> Maybe Pair
.== UserId
userId
, Key
"username" Key -> Text -> Maybe Pair
forall a. ToJSON a => Key -> a -> Maybe Pair
.== Text
userName
, Key
"discriminator" Key -> Maybe Text -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
.=? Maybe Text
userDiscrim
, Key
"global_name" Key -> Maybe Text -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
.=? Maybe Text
userGlobalName
, Key
"avatar" Key -> Maybe Text -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
.=? Maybe Text
userAvatar
, Key
"bot" Key -> Bool -> Maybe Pair
forall a. ToJSON a => Key -> a -> Maybe Pair
.== Bool
userIsBot
, Key
"system" Key -> Maybe Bool -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
.=? Maybe Bool
userIsSystem
, Key
"mfa_enabled" Key -> Maybe Bool -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
.=? Maybe Bool
userMfa
, Key
"banner" Key -> Maybe Text -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
.=? Maybe Text
userBanner
, Key
"accent_color" Key -> Maybe Int -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
.=? Maybe Int
userAccentColor
, Key
"verified" Key -> Maybe Bool -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
.=? Maybe Bool
userVerified
, Key
"email" Key -> Maybe Text -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
.=? Maybe Text
userEmail
, Key
"flags" Key -> Maybe Integer -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
.=? Maybe Integer
userFlags
, Key
"premium_type" Key -> Maybe Integer -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
.=? Maybe Integer
userPremiumType
, Key
"public_flags" Key -> Maybe Integer -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
.=? Maybe Integer
userPublicFlags
, Key
"member" Key -> Maybe Integer -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
.=? Maybe Integer
userPublicFlags
]
data Webhook = Webhook
{ Webhook -> WebhookId
webhookId :: WebhookId
, Webhook -> Maybe WebhookToken
webhookToken :: Maybe WebhookToken
, Webhook -> ChannelId
webhookChannelId :: ChannelId
} deriving (Int -> Webhook -> ShowS
[Webhook] -> ShowS
Webhook -> String
(Int -> Webhook -> ShowS)
-> (Webhook -> String) -> ([Webhook] -> ShowS) -> Show Webhook
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Webhook -> ShowS
showsPrec :: Int -> Webhook -> ShowS
$cshow :: Webhook -> String
show :: Webhook -> String
$cshowList :: [Webhook] -> ShowS
showList :: [Webhook] -> ShowS
Show, ReadPrec [Webhook]
ReadPrec Webhook
Int -> ReadS Webhook
ReadS [Webhook]
(Int -> ReadS Webhook)
-> ReadS [Webhook]
-> ReadPrec Webhook
-> ReadPrec [Webhook]
-> Read Webhook
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS Webhook
readsPrec :: Int -> ReadS Webhook
$creadList :: ReadS [Webhook]
readList :: ReadS [Webhook]
$creadPrec :: ReadPrec Webhook
readPrec :: ReadPrec Webhook
$creadListPrec :: ReadPrec [Webhook]
readListPrec :: ReadPrec [Webhook]
Read, Webhook -> Webhook -> Bool
(Webhook -> Webhook -> Bool)
-> (Webhook -> Webhook -> Bool) -> Eq Webhook
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Webhook -> Webhook -> Bool
== :: Webhook -> Webhook -> Bool
$c/= :: Webhook -> Webhook -> Bool
/= :: Webhook -> Webhook -> Bool
Eq, Eq Webhook
Eq Webhook =>
(Webhook -> Webhook -> Ordering)
-> (Webhook -> Webhook -> Bool)
-> (Webhook -> Webhook -> Bool)
-> (Webhook -> Webhook -> Bool)
-> (Webhook -> Webhook -> Bool)
-> (Webhook -> Webhook -> Webhook)
-> (Webhook -> Webhook -> Webhook)
-> Ord Webhook
Webhook -> Webhook -> Bool
Webhook -> Webhook -> Ordering
Webhook -> Webhook -> Webhook
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: Webhook -> Webhook -> Ordering
compare :: Webhook -> Webhook -> Ordering
$c< :: Webhook -> Webhook -> Bool
< :: Webhook -> Webhook -> Bool
$c<= :: Webhook -> Webhook -> Bool
<= :: Webhook -> Webhook -> Bool
$c> :: Webhook -> Webhook -> Bool
> :: Webhook -> Webhook -> Bool
$c>= :: Webhook -> Webhook -> Bool
>= :: Webhook -> Webhook -> Bool
$cmax :: Webhook -> Webhook -> Webhook
max :: Webhook -> Webhook -> Webhook
$cmin :: Webhook -> Webhook -> Webhook
min :: Webhook -> Webhook -> Webhook
Ord)
instance FromJSON Webhook where
parseJSON :: Value -> Parser Webhook
parseJSON = String -> (Object -> Parser Webhook) -> Value -> Parser Webhook
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"Webhook" ((Object -> Parser Webhook) -> Value -> Parser Webhook)
-> (Object -> Parser Webhook) -> Value -> Parser Webhook
forall a b. (a -> b) -> a -> b
$ \Object
o ->
WebhookId -> Maybe WebhookToken -> ChannelId -> Webhook
Webhook (WebhookId -> Maybe WebhookToken -> ChannelId -> Webhook)
-> Parser WebhookId
-> Parser (Maybe WebhookToken -> ChannelId -> Webhook)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser WebhookId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser (Maybe WebhookToken -> ChannelId -> Webhook)
-> Parser (Maybe WebhookToken) -> Parser (ChannelId -> Webhook)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe WebhookToken)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"token"
Parser (ChannelId -> Webhook) -> Parser ChannelId -> Parser Webhook
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser ChannelId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"channel_id"
data ConnectionObject = ConnectionObject
{ ConnectionObject -> Text
connectionObjectId :: Text
, ConnectionObject -> Text
connectionObjectName :: Text
, ConnectionObject -> Text
connectionObjectType :: Text
, ConnectionObject -> Bool
connectionObjectRevoked :: Bool
, ConnectionObject -> [IntegrationId]
connectionObjectIntegrations :: [IntegrationId]
, ConnectionObject -> Bool
connectionObjectVerified :: Bool
, ConnectionObject -> Bool
connectionObjectFriendSyncOn :: Bool
, ConnectionObject -> Bool
connectionObjectShownInPresenceUpdates :: Bool
, ConnectionObject -> Bool
connectionObjectVisibleToOthers :: Bool
} deriving (Int -> ConnectionObject -> ShowS
[ConnectionObject] -> ShowS
ConnectionObject -> String
(Int -> ConnectionObject -> ShowS)
-> (ConnectionObject -> String)
-> ([ConnectionObject] -> ShowS)
-> Show ConnectionObject
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ConnectionObject -> ShowS
showsPrec :: Int -> ConnectionObject -> ShowS
$cshow :: ConnectionObject -> String
show :: ConnectionObject -> String
$cshowList :: [ConnectionObject] -> ShowS
showList :: [ConnectionObject] -> ShowS
Show, ReadPrec [ConnectionObject]
ReadPrec ConnectionObject
Int -> ReadS ConnectionObject
ReadS [ConnectionObject]
(Int -> ReadS ConnectionObject)
-> ReadS [ConnectionObject]
-> ReadPrec ConnectionObject
-> ReadPrec [ConnectionObject]
-> Read ConnectionObject
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS ConnectionObject
readsPrec :: Int -> ReadS ConnectionObject
$creadList :: ReadS [ConnectionObject]
readList :: ReadS [ConnectionObject]
$creadPrec :: ReadPrec ConnectionObject
readPrec :: ReadPrec ConnectionObject
$creadListPrec :: ReadPrec [ConnectionObject]
readListPrec :: ReadPrec [ConnectionObject]
Read, ConnectionObject -> ConnectionObject -> Bool
(ConnectionObject -> ConnectionObject -> Bool)
-> (ConnectionObject -> ConnectionObject -> Bool)
-> Eq ConnectionObject
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ConnectionObject -> ConnectionObject -> Bool
== :: ConnectionObject -> ConnectionObject -> Bool
$c/= :: ConnectionObject -> ConnectionObject -> Bool
/= :: ConnectionObject -> ConnectionObject -> Bool
Eq, Eq ConnectionObject
Eq ConnectionObject =>
(ConnectionObject -> ConnectionObject -> Ordering)
-> (ConnectionObject -> ConnectionObject -> Bool)
-> (ConnectionObject -> ConnectionObject -> Bool)
-> (ConnectionObject -> ConnectionObject -> Bool)
-> (ConnectionObject -> ConnectionObject -> Bool)
-> (ConnectionObject -> ConnectionObject -> ConnectionObject)
-> (ConnectionObject -> ConnectionObject -> ConnectionObject)
-> Ord ConnectionObject
ConnectionObject -> ConnectionObject -> Bool
ConnectionObject -> ConnectionObject -> Ordering
ConnectionObject -> ConnectionObject -> ConnectionObject
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: ConnectionObject -> ConnectionObject -> Ordering
compare :: ConnectionObject -> ConnectionObject -> Ordering
$c< :: ConnectionObject -> ConnectionObject -> Bool
< :: ConnectionObject -> ConnectionObject -> Bool
$c<= :: ConnectionObject -> ConnectionObject -> Bool
<= :: ConnectionObject -> ConnectionObject -> Bool
$c> :: ConnectionObject -> ConnectionObject -> Bool
> :: ConnectionObject -> ConnectionObject -> Bool
$c>= :: ConnectionObject -> ConnectionObject -> Bool
>= :: ConnectionObject -> ConnectionObject -> Bool
$cmax :: ConnectionObject -> ConnectionObject -> ConnectionObject
max :: ConnectionObject -> ConnectionObject -> ConnectionObject
$cmin :: ConnectionObject -> ConnectionObject -> ConnectionObject
min :: ConnectionObject -> ConnectionObject -> ConnectionObject
Ord)
instance FromJSON ConnectionObject where
parseJSON :: Value -> Parser ConnectionObject
parseJSON = String
-> (Object -> Parser ConnectionObject)
-> Value
-> Parser ConnectionObject
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"ConnectionObject" ((Object -> Parser ConnectionObject)
-> Value -> Parser ConnectionObject)
-> (Object -> Parser ConnectionObject)
-> Value
-> Parser ConnectionObject
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
[Object]
integrations <- Object
o Object -> Key -> Parser [Object]
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"integrations"
Text
-> Text
-> Text
-> Bool
-> [IntegrationId]
-> Bool
-> Bool
-> Bool
-> Bool
-> ConnectionObject
ConnectionObject (Text
-> Text
-> Text
-> Bool
-> [IntegrationId]
-> Bool
-> Bool
-> Bool
-> Bool
-> ConnectionObject)
-> Parser Text
-> Parser
(Text
-> Text
-> Bool
-> [IntegrationId]
-> Bool
-> Bool
-> Bool
-> Bool
-> ConnectionObject)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser
(Text
-> Text
-> Bool
-> [IntegrationId]
-> Bool
-> Bool
-> Bool
-> Bool
-> ConnectionObject)
-> Parser Text
-> Parser
(Text
-> Bool
-> [IntegrationId]
-> Bool
-> Bool
-> Bool
-> Bool
-> ConnectionObject)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"name"
Parser
(Text
-> Bool
-> [IntegrationId]
-> Bool
-> Bool
-> Bool
-> Bool
-> ConnectionObject)
-> Parser Text
-> Parser
(Bool
-> [IntegrationId]
-> Bool
-> Bool
-> Bool
-> Bool
-> ConnectionObject)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"type"
Parser
(Bool
-> [IntegrationId]
-> Bool
-> Bool
-> Bool
-> Bool
-> ConnectionObject)
-> Parser Bool
-> Parser
([IntegrationId]
-> Bool -> Bool -> Bool -> Bool -> ConnectionObject)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"revoked"
Parser
([IntegrationId]
-> Bool -> Bool -> Bool -> Bool -> ConnectionObject)
-> Parser [IntegrationId]
-> Parser (Bool -> Bool -> Bool -> Bool -> ConnectionObject)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (Object -> Parser IntegrationId)
-> [Object] -> Parser [IntegrationId]
forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> [a] -> m [b]
mapM (Object -> Key -> Parser IntegrationId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id") [Object]
integrations
Parser (Bool -> Bool -> Bool -> Bool -> ConnectionObject)
-> Parser Bool -> Parser (Bool -> Bool -> Bool -> ConnectionObject)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"verified"
Parser (Bool -> Bool -> Bool -> ConnectionObject)
-> Parser Bool -> Parser (Bool -> Bool -> ConnectionObject)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"friend_sync"
Parser (Bool -> Bool -> ConnectionObject)
-> Parser Bool -> Parser (Bool -> ConnectionObject)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"show_activity"
Parser (Bool -> ConnectionObject)
-> Parser Bool -> Parser ConnectionObject
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> ( Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
(==) (Int
1::Int) (Int -> Bool) -> Parser Int -> Parser Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser Int
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"visibility")
data GuildMember = GuildMember
{ GuildMember -> Maybe User
memberUser :: Maybe User
, GuildMember -> Maybe Text
memberNick :: Maybe T.Text
, GuildMember -> Maybe Text
memberAvatar :: Maybe T.Text
, GuildMember -> [RoleId]
memberRoles :: [RoleId]
, GuildMember -> UTCTime
memberJoinedAt :: UTCTime
, GuildMember -> Maybe UTCTime
memberPremiumSince :: Maybe UTCTime
, GuildMember -> Bool
memberDeaf :: Bool
, GuildMember -> Bool
memberMute :: Bool
, GuildMember -> Bool
memberPending :: Bool
, GuildMember -> Maybe Text
memberPermissions :: Maybe T.Text
, GuildMember -> Maybe UTCTime
memberTimeoutEnd :: Maybe UTCTime
} deriving (Int -> GuildMember -> ShowS
[GuildMember] -> ShowS
GuildMember -> String
(Int -> GuildMember -> ShowS)
-> (GuildMember -> String)
-> ([GuildMember] -> ShowS)
-> Show GuildMember
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> GuildMember -> ShowS
showsPrec :: Int -> GuildMember -> ShowS
$cshow :: GuildMember -> String
show :: GuildMember -> String
$cshowList :: [GuildMember] -> ShowS
showList :: [GuildMember] -> ShowS
Show, ReadPrec [GuildMember]
ReadPrec GuildMember
Int -> ReadS GuildMember
ReadS [GuildMember]
(Int -> ReadS GuildMember)
-> ReadS [GuildMember]
-> ReadPrec GuildMember
-> ReadPrec [GuildMember]
-> Read GuildMember
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS GuildMember
readsPrec :: Int -> ReadS GuildMember
$creadList :: ReadS [GuildMember]
readList :: ReadS [GuildMember]
$creadPrec :: ReadPrec GuildMember
readPrec :: ReadPrec GuildMember
$creadListPrec :: ReadPrec [GuildMember]
readListPrec :: ReadPrec [GuildMember]
Read, GuildMember -> GuildMember -> Bool
(GuildMember -> GuildMember -> Bool)
-> (GuildMember -> GuildMember -> Bool) -> Eq GuildMember
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: GuildMember -> GuildMember -> Bool
== :: GuildMember -> GuildMember -> Bool
$c/= :: GuildMember -> GuildMember -> Bool
/= :: GuildMember -> GuildMember -> Bool
Eq, Eq GuildMember
Eq GuildMember =>
(GuildMember -> GuildMember -> Ordering)
-> (GuildMember -> GuildMember -> Bool)
-> (GuildMember -> GuildMember -> Bool)
-> (GuildMember -> GuildMember -> Bool)
-> (GuildMember -> GuildMember -> Bool)
-> (GuildMember -> GuildMember -> GuildMember)
-> (GuildMember -> GuildMember -> GuildMember)
-> Ord GuildMember
GuildMember -> GuildMember -> Bool
GuildMember -> GuildMember -> Ordering
GuildMember -> GuildMember -> GuildMember
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: GuildMember -> GuildMember -> Ordering
compare :: GuildMember -> GuildMember -> Ordering
$c< :: GuildMember -> GuildMember -> Bool
< :: GuildMember -> GuildMember -> Bool
$c<= :: GuildMember -> GuildMember -> Bool
<= :: GuildMember -> GuildMember -> Bool
$c> :: GuildMember -> GuildMember -> Bool
> :: GuildMember -> GuildMember -> Bool
$c>= :: GuildMember -> GuildMember -> Bool
>= :: GuildMember -> GuildMember -> Bool
$cmax :: GuildMember -> GuildMember -> GuildMember
max :: GuildMember -> GuildMember -> GuildMember
$cmin :: GuildMember -> GuildMember -> GuildMember
min :: GuildMember -> GuildMember -> GuildMember
Ord)
instance FromJSON GuildMember where
parseJSON :: Value -> Parser GuildMember
parseJSON = String
-> (Object -> Parser GuildMember) -> Value -> Parser GuildMember
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"GuildMember" ((Object -> Parser GuildMember) -> Value -> Parser GuildMember)
-> (Object -> Parser GuildMember) -> Value -> Parser GuildMember
forall a b. (a -> b) -> a -> b
$ \Object
o ->
Maybe User
-> Maybe Text
-> Maybe Text
-> [RoleId]
-> UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> Bool
-> Maybe Text
-> Maybe UTCTime
-> GuildMember
GuildMember (Maybe User
-> Maybe Text
-> Maybe Text
-> [RoleId]
-> UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> Bool
-> Maybe Text
-> Maybe UTCTime
-> GuildMember)
-> Parser (Maybe User)
-> Parser
(Maybe Text
-> Maybe Text
-> [RoleId]
-> UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> Bool
-> Maybe Text
-> Maybe UTCTime
-> GuildMember)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser (Maybe User)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"user"
Parser
(Maybe Text
-> Maybe Text
-> [RoleId]
-> UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> Bool
-> Maybe Text
-> Maybe UTCTime
-> GuildMember)
-> Parser (Maybe Text)
-> Parser
(Maybe Text
-> [RoleId]
-> UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> Bool
-> Maybe Text
-> Maybe UTCTime
-> GuildMember)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"nick"
Parser
(Maybe Text
-> [RoleId]
-> UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> Bool
-> Maybe Text
-> Maybe UTCTime
-> GuildMember)
-> Parser (Maybe Text)
-> Parser
([RoleId]
-> UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> Bool
-> Maybe Text
-> Maybe UTCTime
-> GuildMember)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"avatar"
Parser
([RoleId]
-> UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> Bool
-> Maybe Text
-> Maybe UTCTime
-> GuildMember)
-> Parser [RoleId]
-> Parser
(UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> Bool
-> Maybe Text
-> Maybe UTCTime
-> GuildMember)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser [RoleId]
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"roles"
Parser
(UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> Bool
-> Maybe Text
-> Maybe UTCTime
-> GuildMember)
-> Parser UTCTime
-> Parser
(Maybe UTCTime
-> Bool
-> Bool
-> Bool
-> Maybe Text
-> Maybe UTCTime
-> GuildMember)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser UTCTime
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"joined_at"
Parser
(Maybe UTCTime
-> Bool
-> Bool
-> Bool
-> Maybe Text
-> Maybe UTCTime
-> GuildMember)
-> Parser (Maybe UTCTime)
-> Parser
(Bool
-> Bool -> Bool -> Maybe Text -> Maybe UTCTime -> GuildMember)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe UTCTime)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"premium_since"
Parser
(Bool
-> Bool -> Bool -> Maybe Text -> Maybe UTCTime -> GuildMember)
-> Parser Bool
-> Parser
(Bool -> Bool -> Maybe Text -> Maybe UTCTime -> GuildMember)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"deaf"
Parser (Bool -> Bool -> Maybe Text -> Maybe UTCTime -> GuildMember)
-> Parser Bool
-> Parser (Bool -> Maybe Text -> Maybe UTCTime -> GuildMember)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"mute"
Parser (Bool -> Maybe Text -> Maybe UTCTime -> GuildMember)
-> Parser Bool
-> Parser (Maybe Text -> Maybe UTCTime -> GuildMember)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"pending" Parser (Maybe Bool) -> Bool -> Parser Bool
forall a. Parser (Maybe a) -> a -> Parser a
.!= Bool
False
Parser (Maybe Text -> Maybe UTCTime -> GuildMember)
-> Parser (Maybe Text) -> Parser (Maybe UTCTime -> GuildMember)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"permissions"
Parser (Maybe UTCTime -> GuildMember)
-> Parser (Maybe UTCTime) -> Parser GuildMember
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe UTCTime)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"communication_disabled_until"
instance ToJSON GuildMember where
toJSON :: GuildMember -> Value
toJSON GuildMember {Bool
[RoleId]
Maybe Text
Maybe UTCTime
Maybe User
UTCTime
memberUser :: GuildMember -> Maybe User
memberNick :: GuildMember -> Maybe Text
memberAvatar :: GuildMember -> Maybe Text
memberRoles :: GuildMember -> [RoleId]
memberJoinedAt :: GuildMember -> UTCTime
memberPremiumSince :: GuildMember -> Maybe UTCTime
memberDeaf :: GuildMember -> Bool
memberMute :: GuildMember -> Bool
memberPending :: GuildMember -> Bool
memberPermissions :: GuildMember -> Maybe Text
memberTimeoutEnd :: GuildMember -> Maybe UTCTime
memberUser :: Maybe User
memberNick :: Maybe Text
memberAvatar :: Maybe Text
memberRoles :: [RoleId]
memberJoinedAt :: UTCTime
memberPremiumSince :: Maybe UTCTime
memberDeaf :: Bool
memberMute :: Bool
memberPending :: Bool
memberPermissions :: Maybe Text
memberTimeoutEnd :: Maybe UTCTime
..} = [Maybe Pair] -> Value
objectFromMaybes
[ Key
"user" Key -> Maybe User -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
.=? Maybe User
memberUser
, Key
"nick" Key -> Maybe Text -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
.=? Maybe Text
memberNick
, Key
"avatar" Key -> Maybe Text -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
.=? Maybe Text
memberAvatar
, Key
"roles" Key -> [RoleId] -> Maybe Pair
forall a. ToJSON a => Key -> a -> Maybe Pair
.== [RoleId]
memberRoles
, Key
"joined_at" Key -> UTCTime -> Maybe Pair
forall a. ToJSON a => Key -> a -> Maybe Pair
.== UTCTime
memberJoinedAt
, Key
"premium_since" Key -> Maybe UTCTime -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
.=? Maybe UTCTime
memberPremiumSince
, Key
"deaf" Key -> Bool -> Maybe Pair
forall a. ToJSON a => Key -> a -> Maybe Pair
.== Bool
memberDeaf
, Key
"mute" Key -> Bool -> Maybe Pair
forall a. ToJSON a => Key -> a -> Maybe Pair
.== Bool
memberMute
, Key
"pending" Key -> Bool -> Maybe Pair
forall a. ToJSON a => Key -> a -> Maybe Pair
.== Bool
memberPending
, Key
"permissions" Key -> Maybe Text -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
.=? Maybe Text
memberPermissions
, Key
"communication_disabled_until" Key -> Maybe UTCTime -> Maybe Pair
forall a. ToJSON a => Key -> Maybe a -> Maybe Pair
.=? Maybe UTCTime
memberTimeoutEnd
]