{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE DeriveDataTypeable #-}
module Discord.Internal.Types.Channel where
import Control.Applicative (empty)
import Data.Aeson
import Data.Aeson.Types (Parser)
import Data.Default (Default, def)
import Data.Text (Text)
import Data.Time.Clock
import qualified Data.Text as T
import Data.Bits
import Data.Data (Data)
import Discord.Internal.Types.Prelude
import Discord.Internal.Types.User (User(..), GuildMember)
import Discord.Internal.Types.Embed
import Discord.Internal.Types.Components (ComponentActionRow)
import Discord.Internal.Types.Emoji
data Channel
= ChannelText
{ Channel -> ChannelId
channelId :: ChannelId
, Channel -> ChannelId
channelGuild :: GuildId
, Channel -> Text
channelName :: T.Text
, Channel -> Integer
channelPosition :: Integer
, Channel -> [Overwrite]
channelPermissions :: [Overwrite]
, Channel -> Integer
channelUserRateLimit :: Integer
, Channel -> Bool
channelNSFW :: Bool
, Channel -> Text
channelTopic :: T.Text
, Channel -> Maybe ChannelId
channelLastMessage :: Maybe MessageId
, Channel -> Maybe ChannelId
channelParentId :: Maybe ParentId
}
| ChannelNews
{ channelId :: ChannelId
, channelGuild :: GuildId
, channelName :: T.Text
, channelPosition :: Integer
, channelPermissions :: [Overwrite]
, channelNSFW :: Bool
, channelTopic :: T.Text
, channelLastMessage :: Maybe MessageId
}
| ChannelStorePage
{ channelId :: ChannelId
, channelGuild :: GuildId
, channelName :: T.Text
, channelPosition :: Integer
, channelNSFW :: Bool
, channelPermissions :: [Overwrite]
, channelParentId :: Maybe ParentId
}
| ChannelVoice
{ channelId :: ChannelId
, channelGuild :: GuildId
, channelName :: T.Text
, channelPosition :: Integer
, channelPermissions :: [Overwrite]
, channelNSFW :: Bool
, Channel -> Integer
channelBitRate :: Integer
, Channel -> Integer
channelUserLimit :: Integer
, channelParentId :: Maybe ParentId
}
| ChannelDirectMessage
{ channelId :: ChannelId
, Channel -> [User]
channelRecipients :: [User]
, channelLastMessage :: Maybe MessageId
}
| ChannelGroupDM
{ channelId :: ChannelId
, channelRecipients :: [User]
, channelLastMessage :: Maybe MessageId
}
| ChannelGuildCategory
{ channelId :: ChannelId
, channelGuild :: GuildId
, channelName :: T.Text
, channelPosition :: Integer
, channelPermissions :: [Overwrite]
}
| ChannelStage
{ channelId :: ChannelId
, channelGuild :: GuildId
, Channel -> ChannelId
channelStageId :: StageId
, Channel -> Text
channelStageTopic :: Text
}
| ChannelNewsThread
{ channelId :: ChannelId
, channelGuild :: GuildId
, Channel -> Maybe Text
channelThreadName :: Maybe T.Text
, Channel -> Maybe Integer
channelUserRateLimitThread :: Maybe Integer
, channelLastMessage :: Maybe MessageId
, channelParentId :: Maybe ParentId
, Channel -> Maybe ThreadMetadata
channelThreadMetadata :: Maybe ThreadMetadata
, Channel -> Maybe ThreadMember
channelThreadMember :: Maybe ThreadMember
}
| ChannelPublicThread
{ channelId :: ChannelId
, channelGuild :: GuildId
, channelThreadName :: Maybe T.Text
, channelUserRateLimitThread :: Maybe Integer
, channelLastMessage :: Maybe MessageId
, channelParentId :: Maybe ParentId
, channelThreadMetadata :: Maybe ThreadMetadata
, channelThreadMember :: Maybe ThreadMember
}
| ChannelPrivateThread
{ channelId :: ChannelId
, channelGuild :: GuildId
, channelThreadName :: Maybe T.Text
, channelUserRateLimitThread :: Maybe Integer
, channelLastMessage :: Maybe MessageId
, channelParentId :: Maybe ParentId
, channelThreadMetadata :: Maybe ThreadMetadata
, channelThreadMember :: Maybe ThreadMember
}
| ChannelUnknownType
{ channelId :: ChannelId
, Channel -> Text
channelJSON :: Text
} deriving (Int -> Channel -> ShowS
[Channel] -> ShowS
Channel -> String
(Int -> Channel -> ShowS)
-> (Channel -> String) -> ([Channel] -> ShowS) -> Show Channel
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Channel] -> ShowS
$cshowList :: [Channel] -> ShowS
show :: Channel -> String
$cshow :: Channel -> String
showsPrec :: Int -> Channel -> ShowS
$cshowsPrec :: Int -> Channel -> ShowS
Show, ReadPrec [Channel]
ReadPrec Channel
Int -> ReadS Channel
ReadS [Channel]
(Int -> ReadS Channel)
-> ReadS [Channel]
-> ReadPrec Channel
-> ReadPrec [Channel]
-> Read Channel
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Channel]
$creadListPrec :: ReadPrec [Channel]
readPrec :: ReadPrec Channel
$creadPrec :: ReadPrec Channel
readList :: ReadS [Channel]
$creadList :: ReadS [Channel]
readsPrec :: Int -> ReadS Channel
$creadsPrec :: Int -> ReadS Channel
Read, Channel -> Channel -> Bool
(Channel -> Channel -> Bool)
-> (Channel -> Channel -> Bool) -> Eq Channel
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Channel -> Channel -> Bool
$c/= :: Channel -> Channel -> Bool
== :: Channel -> Channel -> Bool
$c== :: Channel -> Channel -> Bool
Eq, Eq Channel
Eq Channel
-> (Channel -> Channel -> Ordering)
-> (Channel -> Channel -> Bool)
-> (Channel -> Channel -> Bool)
-> (Channel -> Channel -> Bool)
-> (Channel -> Channel -> Bool)
-> (Channel -> Channel -> Channel)
-> (Channel -> Channel -> Channel)
-> Ord Channel
Channel -> Channel -> Bool
Channel -> Channel -> Ordering
Channel -> Channel -> Channel
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
min :: Channel -> Channel -> Channel
$cmin :: Channel -> Channel -> Channel
max :: Channel -> Channel -> Channel
$cmax :: Channel -> Channel -> Channel
>= :: Channel -> Channel -> Bool
$c>= :: Channel -> Channel -> Bool
> :: Channel -> Channel -> Bool
$c> :: Channel -> Channel -> Bool
<= :: Channel -> Channel -> Bool
$c<= :: Channel -> Channel -> Bool
< :: Channel -> Channel -> Bool
$c< :: Channel -> Channel -> Bool
compare :: Channel -> Channel -> Ordering
$ccompare :: Channel -> Channel -> Ordering
$cp1Ord :: Eq Channel
Ord)
instance FromJSON Channel where
parseJSON :: Value -> Parser Channel
parseJSON = String -> (Object -> Parser Channel) -> Value -> Parser Channel
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"Channel" ((Object -> Parser Channel) -> Value -> Parser Channel)
-> (Object -> Parser Channel) -> Value -> Parser Channel
forall a b. (a -> b) -> a -> b
$ \Object
o -> do
Int
type' <- (Object
o Object -> Key -> Parser Int
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"type") :: Parser Int
case Int
type' of
Int
0 ->
ChannelId
-> ChannelId
-> Text
-> Integer
-> [Overwrite]
-> Integer
-> Bool
-> Text
-> Maybe ChannelId
-> Maybe ChannelId
-> Channel
ChannelText (ChannelId
-> ChannelId
-> Text
-> Integer
-> [Overwrite]
-> Integer
-> Bool
-> Text
-> Maybe ChannelId
-> Maybe ChannelId
-> Channel)
-> Parser ChannelId
-> Parser
(ChannelId
-> Text
-> Integer
-> [Overwrite]
-> Integer
-> Bool
-> Text
-> Maybe ChannelId
-> Maybe ChannelId
-> Channel)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser ChannelId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser
(ChannelId
-> Text
-> Integer
-> [Overwrite]
-> Integer
-> Bool
-> Text
-> Maybe ChannelId
-> Maybe ChannelId
-> Channel)
-> Parser ChannelId
-> Parser
(Text
-> Integer
-> [Overwrite]
-> Integer
-> Bool
-> Text
-> Maybe ChannelId
-> Maybe ChannelId
-> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"guild_id" Parser (Maybe ChannelId) -> ChannelId -> Parser ChannelId
forall a. Parser (Maybe a) -> a -> Parser a
.!= ChannelId
0
Parser
(Text
-> Integer
-> [Overwrite]
-> Integer
-> Bool
-> Text
-> Maybe ChannelId
-> Maybe ChannelId
-> Channel)
-> Parser Text
-> Parser
(Integer
-> [Overwrite]
-> Integer
-> Bool
-> Text
-> Maybe ChannelId
-> Maybe ChannelId
-> Channel)
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
(Integer
-> [Overwrite]
-> Integer
-> Bool
-> Text
-> Maybe ChannelId
-> Maybe ChannelId
-> Channel)
-> Parser Integer
-> Parser
([Overwrite]
-> Integer
-> Bool
-> Text
-> Maybe ChannelId
-> Maybe ChannelId
-> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"position"
Parser
([Overwrite]
-> Integer
-> Bool
-> Text
-> Maybe ChannelId
-> Maybe ChannelId
-> Channel)
-> Parser [Overwrite]
-> Parser
(Integer
-> Bool -> Text -> Maybe ChannelId -> Maybe ChannelId -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser [Overwrite]
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"permission_overwrites"
Parser
(Integer
-> Bool -> Text -> Maybe ChannelId -> Maybe ChannelId -> Channel)
-> Parser Integer
-> Parser
(Bool -> Text -> Maybe ChannelId -> Maybe ChannelId -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"rate_limit_per_user"
Parser
(Bool -> Text -> Maybe ChannelId -> Maybe ChannelId -> Channel)
-> Parser Bool
-> Parser (Text -> Maybe ChannelId -> Maybe ChannelId -> Channel)
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
"nsfw" Parser (Maybe Bool) -> Bool -> Parser Bool
forall a. Parser (Maybe a) -> a -> Parser a
.!= Bool
False
Parser (Text -> Maybe ChannelId -> Maybe ChannelId -> Channel)
-> Parser Text
-> Parser (Maybe ChannelId -> Maybe ChannelId -> Channel)
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
"topic" Parser (Maybe Text) -> Text -> Parser Text
forall a. Parser (Maybe a) -> a -> Parser a
.!= Text
""
Parser (Maybe ChannelId -> Maybe ChannelId -> Channel)
-> Parser (Maybe ChannelId) -> Parser (Maybe ChannelId -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"last_message_id"
Parser (Maybe ChannelId -> Channel)
-> Parser (Maybe ChannelId) -> Parser Channel
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"parent_id"
Int
1 ->
ChannelId -> [User] -> Maybe ChannelId -> Channel
ChannelDirectMessage (ChannelId -> [User] -> Maybe ChannelId -> Channel)
-> Parser ChannelId
-> Parser ([User] -> Maybe ChannelId -> Channel)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser ChannelId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser ([User] -> Maybe ChannelId -> Channel)
-> Parser [User] -> Parser (Maybe ChannelId -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser [User]
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"recipients"
Parser (Maybe ChannelId -> Channel)
-> Parser (Maybe ChannelId) -> Parser Channel
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"last_message_id"
Int
2 ->
ChannelId
-> ChannelId
-> Text
-> Integer
-> [Overwrite]
-> Bool
-> Integer
-> Integer
-> Maybe ChannelId
-> Channel
ChannelVoice (ChannelId
-> ChannelId
-> Text
-> Integer
-> [Overwrite]
-> Bool
-> Integer
-> Integer
-> Maybe ChannelId
-> Channel)
-> Parser ChannelId
-> Parser
(ChannelId
-> Text
-> Integer
-> [Overwrite]
-> Bool
-> Integer
-> Integer
-> Maybe ChannelId
-> Channel)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser ChannelId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser
(ChannelId
-> Text
-> Integer
-> [Overwrite]
-> Bool
-> Integer
-> Integer
-> Maybe ChannelId
-> Channel)
-> Parser ChannelId
-> Parser
(Text
-> Integer
-> [Overwrite]
-> Bool
-> Integer
-> Integer
-> Maybe ChannelId
-> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"guild_id" Parser (Maybe ChannelId) -> ChannelId -> Parser ChannelId
forall a. Parser (Maybe a) -> a -> Parser a
.!= ChannelId
0
Parser
(Text
-> Integer
-> [Overwrite]
-> Bool
-> Integer
-> Integer
-> Maybe ChannelId
-> Channel)
-> Parser Text
-> Parser
(Integer
-> [Overwrite]
-> Bool
-> Integer
-> Integer
-> Maybe ChannelId
-> Channel)
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
(Integer
-> [Overwrite]
-> Bool
-> Integer
-> Integer
-> Maybe ChannelId
-> Channel)
-> Parser Integer
-> Parser
([Overwrite]
-> Bool -> Integer -> Integer -> Maybe ChannelId -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"position"
Parser
([Overwrite]
-> Bool -> Integer -> Integer -> Maybe ChannelId -> Channel)
-> Parser [Overwrite]
-> Parser
(Bool -> Integer -> Integer -> Maybe ChannelId -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser [Overwrite]
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"permission_overwrites"
Parser (Bool -> Integer -> Integer -> Maybe ChannelId -> Channel)
-> Parser Bool
-> Parser (Integer -> Integer -> Maybe ChannelId -> Channel)
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
"nsfw" Parser (Maybe Bool) -> Bool -> Parser Bool
forall a. Parser (Maybe a) -> a -> Parser a
.!= Bool
False
Parser (Integer -> Integer -> Maybe ChannelId -> Channel)
-> Parser Integer -> Parser (Integer -> Maybe ChannelId -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"bitrate"
Parser (Integer -> Maybe ChannelId -> Channel)
-> Parser Integer -> Parser (Maybe ChannelId -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"user_limit"
Parser (Maybe ChannelId -> Channel)
-> Parser (Maybe ChannelId) -> Parser Channel
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"parent_id"
Int
3 ->
ChannelId -> [User] -> Maybe ChannelId -> Channel
ChannelGroupDM (ChannelId -> [User] -> Maybe ChannelId -> Channel)
-> Parser ChannelId
-> Parser ([User] -> Maybe ChannelId -> Channel)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser ChannelId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser ([User] -> Maybe ChannelId -> Channel)
-> Parser [User] -> Parser (Maybe ChannelId -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser [User]
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"recipients"
Parser (Maybe ChannelId -> Channel)
-> Parser (Maybe ChannelId) -> Parser Channel
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"last_message_id"
Int
4 ->
ChannelId -> ChannelId -> Text -> Integer -> [Overwrite] -> Channel
ChannelGuildCategory (ChannelId
-> ChannelId -> Text -> Integer -> [Overwrite] -> Channel)
-> Parser ChannelId
-> Parser (ChannelId -> Text -> Integer -> [Overwrite] -> Channel)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser ChannelId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser (ChannelId -> Text -> Integer -> [Overwrite] -> Channel)
-> Parser ChannelId
-> Parser (Text -> Integer -> [Overwrite] -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"guild_id" Parser (Maybe ChannelId) -> ChannelId -> Parser ChannelId
forall a. Parser (Maybe a) -> a -> Parser a
.!= ChannelId
0
Parser (Text -> Integer -> [Overwrite] -> Channel)
-> Parser Text -> Parser (Integer -> [Overwrite] -> Channel)
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 (Integer -> [Overwrite] -> Channel)
-> Parser Integer -> Parser ([Overwrite] -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"position"
Parser ([Overwrite] -> Channel)
-> Parser [Overwrite] -> Parser Channel
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser [Overwrite]
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"permission_overwrites"
Int
5 ->
ChannelId
-> ChannelId
-> Text
-> Integer
-> [Overwrite]
-> Bool
-> Text
-> Maybe ChannelId
-> Channel
ChannelNews (ChannelId
-> ChannelId
-> Text
-> Integer
-> [Overwrite]
-> Bool
-> Text
-> Maybe ChannelId
-> Channel)
-> Parser ChannelId
-> Parser
(ChannelId
-> Text
-> Integer
-> [Overwrite]
-> Bool
-> Text
-> Maybe ChannelId
-> Channel)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser ChannelId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser
(ChannelId
-> Text
-> Integer
-> [Overwrite]
-> Bool
-> Text
-> Maybe ChannelId
-> Channel)
-> Parser ChannelId
-> Parser
(Text
-> Integer
-> [Overwrite]
-> Bool
-> Text
-> Maybe ChannelId
-> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"guild_id" Parser (Maybe ChannelId) -> ChannelId -> Parser ChannelId
forall a. Parser (Maybe a) -> a -> Parser a
.!= ChannelId
0
Parser
(Text
-> Integer
-> [Overwrite]
-> Bool
-> Text
-> Maybe ChannelId
-> Channel)
-> Parser Text
-> Parser
(Integer
-> [Overwrite] -> Bool -> Text -> Maybe ChannelId -> Channel)
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
(Integer
-> [Overwrite] -> Bool -> Text -> Maybe ChannelId -> Channel)
-> Parser Integer
-> Parser
([Overwrite] -> Bool -> Text -> Maybe ChannelId -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"position"
Parser ([Overwrite] -> Bool -> Text -> Maybe ChannelId -> Channel)
-> Parser [Overwrite]
-> Parser (Bool -> Text -> Maybe ChannelId -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser [Overwrite]
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"permission_overwrites"
Parser (Bool -> Text -> Maybe ChannelId -> Channel)
-> Parser Bool -> Parser (Text -> Maybe ChannelId -> Channel)
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
"nsfw" Parser (Maybe Bool) -> Bool -> Parser Bool
forall a. Parser (Maybe a) -> a -> Parser a
.!= Bool
False
Parser (Text -> Maybe ChannelId -> Channel)
-> Parser Text -> Parser (Maybe ChannelId -> Channel)
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
"topic" Parser (Maybe Text) -> Text -> Parser Text
forall a. Parser (Maybe a) -> a -> Parser a
.!= Text
""
Parser (Maybe ChannelId -> Channel)
-> Parser (Maybe ChannelId) -> Parser Channel
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"last_message_id"
Int
6 ->
ChannelId
-> ChannelId
-> Text
-> Integer
-> Bool
-> [Overwrite]
-> Maybe ChannelId
-> Channel
ChannelStorePage (ChannelId
-> ChannelId
-> Text
-> Integer
-> Bool
-> [Overwrite]
-> Maybe ChannelId
-> Channel)
-> Parser ChannelId
-> Parser
(ChannelId
-> Text
-> Integer
-> Bool
-> [Overwrite]
-> Maybe ChannelId
-> Channel)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser ChannelId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser
(ChannelId
-> Text
-> Integer
-> Bool
-> [Overwrite]
-> Maybe ChannelId
-> Channel)
-> Parser ChannelId
-> Parser
(Text
-> Integer -> Bool -> [Overwrite] -> Maybe ChannelId -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"guild_id" Parser (Maybe ChannelId) -> ChannelId -> Parser ChannelId
forall a. Parser (Maybe a) -> a -> Parser a
.!= ChannelId
0
Parser
(Text
-> Integer -> Bool -> [Overwrite] -> Maybe ChannelId -> Channel)
-> Parser Text
-> Parser
(Integer -> Bool -> [Overwrite] -> Maybe ChannelId -> Channel)
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
(Integer -> Bool -> [Overwrite] -> Maybe ChannelId -> Channel)
-> Parser Integer
-> Parser (Bool -> [Overwrite] -> Maybe ChannelId -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"position"
Parser (Bool -> [Overwrite] -> Maybe ChannelId -> Channel)
-> Parser Bool
-> Parser ([Overwrite] -> Maybe ChannelId -> Channel)
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
"nsfw" Parser (Maybe Bool) -> Bool -> Parser Bool
forall a. Parser (Maybe a) -> a -> Parser a
.!= Bool
False
Parser ([Overwrite] -> Maybe ChannelId -> Channel)
-> Parser [Overwrite] -> Parser (Maybe ChannelId -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser [Overwrite]
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"permission_overwrites"
Parser (Maybe ChannelId -> Channel)
-> Parser (Maybe ChannelId) -> Parser Channel
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"parent_id"
Int
10 -> ChannelId
-> ChannelId
-> Maybe Text
-> Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel
ChannelNewsThread (ChannelId
-> ChannelId
-> Maybe Text
-> Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
-> Parser ChannelId
-> Parser
(ChannelId
-> Maybe Text
-> Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
oObject -> Key -> Parser ChannelId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser
(ChannelId
-> Maybe Text
-> Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
-> Parser ChannelId
-> Parser
(Maybe Text
-> Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"guild_id" Parser (Maybe ChannelId) -> ChannelId -> Parser ChannelId
forall a. Parser (Maybe a) -> a -> Parser a
.!= ChannelId
0
Parser
(Maybe Text
-> Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
-> Parser (Maybe Text)
-> Parser
(Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
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
"name"
Parser
(Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
-> Parser (Maybe Integer)
-> Parser
(Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
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
"rate_limit_per_user"
Parser
(Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
-> Parser (Maybe ChannelId)
-> Parser
(Maybe ChannelId
-> Maybe ThreadMetadata -> Maybe ThreadMember -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"last_message_id"
Parser
(Maybe ChannelId
-> Maybe ThreadMetadata -> Maybe ThreadMember -> Channel)
-> Parser (Maybe ChannelId)
-> Parser (Maybe ThreadMetadata -> Maybe ThreadMember -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"parent_id"
Parser (Maybe ThreadMetadata -> Maybe ThreadMember -> Channel)
-> Parser (Maybe ThreadMetadata)
-> Parser (Maybe ThreadMember -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ThreadMetadata)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"thread_metadata"
Parser (Maybe ThreadMember -> Channel)
-> Parser (Maybe ThreadMember) -> Parser Channel
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ThreadMember)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"member"
Int
11 -> ChannelId
-> ChannelId
-> Maybe Text
-> Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel
ChannelPublicThread (ChannelId
-> ChannelId
-> Maybe Text
-> Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
-> Parser ChannelId
-> Parser
(ChannelId
-> Maybe Text
-> Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
oObject -> Key -> Parser ChannelId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser
(ChannelId
-> Maybe Text
-> Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
-> Parser ChannelId
-> Parser
(Maybe Text
-> Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"guild_id" Parser (Maybe ChannelId) -> ChannelId -> Parser ChannelId
forall a. Parser (Maybe a) -> a -> Parser a
.!= ChannelId
0
Parser
(Maybe Text
-> Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
-> Parser (Maybe Text)
-> Parser
(Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
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
"name"
Parser
(Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
-> Parser (Maybe Integer)
-> Parser
(Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
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
"rate_limit_per_user"
Parser
(Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
-> Parser (Maybe ChannelId)
-> Parser
(Maybe ChannelId
-> Maybe ThreadMetadata -> Maybe ThreadMember -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"last_message_id"
Parser
(Maybe ChannelId
-> Maybe ThreadMetadata -> Maybe ThreadMember -> Channel)
-> Parser (Maybe ChannelId)
-> Parser (Maybe ThreadMetadata -> Maybe ThreadMember -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"parent_id"
Parser (Maybe ThreadMetadata -> Maybe ThreadMember -> Channel)
-> Parser (Maybe ThreadMetadata)
-> Parser (Maybe ThreadMember -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ThreadMetadata)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"thread_metadata"
Parser (Maybe ThreadMember -> Channel)
-> Parser (Maybe ThreadMember) -> Parser Channel
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ThreadMember)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"member"
Int
12 -> ChannelId
-> ChannelId
-> Maybe Text
-> Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel
ChannelPrivateThread (ChannelId
-> ChannelId
-> Maybe Text
-> Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
-> Parser ChannelId
-> Parser
(ChannelId
-> Maybe Text
-> Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
oObject -> Key -> Parser ChannelId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser
(ChannelId
-> Maybe Text
-> Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
-> Parser ChannelId
-> Parser
(Maybe Text
-> Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"guild_id" Parser (Maybe ChannelId) -> ChannelId -> Parser ChannelId
forall a. Parser (Maybe a) -> a -> Parser a
.!= ChannelId
0
Parser
(Maybe Text
-> Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
-> Parser (Maybe Text)
-> Parser
(Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
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
"name"
Parser
(Maybe Integer
-> Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
-> Parser (Maybe Integer)
-> Parser
(Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
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
"rate_limit_per_user"
Parser
(Maybe ChannelId
-> Maybe ChannelId
-> Maybe ThreadMetadata
-> Maybe ThreadMember
-> Channel)
-> Parser (Maybe ChannelId)
-> Parser
(Maybe ChannelId
-> Maybe ThreadMetadata -> Maybe ThreadMember -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"last_message_id"
Parser
(Maybe ChannelId
-> Maybe ThreadMetadata -> Maybe ThreadMember -> Channel)
-> Parser (Maybe ChannelId)
-> Parser (Maybe ThreadMetadata -> Maybe ThreadMember -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"parent_id"
Parser (Maybe ThreadMetadata -> Maybe ThreadMember -> Channel)
-> Parser (Maybe ThreadMetadata)
-> Parser (Maybe ThreadMember -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ThreadMetadata)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"thread_metadata"
Parser (Maybe ThreadMember -> Channel)
-> Parser (Maybe ThreadMember) -> Parser Channel
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ThreadMember)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"member"
Int
13 ->
ChannelId -> ChannelId -> ChannelId -> Text -> Channel
ChannelStage (ChannelId -> ChannelId -> ChannelId -> Text -> Channel)
-> Parser ChannelId
-> Parser (ChannelId -> ChannelId -> Text -> Channel)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser ChannelId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser (ChannelId -> ChannelId -> Text -> Channel)
-> Parser ChannelId -> Parser (ChannelId -> Text -> Channel)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"guild_id" Parser (Maybe ChannelId) -> ChannelId -> Parser ChannelId
forall a. Parser (Maybe a) -> a -> Parser a
.!= ChannelId
0
Parser (ChannelId -> Text -> Channel)
-> Parser ChannelId -> Parser (Text -> Channel)
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
"id"
Parser (Text -> Channel) -> Parser Text -> Parser Channel
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
"topic" Parser (Maybe Text) -> Text -> Parser Text
forall a. Parser (Maybe a) -> a -> Parser a
.!= Text
""
Int
_ -> ChannelId -> Text -> Channel
ChannelUnknownType (ChannelId -> Text -> Channel)
-> Parser ChannelId -> Parser (Text -> Channel)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser ChannelId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser (Text -> Channel) -> Parser Text -> Parser Channel
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Text -> Parser Text
forall (f :: * -> *) a. Applicative f => a -> f a
pure (String -> Text
T.pack (Object -> String
forall a. Show a => a -> String
show Object
o))
instance ToJSON Channel where
toJSON :: Channel -> Value
toJSON ChannelText{Bool
Integer
[Overwrite]
Maybe ChannelId
Text
ChannelId
channelParentId :: Maybe ChannelId
channelLastMessage :: Maybe ChannelId
channelTopic :: Text
channelNSFW :: Bool
channelUserRateLimit :: Integer
channelPermissions :: [Overwrite]
channelPosition :: Integer
channelName :: Text
channelGuild :: ChannelId
channelId :: ChannelId
channelParentId :: Channel -> Maybe ChannelId
channelLastMessage :: Channel -> Maybe ChannelId
channelTopic :: Channel -> Text
channelNSFW :: Channel -> Bool
channelUserRateLimit :: Channel -> Integer
channelPermissions :: Channel -> [Overwrite]
channelPosition :: Channel -> Integer
channelName :: Channel -> Text
channelGuild :: Channel -> ChannelId
channelId :: Channel -> ChannelId
..} = [Pair] -> Value
object [(Key
name,Value
value) | (Key
name, Just Value
value) <-
[ (Key
"id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelId)
, (Key
"guild_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelGuild)
, (Key
"name", Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Maybe Text
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
channelName)
, (Key
"position", Integer -> Value
forall a. ToJSON a => a -> Value
toJSON (Integer -> Value) -> Maybe Integer -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Integer -> Maybe Integer
forall (f :: * -> *) a. Applicative f => a -> f a
pure Integer
channelPosition)
, (Key
"rate_limit_per_user", Integer -> Value
forall a. ToJSON a => a -> Value
toJSON (Integer -> Value) -> Maybe Integer -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Integer -> Maybe Integer
forall (f :: * -> *) a. Applicative f => a -> f a
pure Integer
channelUserRateLimit)
, (Key
"nsfw", Bool -> Value
forall a. ToJSON a => a -> Value
toJSON (Bool -> Value) -> Maybe Bool -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Bool -> Maybe Bool
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
channelNSFW)
, (Key
"permission_overwrites", [Overwrite] -> Value
forall a. ToJSON a => a -> Value
toJSON ([Overwrite] -> Value) -> Maybe [Overwrite] -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Overwrite] -> Maybe [Overwrite]
forall (f :: * -> *) a. Applicative f => a -> f a
pure [Overwrite]
channelPermissions)
, (Key
"topic", Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Maybe Text
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
channelTopic)
, (Key
"last_message_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ChannelId
channelLastMessage)
, (Key
"parent_id", Maybe ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (Maybe ChannelId -> Value)
-> Maybe (Maybe ChannelId) -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ChannelId -> Maybe (Maybe ChannelId)
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe ChannelId
channelParentId)
] ]
toJSON ChannelNews{Bool
Integer
[Overwrite]
Maybe ChannelId
Text
ChannelId
channelLastMessage :: Maybe ChannelId
channelTopic :: Text
channelNSFW :: Bool
channelPermissions :: [Overwrite]
channelPosition :: Integer
channelName :: Text
channelGuild :: ChannelId
channelId :: ChannelId
channelLastMessage :: Channel -> Maybe ChannelId
channelTopic :: Channel -> Text
channelNSFW :: Channel -> Bool
channelPermissions :: Channel -> [Overwrite]
channelPosition :: Channel -> Integer
channelName :: Channel -> Text
channelGuild :: Channel -> ChannelId
channelId :: Channel -> ChannelId
..} = [Pair] -> Value
object [(Key
name,Value
value) | (Key
name, Just Value
value) <-
[ (Key
"id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelId)
, (Key
"guild_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelGuild)
, (Key
"name", Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Maybe Text
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
channelName)
, (Key
"position", Integer -> Value
forall a. ToJSON a => a -> Value
toJSON (Integer -> Value) -> Maybe Integer -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Integer -> Maybe Integer
forall (f :: * -> *) a. Applicative f => a -> f a
pure Integer
channelPosition)
, (Key
"permission_overwrites", [Overwrite] -> Value
forall a. ToJSON a => a -> Value
toJSON ([Overwrite] -> Value) -> Maybe [Overwrite] -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Overwrite] -> Maybe [Overwrite]
forall (f :: * -> *) a. Applicative f => a -> f a
pure [Overwrite]
channelPermissions)
, (Key
"nsfw", Bool -> Value
forall a. ToJSON a => a -> Value
toJSON (Bool -> Value) -> Maybe Bool -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Bool -> Maybe Bool
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
channelNSFW)
, (Key
"topic", Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Maybe Text
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
channelTopic)
, (Key
"last_message_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ChannelId
channelLastMessage)
] ]
toJSON ChannelStorePage{Bool
Integer
[Overwrite]
Maybe ChannelId
Text
ChannelId
channelParentId :: Maybe ChannelId
channelPermissions :: [Overwrite]
channelNSFW :: Bool
channelPosition :: Integer
channelName :: Text
channelGuild :: ChannelId
channelId :: ChannelId
channelParentId :: Channel -> Maybe ChannelId
channelNSFW :: Channel -> Bool
channelPermissions :: Channel -> [Overwrite]
channelPosition :: Channel -> Integer
channelName :: Channel -> Text
channelGuild :: Channel -> ChannelId
channelId :: Channel -> ChannelId
..} = [Pair] -> Value
object [(Key
name,Value
value) | (Key
name, Just Value
value) <-
[ (Key
"id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelId)
, (Key
"guild_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelGuild)
, (Key
"name", Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Maybe Text
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
channelName)
, (Key
"nsfw", Bool -> Value
forall a. ToJSON a => a -> Value
toJSON (Bool -> Value) -> Maybe Bool -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Bool -> Maybe Bool
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
channelNSFW)
, (Key
"position", Integer -> Value
forall a. ToJSON a => a -> Value
toJSON (Integer -> Value) -> Maybe Integer -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Integer -> Maybe Integer
forall (f :: * -> *) a. Applicative f => a -> f a
pure Integer
channelPosition)
, (Key
"permission_overwrites", [Overwrite] -> Value
forall a. ToJSON a => a -> Value
toJSON ([Overwrite] -> Value) -> Maybe [Overwrite] -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Overwrite] -> Maybe [Overwrite]
forall (f :: * -> *) a. Applicative f => a -> f a
pure [Overwrite]
channelPermissions)
] ]
toJSON ChannelDirectMessage{[User]
Maybe ChannelId
ChannelId
channelLastMessage :: Maybe ChannelId
channelRecipients :: [User]
channelId :: ChannelId
channelRecipients :: Channel -> [User]
channelLastMessage :: Channel -> Maybe ChannelId
channelId :: Channel -> ChannelId
..} = [Pair] -> Value
object [(Key
name,Value
value) | (Key
name, Just Value
value) <-
[ (Key
"id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelId)
, (Key
"recipients", [User] -> Value
forall a. ToJSON a => a -> Value
toJSON ([User] -> Value) -> Maybe [User] -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [User] -> Maybe [User]
forall (f :: * -> *) a. Applicative f => a -> f a
pure [User]
channelRecipients)
, (Key
"last_message_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ChannelId
channelLastMessage)
] ]
toJSON ChannelVoice{Bool
Integer
[Overwrite]
Maybe ChannelId
Text
ChannelId
channelParentId :: Maybe ChannelId
channelUserLimit :: Integer
channelBitRate :: Integer
channelNSFW :: Bool
channelPermissions :: [Overwrite]
channelPosition :: Integer
channelName :: Text
channelGuild :: ChannelId
channelId :: ChannelId
channelUserLimit :: Channel -> Integer
channelBitRate :: Channel -> Integer
channelParentId :: Channel -> Maybe ChannelId
channelNSFW :: Channel -> Bool
channelPermissions :: Channel -> [Overwrite]
channelPosition :: Channel -> Integer
channelName :: Channel -> Text
channelGuild :: Channel -> ChannelId
channelId :: Channel -> ChannelId
..} = [Pair] -> Value
object [(Key
name,Value
value) | (Key
name, Just Value
value) <-
[ (Key
"id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelId)
, (Key
"guild_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelGuild)
, (Key
"name", Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Maybe Text
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
channelName)
, (Key
"position", Integer -> Value
forall a. ToJSON a => a -> Value
toJSON (Integer -> Value) -> Maybe Integer -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Integer -> Maybe Integer
forall (f :: * -> *) a. Applicative f => a -> f a
pure Integer
channelPosition)
, (Key
"nsfw", Bool -> Value
forall a. ToJSON a => a -> Value
toJSON (Bool -> Value) -> Maybe Bool -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Bool -> Maybe Bool
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
channelNSFW)
, (Key
"permission_overwrites", [Overwrite] -> Value
forall a. ToJSON a => a -> Value
toJSON ([Overwrite] -> Value) -> Maybe [Overwrite] -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Overwrite] -> Maybe [Overwrite]
forall (f :: * -> *) a. Applicative f => a -> f a
pure [Overwrite]
channelPermissions)
, (Key
"bitrate", Integer -> Value
forall a. ToJSON a => a -> Value
toJSON (Integer -> Value) -> Maybe Integer -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Integer -> Maybe Integer
forall (f :: * -> *) a. Applicative f => a -> f a
pure Integer
channelBitRate)
, (Key
"user_limit", Integer -> Value
forall a. ToJSON a => a -> Value
toJSON (Integer -> Value) -> Maybe Integer -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Integer -> Maybe Integer
forall (f :: * -> *) a. Applicative f => a -> f a
pure Integer
channelUserLimit)
] ]
toJSON ChannelGroupDM{[User]
Maybe ChannelId
ChannelId
channelLastMessage :: Maybe ChannelId
channelRecipients :: [User]
channelId :: ChannelId
channelRecipients :: Channel -> [User]
channelLastMessage :: Channel -> Maybe ChannelId
channelId :: Channel -> ChannelId
..} = [Pair] -> Value
object [(Key
name,Value
value) | (Key
name, Just Value
value) <-
[ (Key
"id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelId)
, (Key
"recipients", [User] -> Value
forall a. ToJSON a => a -> Value
toJSON ([User] -> Value) -> Maybe [User] -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [User] -> Maybe [User]
forall (f :: * -> *) a. Applicative f => a -> f a
pure [User]
channelRecipients)
, (Key
"last_message_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ChannelId
channelLastMessage)
] ]
toJSON ChannelGuildCategory{Integer
[Overwrite]
Text
ChannelId
channelPermissions :: [Overwrite]
channelPosition :: Integer
channelName :: Text
channelGuild :: ChannelId
channelId :: ChannelId
channelPermissions :: Channel -> [Overwrite]
channelPosition :: Channel -> Integer
channelName :: Channel -> Text
channelGuild :: Channel -> ChannelId
channelId :: Channel -> ChannelId
..} = [Pair] -> Value
object [(Key
name,Value
value) | (Key
name, Just Value
value) <-
[ (Key
"id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelId)
, (Key
"name", Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Maybe Text
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
channelName)
, (Key
"guild_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelGuild)
] ]
toJSON ChannelStage{Text
ChannelId
channelStageTopic :: Text
channelStageId :: ChannelId
channelGuild :: ChannelId
channelId :: ChannelId
channelStageTopic :: Channel -> Text
channelStageId :: Channel -> ChannelId
channelGuild :: Channel -> ChannelId
channelId :: Channel -> ChannelId
..} = [Pair] -> Value
object [(Key
name,Value
value) | (Key
name, Just Value
value) <-
[ (Key
"id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelId)
, (Key
"guild_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelGuild)
, (Key
"channel_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelStageId)
, (Key
"topic", Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Maybe Text
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
channelStageTopic)
] ]
toJSON ChannelNewsThread{Maybe Integer
Maybe Text
Maybe ChannelId
Maybe ThreadMember
Maybe ThreadMetadata
ChannelId
channelThreadMember :: Maybe ThreadMember
channelThreadMetadata :: Maybe ThreadMetadata
channelParentId :: Maybe ChannelId
channelLastMessage :: Maybe ChannelId
channelUserRateLimitThread :: Maybe Integer
channelThreadName :: Maybe Text
channelGuild :: ChannelId
channelId :: ChannelId
channelThreadMember :: Channel -> Maybe ThreadMember
channelThreadMetadata :: Channel -> Maybe ThreadMetadata
channelUserRateLimitThread :: Channel -> Maybe Integer
channelThreadName :: Channel -> Maybe Text
channelParentId :: Channel -> Maybe ChannelId
channelLastMessage :: Channel -> Maybe ChannelId
channelGuild :: Channel -> ChannelId
channelId :: Channel -> ChannelId
..} = [Pair] -> Value
object [(Key
name,Value
value) | (Key
name, Just Value
value) <-
[ (Key
"id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelId)
, (Key
"guild_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelGuild)
, (Key
"name", Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Text
channelThreadName)
, (Key
"rate_limit_per_user", Integer -> Value
forall a. ToJSON a => a -> Value
toJSON (Integer -> Value) -> Maybe Integer -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Integer
channelUserRateLimitThread)
, (Key
"last_message_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ChannelId
channelLastMessage)
, (Key
"parent_id", Maybe ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (Maybe ChannelId -> Value)
-> Maybe (Maybe ChannelId) -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ChannelId -> Maybe (Maybe ChannelId)
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe ChannelId
channelParentId)
, (Key
"thread_metadata", ThreadMetadata -> Value
forall a. ToJSON a => a -> Value
toJSON (ThreadMetadata -> Value) -> Maybe ThreadMetadata -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ThreadMetadata
channelThreadMetadata)
, (Key
"member", ThreadMember -> Value
forall a. ToJSON a => a -> Value
toJSON (ThreadMember -> Value) -> Maybe ThreadMember -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ThreadMember
channelThreadMember)
] ]
toJSON ChannelPublicThread{Maybe Integer
Maybe Text
Maybe ChannelId
Maybe ThreadMember
Maybe ThreadMetadata
ChannelId
channelThreadMember :: Maybe ThreadMember
channelThreadMetadata :: Maybe ThreadMetadata
channelParentId :: Maybe ChannelId
channelLastMessage :: Maybe ChannelId
channelUserRateLimitThread :: Maybe Integer
channelThreadName :: Maybe Text
channelGuild :: ChannelId
channelId :: ChannelId
channelThreadMember :: Channel -> Maybe ThreadMember
channelThreadMetadata :: Channel -> Maybe ThreadMetadata
channelUserRateLimitThread :: Channel -> Maybe Integer
channelThreadName :: Channel -> Maybe Text
channelParentId :: Channel -> Maybe ChannelId
channelLastMessage :: Channel -> Maybe ChannelId
channelGuild :: Channel -> ChannelId
channelId :: Channel -> ChannelId
..} = [Pair] -> Value
object [(Key
name,Value
value) | (Key
name, Just Value
value) <-
[ (Key
"id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelId)
, (Key
"guild_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelGuild)
, (Key
"name", Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Text
channelThreadName)
, (Key
"rate_limit_per_user", Integer -> Value
forall a. ToJSON a => a -> Value
toJSON (Integer -> Value) -> Maybe Integer -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Integer
channelUserRateLimitThread)
, (Key
"last_message_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ChannelId
channelLastMessage)
, (Key
"parent_id", Maybe ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (Maybe ChannelId -> Value)
-> Maybe (Maybe ChannelId) -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ChannelId -> Maybe (Maybe ChannelId)
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe ChannelId
channelParentId)
, (Key
"thread_metadata", ThreadMetadata -> Value
forall a. ToJSON a => a -> Value
toJSON (ThreadMetadata -> Value) -> Maybe ThreadMetadata -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ThreadMetadata
channelThreadMetadata)
, (Key
"member", ThreadMember -> Value
forall a. ToJSON a => a -> Value
toJSON (ThreadMember -> Value) -> Maybe ThreadMember -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ThreadMember
channelThreadMember)
] ]
toJSON ChannelPrivateThread{Maybe Integer
Maybe Text
Maybe ChannelId
Maybe ThreadMember
Maybe ThreadMetadata
ChannelId
channelThreadMember :: Maybe ThreadMember
channelThreadMetadata :: Maybe ThreadMetadata
channelParentId :: Maybe ChannelId
channelLastMessage :: Maybe ChannelId
channelUserRateLimitThread :: Maybe Integer
channelThreadName :: Maybe Text
channelGuild :: ChannelId
channelId :: ChannelId
channelThreadMember :: Channel -> Maybe ThreadMember
channelThreadMetadata :: Channel -> Maybe ThreadMetadata
channelUserRateLimitThread :: Channel -> Maybe Integer
channelThreadName :: Channel -> Maybe Text
channelParentId :: Channel -> Maybe ChannelId
channelLastMessage :: Channel -> Maybe ChannelId
channelGuild :: Channel -> ChannelId
channelId :: Channel -> ChannelId
..} = [Pair] -> Value
object [(Key
name,Value
value) | (Key
name, Just Value
value) <-
[ (Key
"id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelId)
, (Key
"guild_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelGuild)
, (Key
"name", Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Text
channelThreadName)
, (Key
"rate_limit_per_user", Integer -> Value
forall a. ToJSON a => a -> Value
toJSON (Integer -> Value) -> Maybe Integer -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Integer
channelUserRateLimitThread)
, (Key
"last_message_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ChannelId
channelLastMessage)
, (Key
"parent_id", Maybe ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (Maybe ChannelId -> Value)
-> Maybe (Maybe ChannelId) -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ChannelId -> Maybe (Maybe ChannelId)
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe ChannelId
channelParentId)
, (Key
"thread_metadata", ThreadMetadata -> Value
forall a. ToJSON a => a -> Value
toJSON (ThreadMetadata -> Value) -> Maybe ThreadMetadata -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ThreadMetadata
channelThreadMetadata)
, (Key
"member", ThreadMember -> Value
forall a. ToJSON a => a -> Value
toJSON (ThreadMember -> Value) -> Maybe ThreadMember -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ThreadMember
channelThreadMember)
] ]
toJSON ChannelUnknownType{Text
ChannelId
channelJSON :: Text
channelId :: ChannelId
channelJSON :: Channel -> Text
channelId :: Channel -> ChannelId
..} = [Pair] -> Value
object [(Key
name,Value
value) | (Key
name, Just Value
value) <-
[ (Key
"id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
channelId)
, (Key
"json", Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Maybe Text
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
channelJSON)
] ]
channelIsInGuild :: Channel -> Bool
channelIsInGuild :: Channel -> Bool
channelIsInGuild Channel
c = case Channel
c of
ChannelGuildCategory{} -> Bool
True
ChannelText{} -> Bool
True
ChannelVoice{} -> Bool
True
ChannelNews{} -> Bool
True
ChannelStorePage{} -> Bool
True
ChannelNewsThread{} -> Bool
True
ChannelPublicThread{} -> Bool
True
ChannelPrivateThread{} -> Bool
True
Channel
_ -> Bool
False
data Overwrite = Overwrite
{ Overwrite -> ChannelId
overwriteId :: OverwriteId
, Overwrite -> Integer
overwriteType :: Integer
, Overwrite -> Text
overwriteAllow :: T.Text
, Overwrite -> Text
overwriteDeny :: T.Text
} deriving (Int -> Overwrite -> ShowS
[Overwrite] -> ShowS
Overwrite -> String
(Int -> Overwrite -> ShowS)
-> (Overwrite -> String)
-> ([Overwrite] -> ShowS)
-> Show Overwrite
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Overwrite] -> ShowS
$cshowList :: [Overwrite] -> ShowS
show :: Overwrite -> String
$cshow :: Overwrite -> String
showsPrec :: Int -> Overwrite -> ShowS
$cshowsPrec :: Int -> Overwrite -> ShowS
Show, ReadPrec [Overwrite]
ReadPrec Overwrite
Int -> ReadS Overwrite
ReadS [Overwrite]
(Int -> ReadS Overwrite)
-> ReadS [Overwrite]
-> ReadPrec Overwrite
-> ReadPrec [Overwrite]
-> Read Overwrite
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Overwrite]
$creadListPrec :: ReadPrec [Overwrite]
readPrec :: ReadPrec Overwrite
$creadPrec :: ReadPrec Overwrite
readList :: ReadS [Overwrite]
$creadList :: ReadS [Overwrite]
readsPrec :: Int -> ReadS Overwrite
$creadsPrec :: Int -> ReadS Overwrite
Read, Overwrite -> Overwrite -> Bool
(Overwrite -> Overwrite -> Bool)
-> (Overwrite -> Overwrite -> Bool) -> Eq Overwrite
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Overwrite -> Overwrite -> Bool
$c/= :: Overwrite -> Overwrite -> Bool
== :: Overwrite -> Overwrite -> Bool
$c== :: Overwrite -> Overwrite -> Bool
Eq, Eq Overwrite
Eq Overwrite
-> (Overwrite -> Overwrite -> Ordering)
-> (Overwrite -> Overwrite -> Bool)
-> (Overwrite -> Overwrite -> Bool)
-> (Overwrite -> Overwrite -> Bool)
-> (Overwrite -> Overwrite -> Bool)
-> (Overwrite -> Overwrite -> Overwrite)
-> (Overwrite -> Overwrite -> Overwrite)
-> Ord Overwrite
Overwrite -> Overwrite -> Bool
Overwrite -> Overwrite -> Ordering
Overwrite -> Overwrite -> Overwrite
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
min :: Overwrite -> Overwrite -> Overwrite
$cmin :: Overwrite -> Overwrite -> Overwrite
max :: Overwrite -> Overwrite -> Overwrite
$cmax :: Overwrite -> Overwrite -> Overwrite
>= :: Overwrite -> Overwrite -> Bool
$c>= :: Overwrite -> Overwrite -> Bool
> :: Overwrite -> Overwrite -> Bool
$c> :: Overwrite -> Overwrite -> Bool
<= :: Overwrite -> Overwrite -> Bool
$c<= :: Overwrite -> Overwrite -> Bool
< :: Overwrite -> Overwrite -> Bool
$c< :: Overwrite -> Overwrite -> Bool
compare :: Overwrite -> Overwrite -> Ordering
$ccompare :: Overwrite -> Overwrite -> Ordering
$cp1Ord :: Eq Overwrite
Ord)
instance FromJSON Overwrite where
parseJSON :: Value -> Parser Overwrite
parseJSON = String -> (Object -> Parser Overwrite) -> Value -> Parser Overwrite
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"Overwrite" ((Object -> Parser Overwrite) -> Value -> Parser Overwrite)
-> (Object -> Parser Overwrite) -> Value -> Parser Overwrite
forall a b. (a -> b) -> a -> b
$ \Object
o ->
ChannelId -> Integer -> Text -> Text -> Overwrite
Overwrite (ChannelId -> Integer -> Text -> Text -> Overwrite)
-> Parser ChannelId
-> Parser (Integer -> Text -> Text -> Overwrite)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser ChannelId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser (Integer -> Text -> Text -> Overwrite)
-> Parser Integer -> Parser (Text -> Text -> Overwrite)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"type"
Parser (Text -> Text -> Overwrite)
-> Parser Text -> Parser (Text -> Overwrite)
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
"allow"
Parser (Text -> Overwrite) -> Parser Text -> Parser Overwrite
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
"deny"
instance ToJSON Overwrite where
toJSON :: Overwrite -> Value
toJSON Overwrite{Integer
Text
ChannelId
overwriteDeny :: Text
overwriteAllow :: Text
overwriteType :: Integer
overwriteId :: ChannelId
overwriteDeny :: Overwrite -> Text
overwriteAllow :: Overwrite -> Text
overwriteType :: Overwrite -> Integer
overwriteId :: Overwrite -> ChannelId
..} = [Pair] -> Value
object
[ (Key
"id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON ChannelId
overwriteId)
, (Key
"type", Integer -> Value
forall a. ToJSON a => a -> Value
toJSON Integer
overwriteType)
, (Key
"allow", Text -> Value
forall a. ToJSON a => a -> Value
toJSON Text
overwriteAllow)
, (Key
"deny", Text -> Value
forall a. ToJSON a => a -> Value
toJSON Text
overwriteDeny)
]
data ThreadMetadata = ThreadMetadata
{ ThreadMetadata -> Bool
threadMetadataArchived :: Bool
, ThreadMetadata -> Integer
threadMetadataAutoArchive :: Integer
, ThreadMetadata -> UTCTime
threadMetadataArchiveTime :: UTCTime
, ThreadMetadata -> Bool
threadMetadataLocked :: Bool
, ThreadMetadata -> Maybe Bool
threadMetadataInvitable :: Maybe Bool
, ThreadMetadata -> Maybe UTCTime
threadMetadataCreateTime :: Maybe UTCTime
} deriving (Int -> ThreadMetadata -> ShowS
[ThreadMetadata] -> ShowS
ThreadMetadata -> String
(Int -> ThreadMetadata -> ShowS)
-> (ThreadMetadata -> String)
-> ([ThreadMetadata] -> ShowS)
-> Show ThreadMetadata
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ThreadMetadata] -> ShowS
$cshowList :: [ThreadMetadata] -> ShowS
show :: ThreadMetadata -> String
$cshow :: ThreadMetadata -> String
showsPrec :: Int -> ThreadMetadata -> ShowS
$cshowsPrec :: Int -> ThreadMetadata -> ShowS
Show, ReadPrec [ThreadMetadata]
ReadPrec ThreadMetadata
Int -> ReadS ThreadMetadata
ReadS [ThreadMetadata]
(Int -> ReadS ThreadMetadata)
-> ReadS [ThreadMetadata]
-> ReadPrec ThreadMetadata
-> ReadPrec [ThreadMetadata]
-> Read ThreadMetadata
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ThreadMetadata]
$creadListPrec :: ReadPrec [ThreadMetadata]
readPrec :: ReadPrec ThreadMetadata
$creadPrec :: ReadPrec ThreadMetadata
readList :: ReadS [ThreadMetadata]
$creadList :: ReadS [ThreadMetadata]
readsPrec :: Int -> ReadS ThreadMetadata
$creadsPrec :: Int -> ReadS ThreadMetadata
Read, ThreadMetadata -> ThreadMetadata -> Bool
(ThreadMetadata -> ThreadMetadata -> Bool)
-> (ThreadMetadata -> ThreadMetadata -> Bool) -> Eq ThreadMetadata
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ThreadMetadata -> ThreadMetadata -> Bool
$c/= :: ThreadMetadata -> ThreadMetadata -> Bool
== :: ThreadMetadata -> ThreadMetadata -> Bool
$c== :: ThreadMetadata -> ThreadMetadata -> Bool
Eq, Eq ThreadMetadata
Eq ThreadMetadata
-> (ThreadMetadata -> ThreadMetadata -> Ordering)
-> (ThreadMetadata -> ThreadMetadata -> Bool)
-> (ThreadMetadata -> ThreadMetadata -> Bool)
-> (ThreadMetadata -> ThreadMetadata -> Bool)
-> (ThreadMetadata -> ThreadMetadata -> Bool)
-> (ThreadMetadata -> ThreadMetadata -> ThreadMetadata)
-> (ThreadMetadata -> ThreadMetadata -> ThreadMetadata)
-> Ord ThreadMetadata
ThreadMetadata -> ThreadMetadata -> Bool
ThreadMetadata -> ThreadMetadata -> Ordering
ThreadMetadata -> ThreadMetadata -> ThreadMetadata
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
min :: ThreadMetadata -> ThreadMetadata -> ThreadMetadata
$cmin :: ThreadMetadata -> ThreadMetadata -> ThreadMetadata
max :: ThreadMetadata -> ThreadMetadata -> ThreadMetadata
$cmax :: ThreadMetadata -> ThreadMetadata -> ThreadMetadata
>= :: ThreadMetadata -> ThreadMetadata -> Bool
$c>= :: ThreadMetadata -> ThreadMetadata -> Bool
> :: ThreadMetadata -> ThreadMetadata -> Bool
$c> :: ThreadMetadata -> ThreadMetadata -> Bool
<= :: ThreadMetadata -> ThreadMetadata -> Bool
$c<= :: ThreadMetadata -> ThreadMetadata -> Bool
< :: ThreadMetadata -> ThreadMetadata -> Bool
$c< :: ThreadMetadata -> ThreadMetadata -> Bool
compare :: ThreadMetadata -> ThreadMetadata -> Ordering
$ccompare :: ThreadMetadata -> ThreadMetadata -> Ordering
$cp1Ord :: Eq ThreadMetadata
Ord)
instance FromJSON ThreadMetadata where
parseJSON :: Value -> Parser ThreadMetadata
parseJSON = String
-> (Object -> Parser ThreadMetadata)
-> Value
-> Parser ThreadMetadata
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"ThreadMetadata" ((Object -> Parser ThreadMetadata)
-> Value -> Parser ThreadMetadata)
-> (Object -> Parser ThreadMetadata)
-> Value
-> Parser ThreadMetadata
forall a b. (a -> b) -> a -> b
$ \Object
o ->
Bool
-> Integer
-> UTCTime
-> Bool
-> Maybe Bool
-> Maybe UTCTime
-> ThreadMetadata
ThreadMetadata (Bool
-> Integer
-> UTCTime
-> Bool
-> Maybe Bool
-> Maybe UTCTime
-> ThreadMetadata)
-> Parser Bool
-> Parser
(Integer
-> UTCTime
-> Bool
-> Maybe Bool
-> Maybe UTCTime
-> ThreadMetadata)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser Bool
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"archived"
Parser
(Integer
-> UTCTime
-> Bool
-> Maybe Bool
-> Maybe UTCTime
-> ThreadMetadata)
-> Parser Integer
-> Parser
(UTCTime -> Bool -> Maybe Bool -> Maybe UTCTime -> ThreadMetadata)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"auto_archive_duration"
Parser
(UTCTime -> Bool -> Maybe Bool -> Maybe UTCTime -> ThreadMetadata)
-> Parser UTCTime
-> Parser (Bool -> Maybe Bool -> Maybe UTCTime -> ThreadMetadata)
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
"archive_timestamp"
Parser (Bool -> Maybe Bool -> Maybe UTCTime -> ThreadMetadata)
-> Parser Bool
-> Parser (Maybe Bool -> Maybe UTCTime -> ThreadMetadata)
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
"locked"
Parser (Maybe Bool -> Maybe UTCTime -> ThreadMetadata)
-> Parser (Maybe Bool) -> Parser (Maybe UTCTime -> ThreadMetadata)
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
"invitable"
Parser (Maybe UTCTime -> ThreadMetadata)
-> Parser (Maybe UTCTime) -> Parser ThreadMetadata
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
"create_timestamp"
instance ToJSON ThreadMetadata where
toJSON :: ThreadMetadata -> Value
toJSON ThreadMetadata{Bool
Integer
Maybe Bool
Maybe UTCTime
UTCTime
threadMetadataCreateTime :: Maybe UTCTime
threadMetadataInvitable :: Maybe Bool
threadMetadataLocked :: Bool
threadMetadataArchiveTime :: UTCTime
threadMetadataAutoArchive :: Integer
threadMetadataArchived :: Bool
threadMetadataCreateTime :: ThreadMetadata -> Maybe UTCTime
threadMetadataInvitable :: ThreadMetadata -> Maybe Bool
threadMetadataLocked :: ThreadMetadata -> Bool
threadMetadataArchiveTime :: ThreadMetadata -> UTCTime
threadMetadataAutoArchive :: ThreadMetadata -> Integer
threadMetadataArchived :: ThreadMetadata -> Bool
..} = [Pair] -> Value
object [(Key
name,Value
value) | (Key
name, Just Value
value) <-
[ (Key
"archived", Bool -> Value
forall a. ToJSON a => a -> Value
toJSON (Bool -> Value) -> Maybe Bool -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Bool -> Maybe Bool
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
threadMetadataArchived)
, (Key
"auto_archive_duration", Integer -> Value
forall a. ToJSON a => a -> Value
toJSON (Integer -> Value) -> Maybe Integer -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Integer -> Maybe Integer
forall (f :: * -> *) a. Applicative f => a -> f a
pure Integer
threadMetadataAutoArchive)
, (Key
"archive_timestamp", UTCTime -> Value
forall a. ToJSON a => a -> Value
toJSON (UTCTime -> Value) -> Maybe UTCTime -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> UTCTime -> Maybe UTCTime
forall (f :: * -> *) a. Applicative f => a -> f a
pure UTCTime
threadMetadataArchiveTime)
, (Key
"locked", Bool -> Value
forall a. ToJSON a => a -> Value
toJSON (Bool -> Value) -> Maybe Bool -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Bool -> Maybe Bool
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
threadMetadataLocked)
, (Key
"invitable", Bool -> Value
forall a. ToJSON a => a -> Value
toJSON (Bool -> Value) -> Maybe Bool -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Bool
threadMetadataInvitable)
, (Key
"create_timestamp", Maybe UTCTime -> Value
forall a. ToJSON a => a -> Value
toJSON (Maybe UTCTime -> Value) -> Maybe (Maybe UTCTime) -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe UTCTime -> Maybe (Maybe UTCTime)
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe UTCTime
threadMetadataCreateTime)
] ]
data ThreadMember = ThreadMember
{ ThreadMember -> Maybe ChannelId
threadMemberThreadId :: Maybe ChannelId
, ThreadMember -> Maybe ChannelId
threadMemberUserId :: Maybe UserId
, ThreadMember -> UTCTime
threadMemberJoinTime :: UTCTime
, ThreadMember -> Integer
threadMemberFlags :: Integer
} deriving (Int -> ThreadMember -> ShowS
[ThreadMember] -> ShowS
ThreadMember -> String
(Int -> ThreadMember -> ShowS)
-> (ThreadMember -> String)
-> ([ThreadMember] -> ShowS)
-> Show ThreadMember
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ThreadMember] -> ShowS
$cshowList :: [ThreadMember] -> ShowS
show :: ThreadMember -> String
$cshow :: ThreadMember -> String
showsPrec :: Int -> ThreadMember -> ShowS
$cshowsPrec :: Int -> ThreadMember -> ShowS
Show, ReadPrec [ThreadMember]
ReadPrec ThreadMember
Int -> ReadS ThreadMember
ReadS [ThreadMember]
(Int -> ReadS ThreadMember)
-> ReadS [ThreadMember]
-> ReadPrec ThreadMember
-> ReadPrec [ThreadMember]
-> Read ThreadMember
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ThreadMember]
$creadListPrec :: ReadPrec [ThreadMember]
readPrec :: ReadPrec ThreadMember
$creadPrec :: ReadPrec ThreadMember
readList :: ReadS [ThreadMember]
$creadList :: ReadS [ThreadMember]
readsPrec :: Int -> ReadS ThreadMember
$creadsPrec :: Int -> ReadS ThreadMember
Read, ThreadMember -> ThreadMember -> Bool
(ThreadMember -> ThreadMember -> Bool)
-> (ThreadMember -> ThreadMember -> Bool) -> Eq ThreadMember
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ThreadMember -> ThreadMember -> Bool
$c/= :: ThreadMember -> ThreadMember -> Bool
== :: ThreadMember -> ThreadMember -> Bool
$c== :: ThreadMember -> ThreadMember -> Bool
Eq, Eq ThreadMember
Eq ThreadMember
-> (ThreadMember -> ThreadMember -> Ordering)
-> (ThreadMember -> ThreadMember -> Bool)
-> (ThreadMember -> ThreadMember -> Bool)
-> (ThreadMember -> ThreadMember -> Bool)
-> (ThreadMember -> ThreadMember -> Bool)
-> (ThreadMember -> ThreadMember -> ThreadMember)
-> (ThreadMember -> ThreadMember -> ThreadMember)
-> Ord ThreadMember
ThreadMember -> ThreadMember -> Bool
ThreadMember -> ThreadMember -> Ordering
ThreadMember -> ThreadMember -> ThreadMember
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
min :: ThreadMember -> ThreadMember -> ThreadMember
$cmin :: ThreadMember -> ThreadMember -> ThreadMember
max :: ThreadMember -> ThreadMember -> ThreadMember
$cmax :: ThreadMember -> ThreadMember -> ThreadMember
>= :: ThreadMember -> ThreadMember -> Bool
$c>= :: ThreadMember -> ThreadMember -> Bool
> :: ThreadMember -> ThreadMember -> Bool
$c> :: ThreadMember -> ThreadMember -> Bool
<= :: ThreadMember -> ThreadMember -> Bool
$c<= :: ThreadMember -> ThreadMember -> Bool
< :: ThreadMember -> ThreadMember -> Bool
$c< :: ThreadMember -> ThreadMember -> Bool
compare :: ThreadMember -> ThreadMember -> Ordering
$ccompare :: ThreadMember -> ThreadMember -> Ordering
$cp1Ord :: Eq ThreadMember
Ord)
instance FromJSON ThreadMember where
parseJSON :: Value -> Parser ThreadMember
parseJSON = String
-> (Object -> Parser ThreadMember) -> Value -> Parser ThreadMember
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"ThreadMember" ((Object -> Parser ThreadMember) -> Value -> Parser ThreadMember)
-> (Object -> Parser ThreadMember) -> Value -> Parser ThreadMember
forall a b. (a -> b) -> a -> b
$ \Object
o ->
Maybe ChannelId
-> Maybe ChannelId -> UTCTime -> Integer -> ThreadMember
ThreadMember (Maybe ChannelId
-> Maybe ChannelId -> UTCTime -> Integer -> ThreadMember)
-> Parser (Maybe ChannelId)
-> Parser (Maybe ChannelId -> UTCTime -> Integer -> ThreadMember)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"id"
Parser (Maybe ChannelId -> UTCTime -> Integer -> ThreadMember)
-> Parser (Maybe ChannelId)
-> Parser (UTCTime -> Integer -> ThreadMember)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"user_id"
Parser (UTCTime -> Integer -> ThreadMember)
-> Parser UTCTime -> Parser (Integer -> ThreadMember)
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
"join_timestamp"
Parser (Integer -> ThreadMember)
-> Parser Integer -> Parser ThreadMember
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"flags"
instance ToJSON ThreadMember where
toJSON :: ThreadMember -> Value
toJSON ThreadMember{Integer
Maybe ChannelId
UTCTime
threadMemberFlags :: Integer
threadMemberJoinTime :: UTCTime
threadMemberUserId :: Maybe ChannelId
threadMemberThreadId :: Maybe ChannelId
threadMemberFlags :: ThreadMember -> Integer
threadMemberJoinTime :: ThreadMember -> UTCTime
threadMemberUserId :: ThreadMember -> Maybe ChannelId
threadMemberThreadId :: ThreadMember -> Maybe ChannelId
..} = [Pair] -> Value
object [(Key
name,Value
value) | (Key
name, Just Value
value) <-
[ (Key
"id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ChannelId
threadMemberThreadId)
, (Key
"user_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ChannelId
threadMemberUserId)
, (Key
"join_timestamp", UTCTime -> Value
forall a. ToJSON a => a -> Value
toJSON (UTCTime -> Value) -> Maybe UTCTime -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> UTCTime -> Maybe UTCTime
forall (f :: * -> *) a. Applicative f => a -> f a
pure UTCTime
threadMemberJoinTime)
, (Key
"flags", Integer -> Value
forall a. ToJSON a => a -> Value
toJSON (Integer -> Value) -> Maybe Integer -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Integer -> Maybe Integer
forall (f :: * -> *) a. Applicative f => a -> f a
pure Integer
threadMemberFlags)
] ]
data ThreadListSyncFields = ThreadListSyncFields
{ ThreadListSyncFields -> ChannelId
threadListSyncFieldsGuildId :: GuildId
, ThreadListSyncFields -> Maybe [ChannelId]
threadListSyncFieldsChannelIds :: Maybe [ChannelId]
, ThreadListSyncFields -> [Channel]
threadListSyncFieldsThreads :: [Channel]
, ThreadListSyncFields -> [ThreadMember]
threadListSyncFieldsThreadMembers :: [ThreadMember]
} deriving (Int -> ThreadListSyncFields -> ShowS
[ThreadListSyncFields] -> ShowS
ThreadListSyncFields -> String
(Int -> ThreadListSyncFields -> ShowS)
-> (ThreadListSyncFields -> String)
-> ([ThreadListSyncFields] -> ShowS)
-> Show ThreadListSyncFields
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ThreadListSyncFields] -> ShowS
$cshowList :: [ThreadListSyncFields] -> ShowS
show :: ThreadListSyncFields -> String
$cshow :: ThreadListSyncFields -> String
showsPrec :: Int -> ThreadListSyncFields -> ShowS
$cshowsPrec :: Int -> ThreadListSyncFields -> ShowS
Show, ReadPrec [ThreadListSyncFields]
ReadPrec ThreadListSyncFields
Int -> ReadS ThreadListSyncFields
ReadS [ThreadListSyncFields]
(Int -> ReadS ThreadListSyncFields)
-> ReadS [ThreadListSyncFields]
-> ReadPrec ThreadListSyncFields
-> ReadPrec [ThreadListSyncFields]
-> Read ThreadListSyncFields
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ThreadListSyncFields]
$creadListPrec :: ReadPrec [ThreadListSyncFields]
readPrec :: ReadPrec ThreadListSyncFields
$creadPrec :: ReadPrec ThreadListSyncFields
readList :: ReadS [ThreadListSyncFields]
$creadList :: ReadS [ThreadListSyncFields]
readsPrec :: Int -> ReadS ThreadListSyncFields
$creadsPrec :: Int -> ReadS ThreadListSyncFields
Read, ThreadListSyncFields -> ThreadListSyncFields -> Bool
(ThreadListSyncFields -> ThreadListSyncFields -> Bool)
-> (ThreadListSyncFields -> ThreadListSyncFields -> Bool)
-> Eq ThreadListSyncFields
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ThreadListSyncFields -> ThreadListSyncFields -> Bool
$c/= :: ThreadListSyncFields -> ThreadListSyncFields -> Bool
== :: ThreadListSyncFields -> ThreadListSyncFields -> Bool
$c== :: ThreadListSyncFields -> ThreadListSyncFields -> Bool
Eq, Eq ThreadListSyncFields
Eq ThreadListSyncFields
-> (ThreadListSyncFields -> ThreadListSyncFields -> Ordering)
-> (ThreadListSyncFields -> ThreadListSyncFields -> Bool)
-> (ThreadListSyncFields -> ThreadListSyncFields -> Bool)
-> (ThreadListSyncFields -> ThreadListSyncFields -> Bool)
-> (ThreadListSyncFields -> ThreadListSyncFields -> Bool)
-> (ThreadListSyncFields
-> ThreadListSyncFields -> ThreadListSyncFields)
-> (ThreadListSyncFields
-> ThreadListSyncFields -> ThreadListSyncFields)
-> Ord ThreadListSyncFields
ThreadListSyncFields -> ThreadListSyncFields -> Bool
ThreadListSyncFields -> ThreadListSyncFields -> Ordering
ThreadListSyncFields
-> ThreadListSyncFields -> ThreadListSyncFields
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
min :: ThreadListSyncFields
-> ThreadListSyncFields -> ThreadListSyncFields
$cmin :: ThreadListSyncFields
-> ThreadListSyncFields -> ThreadListSyncFields
max :: ThreadListSyncFields
-> ThreadListSyncFields -> ThreadListSyncFields
$cmax :: ThreadListSyncFields
-> ThreadListSyncFields -> ThreadListSyncFields
>= :: ThreadListSyncFields -> ThreadListSyncFields -> Bool
$c>= :: ThreadListSyncFields -> ThreadListSyncFields -> Bool
> :: ThreadListSyncFields -> ThreadListSyncFields -> Bool
$c> :: ThreadListSyncFields -> ThreadListSyncFields -> Bool
<= :: ThreadListSyncFields -> ThreadListSyncFields -> Bool
$c<= :: ThreadListSyncFields -> ThreadListSyncFields -> Bool
< :: ThreadListSyncFields -> ThreadListSyncFields -> Bool
$c< :: ThreadListSyncFields -> ThreadListSyncFields -> Bool
compare :: ThreadListSyncFields -> ThreadListSyncFields -> Ordering
$ccompare :: ThreadListSyncFields -> ThreadListSyncFields -> Ordering
$cp1Ord :: Eq ThreadListSyncFields
Ord)
instance FromJSON ThreadListSyncFields where
parseJSON :: Value -> Parser ThreadListSyncFields
parseJSON = String
-> (Object -> Parser ThreadListSyncFields)
-> Value
-> Parser ThreadListSyncFields
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"ThreadListSyncFields" ((Object -> Parser ThreadListSyncFields)
-> Value -> Parser ThreadListSyncFields)
-> (Object -> Parser ThreadListSyncFields)
-> Value
-> Parser ThreadListSyncFields
forall a b. (a -> b) -> a -> b
$ \Object
o ->
ChannelId
-> Maybe [ChannelId]
-> [Channel]
-> [ThreadMember]
-> ThreadListSyncFields
ThreadListSyncFields (ChannelId
-> Maybe [ChannelId]
-> [Channel]
-> [ThreadMember]
-> ThreadListSyncFields)
-> Parser ChannelId
-> Parser
(Maybe [ChannelId]
-> [Channel] -> [ThreadMember] -> ThreadListSyncFields)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser ChannelId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"guild_id"
Parser
(Maybe [ChannelId]
-> [Channel] -> [ThreadMember] -> ThreadListSyncFields)
-> Parser (Maybe [ChannelId])
-> Parser ([Channel] -> [ThreadMember] -> ThreadListSyncFields)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe [ChannelId])
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"channel_ids"
Parser ([Channel] -> [ThreadMember] -> ThreadListSyncFields)
-> Parser [Channel]
-> Parser ([ThreadMember] -> ThreadListSyncFields)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser [Channel]
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"threads"
Parser ([ThreadMember] -> ThreadListSyncFields)
-> Parser [ThreadMember] -> Parser ThreadListSyncFields
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser [ThreadMember]
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"members"
data ThreadMembersUpdateFields = ThreadMembersUpdateFields
{ ThreadMembersUpdateFields -> ChannelId
threadMembersUpdateFieldsThreadId :: ChannelId
, ThreadMembersUpdateFields -> ChannelId
threadMembersUpdateFieldsGuildId :: GuildId
, ThreadMembersUpdateFields -> Integer
threadMembersUpdateFieldsMemberCount :: Integer
, ThreadMembersUpdateFields -> Maybe [ThreadMember]
threadMembersUpdateFieldsAddedMembers :: Maybe [ThreadMember]
, ThreadMembersUpdateFields -> Maybe [ChannelId]
threadMembersUpdateFieldsRemovedMembers :: Maybe [UserId]
} deriving (Int -> ThreadMembersUpdateFields -> ShowS
[ThreadMembersUpdateFields] -> ShowS
ThreadMembersUpdateFields -> String
(Int -> ThreadMembersUpdateFields -> ShowS)
-> (ThreadMembersUpdateFields -> String)
-> ([ThreadMembersUpdateFields] -> ShowS)
-> Show ThreadMembersUpdateFields
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ThreadMembersUpdateFields] -> ShowS
$cshowList :: [ThreadMembersUpdateFields] -> ShowS
show :: ThreadMembersUpdateFields -> String
$cshow :: ThreadMembersUpdateFields -> String
showsPrec :: Int -> ThreadMembersUpdateFields -> ShowS
$cshowsPrec :: Int -> ThreadMembersUpdateFields -> ShowS
Show, ReadPrec [ThreadMembersUpdateFields]
ReadPrec ThreadMembersUpdateFields
Int -> ReadS ThreadMembersUpdateFields
ReadS [ThreadMembersUpdateFields]
(Int -> ReadS ThreadMembersUpdateFields)
-> ReadS [ThreadMembersUpdateFields]
-> ReadPrec ThreadMembersUpdateFields
-> ReadPrec [ThreadMembersUpdateFields]
-> Read ThreadMembersUpdateFields
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ThreadMembersUpdateFields]
$creadListPrec :: ReadPrec [ThreadMembersUpdateFields]
readPrec :: ReadPrec ThreadMembersUpdateFields
$creadPrec :: ReadPrec ThreadMembersUpdateFields
readList :: ReadS [ThreadMembersUpdateFields]
$creadList :: ReadS [ThreadMembersUpdateFields]
readsPrec :: Int -> ReadS ThreadMembersUpdateFields
$creadsPrec :: Int -> ReadS ThreadMembersUpdateFields
Read, ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Bool
(ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Bool)
-> (ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Bool)
-> Eq ThreadMembersUpdateFields
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Bool
$c/= :: ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Bool
== :: ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Bool
$c== :: ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Bool
Eq, Eq ThreadMembersUpdateFields
Eq ThreadMembersUpdateFields
-> (ThreadMembersUpdateFields
-> ThreadMembersUpdateFields -> Ordering)
-> (ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Bool)
-> (ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Bool)
-> (ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Bool)
-> (ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Bool)
-> (ThreadMembersUpdateFields
-> ThreadMembersUpdateFields -> ThreadMembersUpdateFields)
-> (ThreadMembersUpdateFields
-> ThreadMembersUpdateFields -> ThreadMembersUpdateFields)
-> Ord ThreadMembersUpdateFields
ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Bool
ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Ordering
ThreadMembersUpdateFields
-> ThreadMembersUpdateFields -> ThreadMembersUpdateFields
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
min :: ThreadMembersUpdateFields
-> ThreadMembersUpdateFields -> ThreadMembersUpdateFields
$cmin :: ThreadMembersUpdateFields
-> ThreadMembersUpdateFields -> ThreadMembersUpdateFields
max :: ThreadMembersUpdateFields
-> ThreadMembersUpdateFields -> ThreadMembersUpdateFields
$cmax :: ThreadMembersUpdateFields
-> ThreadMembersUpdateFields -> ThreadMembersUpdateFields
>= :: ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Bool
$c>= :: ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Bool
> :: ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Bool
$c> :: ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Bool
<= :: ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Bool
$c<= :: ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Bool
< :: ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Bool
$c< :: ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Bool
compare :: ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Ordering
$ccompare :: ThreadMembersUpdateFields -> ThreadMembersUpdateFields -> Ordering
$cp1Ord :: Eq ThreadMembersUpdateFields
Ord)
instance FromJSON ThreadMembersUpdateFields where
parseJSON :: Value -> Parser ThreadMembersUpdateFields
parseJSON = String
-> (Object -> Parser ThreadMembersUpdateFields)
-> Value
-> Parser ThreadMembersUpdateFields
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"ThreadMembersUpdateFields" ((Object -> Parser ThreadMembersUpdateFields)
-> Value -> Parser ThreadMembersUpdateFields)
-> (Object -> Parser ThreadMembersUpdateFields)
-> Value
-> Parser ThreadMembersUpdateFields
forall a b. (a -> b) -> a -> b
$ \Object
o ->
ChannelId
-> ChannelId
-> Integer
-> Maybe [ThreadMember]
-> Maybe [ChannelId]
-> ThreadMembersUpdateFields
ThreadMembersUpdateFields (ChannelId
-> ChannelId
-> Integer
-> Maybe [ThreadMember]
-> Maybe [ChannelId]
-> ThreadMembersUpdateFields)
-> Parser ChannelId
-> Parser
(ChannelId
-> Integer
-> Maybe [ThreadMember]
-> Maybe [ChannelId]
-> ThreadMembersUpdateFields)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser ChannelId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser
(ChannelId
-> Integer
-> Maybe [ThreadMember]
-> Maybe [ChannelId]
-> ThreadMembersUpdateFields)
-> Parser ChannelId
-> Parser
(Integer
-> Maybe [ThreadMember]
-> Maybe [ChannelId]
-> ThreadMembersUpdateFields)
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
"guild_id"
Parser
(Integer
-> Maybe [ThreadMember]
-> Maybe [ChannelId]
-> ThreadMembersUpdateFields)
-> Parser Integer
-> Parser
(Maybe [ThreadMember]
-> Maybe [ChannelId] -> ThreadMembersUpdateFields)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"member_count"
Parser
(Maybe [ThreadMember]
-> Maybe [ChannelId] -> ThreadMembersUpdateFields)
-> Parser (Maybe [ThreadMember])
-> Parser (Maybe [ChannelId] -> ThreadMembersUpdateFields)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe [ThreadMember])
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"added_members"
Parser (Maybe [ChannelId] -> ThreadMembersUpdateFields)
-> Parser (Maybe [ChannelId]) -> Parser ThreadMembersUpdateFields
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe [ChannelId])
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"removed_member_ids"
data Message = Message
{ Message -> ChannelId
messageId :: MessageId
, Message -> ChannelId
messageChannelId :: ChannelId
, Message -> Maybe ChannelId
messageGuildId :: Maybe GuildId
, Message -> User
messageAuthor :: User
, Message -> Maybe GuildMember
messageMember :: Maybe GuildMember
, Message -> Text
messageContent :: Text
, Message -> UTCTime
messageTimestamp :: UTCTime
, Message -> Maybe UTCTime
messageEdited :: Maybe UTCTime
, Message -> Bool
messageTts :: Bool
, Message -> Bool
messageEveryone :: Bool
, Message -> [User]
messageMentions :: [User]
, Message -> [ChannelId]
messageMentionRoles :: [RoleId]
, Message -> [Attachment]
messageAttachments :: [Attachment]
, Message -> [Embed]
messageEmbeds :: [Embed]
, Message -> [MessageReaction]
messageReactions :: [MessageReaction]
, Message -> Maybe Nonce
messageNonce :: Maybe Nonce
, Message -> Bool
messagePinned :: Bool
, Message -> Maybe ChannelId
messageWebhookId :: Maybe WebhookId
, Message -> MessageType
messageType :: MessageType
, Message -> Maybe MessageActivity
messageActivity :: Maybe MessageActivity
, Message -> Maybe ChannelId
messageApplicationId :: Maybe ApplicationId
, Message -> Maybe MessageReference
messageReference :: Maybe MessageReference
, Message -> Maybe MessageFlags
messageFlags :: Maybe MessageFlags
, Message -> Maybe Message
messageReferencedMessage :: Maybe Message
, Message -> Maybe MessageInteraction
messageInteraction :: Maybe MessageInteraction
, Message -> Maybe Channel
messageThread :: Maybe Channel
, Message -> Maybe [ComponentActionRow]
messageComponents :: Maybe [ComponentActionRow]
, Message -> Maybe [StickerItem]
messageStickerItems :: Maybe [StickerItem]
} deriving (Int -> Message -> ShowS
[Message] -> ShowS
Message -> String
(Int -> Message -> ShowS)
-> (Message -> String) -> ([Message] -> ShowS) -> Show Message
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Message] -> ShowS
$cshowList :: [Message] -> ShowS
show :: Message -> String
$cshow :: Message -> String
showsPrec :: Int -> Message -> ShowS
$cshowsPrec :: Int -> Message -> ShowS
Show, ReadPrec [Message]
ReadPrec Message
Int -> ReadS Message
ReadS [Message]
(Int -> ReadS Message)
-> ReadS [Message]
-> ReadPrec Message
-> ReadPrec [Message]
-> Read Message
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Message]
$creadListPrec :: ReadPrec [Message]
readPrec :: ReadPrec Message
$creadPrec :: ReadPrec Message
readList :: ReadS [Message]
$creadList :: ReadS [Message]
readsPrec :: Int -> ReadS Message
$creadsPrec :: Int -> ReadS Message
Read, Message -> Message -> Bool
(Message -> Message -> Bool)
-> (Message -> Message -> Bool) -> Eq Message
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Message -> Message -> Bool
$c/= :: Message -> Message -> Bool
== :: Message -> Message -> Bool
$c== :: Message -> Message -> Bool
Eq, Eq Message
Eq Message
-> (Message -> Message -> Ordering)
-> (Message -> Message -> Bool)
-> (Message -> Message -> Bool)
-> (Message -> Message -> Bool)
-> (Message -> Message -> Bool)
-> (Message -> Message -> Message)
-> (Message -> Message -> Message)
-> Ord Message
Message -> Message -> Bool
Message -> Message -> Ordering
Message -> Message -> Message
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
min :: Message -> Message -> Message
$cmin :: Message -> Message -> Message
max :: Message -> Message -> Message
$cmax :: Message -> Message -> Message
>= :: Message -> Message -> Bool
$c>= :: Message -> Message -> Bool
> :: Message -> Message -> Bool
$c> :: Message -> Message -> Bool
<= :: Message -> Message -> Bool
$c<= :: Message -> Message -> Bool
< :: Message -> Message -> Bool
$c< :: Message -> Message -> Bool
compare :: Message -> Message -> Ordering
$ccompare :: Message -> Message -> Ordering
$cp1Ord :: Eq Message
Ord)
instance FromJSON Message where
parseJSON :: Value -> Parser Message
parseJSON = String -> (Object -> Parser Message) -> Value -> Parser Message
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"Message" ((Object -> Parser Message) -> Value -> Parser Message)
-> (Object -> Parser Message) -> Value -> Parser Message
forall a b. (a -> b) -> a -> b
$ \Object
o ->
ChannelId
-> ChannelId
-> Maybe ChannelId
-> User
-> Maybe GuildMember
-> Text
-> UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> [User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message
Message (ChannelId
-> ChannelId
-> Maybe ChannelId
-> User
-> Maybe GuildMember
-> Text
-> UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> [User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser ChannelId
-> Parser
(ChannelId
-> Maybe ChannelId
-> User
-> Maybe GuildMember
-> Text
-> UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> [User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser ChannelId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser
(ChannelId
-> Maybe ChannelId
-> User
-> Maybe GuildMember
-> Text
-> UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> [User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser ChannelId
-> Parser
(Maybe ChannelId
-> User
-> Maybe GuildMember
-> Text
-> UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> [User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
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"
Parser
(Maybe ChannelId
-> User
-> Maybe GuildMember
-> Text
-> UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> [User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser (Maybe ChannelId)
-> Parser
(User
-> Maybe GuildMember
-> Text
-> UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> [User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe (Maybe ChannelId))
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"guild_id" Parser (Maybe (Maybe ChannelId))
-> Maybe ChannelId -> Parser (Maybe ChannelId)
forall a. Parser (Maybe a) -> a -> Parser a
.!= Maybe ChannelId
forall a. Maybe a
Nothing
Parser
(User
-> Maybe GuildMember
-> Text
-> UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> [User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser User
-> Parser
(Maybe GuildMember
-> Text
-> UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> [User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (do Maybe ChannelId
isW <- Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"webhook_id"
User
a <- Object
o Object -> Key -> Parser User
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"author"
case Maybe ChannelId
isW :: Maybe WebhookId of
Maybe ChannelId
Nothing -> User -> Parser User
forall (f :: * -> *) a. Applicative f => a -> f a
pure User
a
Just ChannelId
_ -> User -> Parser User
forall (f :: * -> *) a. Applicative f => a -> f a
pure (User -> Parser User) -> User -> Parser User
forall a b. (a -> b) -> a -> b
$ User
a { userIsWebhook :: Bool
userIsWebhook = Bool
True })
Parser
(Maybe GuildMember
-> Text
-> UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> [User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser (Maybe GuildMember)
-> Parser
(Text
-> UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> [User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
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"
Parser
(Text
-> UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> [User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser Text
-> Parser
(UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> [User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
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
"content" Parser (Maybe Text) -> Text -> Parser Text
forall a. Parser (Maybe a) -> a -> Parser a
.!= Text
""
Parser
(UTCTime
-> Maybe UTCTime
-> Bool
-> Bool
-> [User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser UTCTime
-> Parser
(Maybe UTCTime
-> Bool
-> Bool
-> [User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
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
"timestamp" Parser (Maybe UTCTime) -> UTCTime -> Parser UTCTime
forall a. Parser (Maybe a) -> a -> Parser a
.!= UTCTime
epochTime
Parser
(Maybe UTCTime
-> Bool
-> Bool
-> [User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser (Maybe UTCTime)
-> Parser
(Bool
-> Bool
-> [User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
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
"edited_timestamp"
Parser
(Bool
-> Bool
-> [User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser Bool
-> Parser
(Bool
-> [User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
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
"tts" Parser (Maybe Bool) -> Bool -> Parser Bool
forall a. Parser (Maybe a) -> a -> Parser a
.!= Bool
False
Parser
(Bool
-> [User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser Bool
-> Parser
([User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
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
"mention_everyone" Parser (Maybe Bool) -> Bool -> Parser Bool
forall a. Parser (Maybe a) -> a -> Parser a
.!= Bool
False
Parser
([User]
-> [ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser [User]
-> Parser
([ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe [User])
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"mentions" Parser (Maybe [User]) -> [User] -> Parser [User]
forall a. Parser (Maybe a) -> a -> Parser a
.!= []
Parser
([ChannelId]
-> [Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser [ChannelId]
-> Parser
([Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe [ChannelId])
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"mention_roles" Parser (Maybe [ChannelId]) -> [ChannelId] -> Parser [ChannelId]
forall a. Parser (Maybe a) -> a -> Parser a
.!= []
Parser
([Attachment]
-> [Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser [Attachment]
-> Parser
([Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe [Attachment])
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"attachments" Parser (Maybe [Attachment]) -> [Attachment] -> Parser [Attachment]
forall a. Parser (Maybe a) -> a -> Parser a
.!= []
Parser
([Embed]
-> [MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser [Embed]
-> Parser
([MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser [Embed]
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"embeds"
Parser
([MessageReaction]
-> Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser [MessageReaction]
-> Parser
(Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe [MessageReaction])
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"reactions" Parser (Maybe [MessageReaction])
-> [MessageReaction] -> Parser [MessageReaction]
forall a. Parser (Maybe a) -> a -> Parser a
.!= []
Parser
(Maybe Nonce
-> Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser (Maybe Nonce)
-> Parser
(Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Nonce)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"nonce"
Parser
(Bool
-> Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser Bool
-> Parser
(Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
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
"pinned" Parser (Maybe Bool) -> Bool -> Parser Bool
forall a. Parser (Maybe a) -> a -> Parser a
.!= Bool
False
Parser
(Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser (Maybe ChannelId)
-> Parser
(MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"webhook_id"
Parser
(MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser MessageType
-> Parser
(Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser MessageType
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"type"
Parser
(Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser (Maybe MessageActivity)
-> Parser
(Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe MessageActivity)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"activity"
Parser
(Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser (Maybe ChannelId)
-> Parser
(Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"application_id"
Parser
(Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser (Maybe MessageReference)
-> Parser
(Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe (Maybe MessageReference))
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"message_reference" Parser (Maybe (Maybe MessageReference))
-> Maybe MessageReference -> Parser (Maybe MessageReference)
forall a. Parser (Maybe a) -> a -> Parser a
.!= Maybe MessageReference
forall a. Maybe a
Nothing
Parser
(Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser (Maybe MessageFlags)
-> Parser
(Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe MessageFlags)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"flags"
Parser
(Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser (Maybe Message)
-> Parser
(Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe (Maybe Message))
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"referenced_message" Parser (Maybe (Maybe Message))
-> Maybe Message -> Parser (Maybe Message)
forall a. Parser (Maybe a) -> a -> Parser a
.!= Maybe Message
forall a. Maybe a
Nothing
Parser
(Maybe MessageInteraction
-> Maybe Channel
-> Maybe [ComponentActionRow]
-> Maybe [StickerItem]
-> Message)
-> Parser (Maybe MessageInteraction)
-> Parser
(Maybe Channel
-> Maybe [ComponentActionRow] -> Maybe [StickerItem] -> Message)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe MessageInteraction)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"interaction"
Parser
(Maybe Channel
-> Maybe [ComponentActionRow] -> Maybe [StickerItem] -> Message)
-> Parser (Maybe Channel)
-> Parser
(Maybe [ComponentActionRow] -> Maybe [StickerItem] -> Message)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe Channel)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"thread"
Parser
(Maybe [ComponentActionRow] -> Maybe [StickerItem] -> Message)
-> Parser (Maybe [ComponentActionRow])
-> Parser (Maybe [StickerItem] -> Message)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe [ComponentActionRow])
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"components"
Parser (Maybe [StickerItem] -> Message)
-> Parser (Maybe [StickerItem]) -> Parser Message
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe [StickerItem])
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"sticker_items"
instance ToJSON Message where
toJSON :: Message -> Value
toJSON Message {Bool
[ChannelId]
[Embed]
[User]
[Attachment]
[MessageReaction]
Maybe [StickerItem]
Maybe [ComponentActionRow]
Maybe UTCTime
Maybe ChannelId
Maybe GuildMember
Maybe MessageInteraction
Maybe MessageFlags
Maybe MessageActivity
Maybe MessageReference
Maybe Nonce
Maybe Message
Maybe Channel
UTCTime
Text
ChannelId
User
MessageType
messageStickerItems :: Maybe [StickerItem]
messageComponents :: Maybe [ComponentActionRow]
messageThread :: Maybe Channel
messageInteraction :: Maybe MessageInteraction
messageReferencedMessage :: Maybe Message
messageFlags :: Maybe MessageFlags
messageReference :: Maybe MessageReference
messageApplicationId :: Maybe ChannelId
messageActivity :: Maybe MessageActivity
messageType :: MessageType
messageWebhookId :: Maybe ChannelId
messagePinned :: Bool
messageNonce :: Maybe Nonce
messageReactions :: [MessageReaction]
messageEmbeds :: [Embed]
messageAttachments :: [Attachment]
messageMentionRoles :: [ChannelId]
messageMentions :: [User]
messageEveryone :: Bool
messageTts :: Bool
messageEdited :: Maybe UTCTime
messageTimestamp :: UTCTime
messageContent :: Text
messageMember :: Maybe GuildMember
messageAuthor :: User
messageGuildId :: Maybe ChannelId
messageChannelId :: ChannelId
messageId :: ChannelId
messageStickerItems :: Message -> Maybe [StickerItem]
messageComponents :: Message -> Maybe [ComponentActionRow]
messageThread :: Message -> Maybe Channel
messageInteraction :: Message -> Maybe MessageInteraction
messageReferencedMessage :: Message -> Maybe Message
messageFlags :: Message -> Maybe MessageFlags
messageReference :: Message -> Maybe MessageReference
messageApplicationId :: Message -> Maybe ChannelId
messageActivity :: Message -> Maybe MessageActivity
messageType :: Message -> MessageType
messageWebhookId :: Message -> Maybe ChannelId
messagePinned :: Message -> Bool
messageNonce :: Message -> Maybe Nonce
messageReactions :: Message -> [MessageReaction]
messageEmbeds :: Message -> [Embed]
messageAttachments :: Message -> [Attachment]
messageMentionRoles :: Message -> [ChannelId]
messageMentions :: Message -> [User]
messageEveryone :: Message -> Bool
messageTts :: Message -> Bool
messageEdited :: Message -> Maybe UTCTime
messageTimestamp :: Message -> UTCTime
messageContent :: Message -> Text
messageMember :: Message -> Maybe GuildMember
messageAuthor :: Message -> User
messageGuildId :: Message -> Maybe ChannelId
messageChannelId :: Message -> ChannelId
messageId :: Message -> ChannelId
..} = [Pair] -> Value
object [(Key
name, Value
value) | (Key
name, Just Value
value) <-
[ (Key
"id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
messageId)
, (Key
"channel_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
messageChannelId)
, (Key
"guild_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ChannelId
messageGuildId)
, (Key
"author", User -> Value
forall a. ToJSON a => a -> Value
toJSON (User -> Value) -> Maybe User -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> User -> Maybe User
forall (f :: * -> *) a. Applicative f => a -> f a
pure User
messageAuthor)
, (Key
"member", GuildMember -> Value
forall a. ToJSON a => a -> Value
toJSON (GuildMember -> Value) -> Maybe GuildMember -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe GuildMember
messageMember)
, (Key
"content", Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Maybe Text
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
messageContent)
, (Key
"timestamp", UTCTime -> Value
forall a. ToJSON a => a -> Value
toJSON (UTCTime -> Value) -> Maybe UTCTime -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> UTCTime -> Maybe UTCTime
forall (f :: * -> *) a. Applicative f => a -> f a
pure UTCTime
messageTimestamp)
, (Key
"edited_timestamp", UTCTime -> Value
forall a. ToJSON a => a -> Value
toJSON (UTCTime -> Value) -> Maybe UTCTime -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe UTCTime
messageEdited)
, (Key
"tts", Bool -> Value
forall a. ToJSON a => a -> Value
toJSON (Bool -> Value) -> Maybe Bool -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Bool -> Maybe Bool
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
messageTts)
, (Key
"mention_everyone", Bool -> Value
forall a. ToJSON a => a -> Value
toJSON (Bool -> Value) -> Maybe Bool -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Bool -> Maybe Bool
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
messageEveryone)
, (Key
"mentions", [User] -> Value
forall a. ToJSON a => a -> Value
toJSON ([User] -> Value) -> Maybe [User] -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [User] -> Maybe [User]
forall (f :: * -> *) a. Applicative f => a -> f a
pure [User]
messageMentions)
, (Key
"mention_roles", [ChannelId] -> Value
forall a. ToJSON a => a -> Value
toJSON ([ChannelId] -> Value) -> Maybe [ChannelId] -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [ChannelId] -> Maybe [ChannelId]
forall (f :: * -> *) a. Applicative f => a -> f a
pure [ChannelId]
messageMentionRoles)
, (Key
"attachments", [Attachment] -> Value
forall a. ToJSON a => a -> Value
toJSON ([Attachment] -> Value) -> Maybe [Attachment] -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Attachment] -> Maybe [Attachment]
forall (f :: * -> *) a. Applicative f => a -> f a
pure [Attachment]
messageAttachments)
, (Key
"embeds", [Embed] -> Value
forall a. ToJSON a => a -> Value
toJSON ([Embed] -> Value) -> Maybe [Embed] -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [Embed] -> Maybe [Embed]
forall (f :: * -> *) a. Applicative f => a -> f a
pure [Embed]
messageEmbeds)
, (Key
"reactions", [MessageReaction] -> Value
forall a. ToJSON a => a -> Value
toJSON ([MessageReaction] -> Value)
-> Maybe [MessageReaction] -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [MessageReaction] -> Maybe [MessageReaction]
forall (f :: * -> *) a. Applicative f => a -> f a
pure [MessageReaction]
messageReactions)
, (Key
"nonce", Nonce -> Value
forall a. ToJSON a => a -> Value
toJSON (Nonce -> Value) -> Maybe Nonce -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Nonce
messageNonce)
, (Key
"pinned", Bool -> Value
forall a. ToJSON a => a -> Value
toJSON (Bool -> Value) -> Maybe Bool -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Bool -> Maybe Bool
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
messagePinned)
, (Key
"webhook_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ChannelId
messageWebhookId)
, (Key
"type", MessageType -> Value
forall a. ToJSON a => a -> Value
toJSON (MessageType -> Value) -> Maybe MessageType -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> MessageType -> Maybe MessageType
forall (f :: * -> *) a. Applicative f => a -> f a
pure MessageType
messageType)
, (Key
"activity", MessageActivity -> Value
forall a. ToJSON a => a -> Value
toJSON (MessageActivity -> Value) -> Maybe MessageActivity -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe MessageActivity
messageActivity)
, (Key
"application_id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ChannelId
messageApplicationId)
, (Key
"message_reference", MessageReference -> Value
forall a. ToJSON a => a -> Value
toJSON (MessageReference -> Value)
-> Maybe MessageReference -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe MessageReference
messageReference)
, (Key
"flags", MessageFlags -> Value
forall a. ToJSON a => a -> Value
toJSON (MessageFlags -> Value) -> Maybe MessageFlags -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe MessageFlags
messageFlags)
, (Key
"referenced_message", Message -> Value
forall a. ToJSON a => a -> Value
toJSON (Message -> Value) -> Maybe Message -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Message
messageReferencedMessage)
, (Key
"interaction", MessageInteraction -> Value
forall a. ToJSON a => a -> Value
toJSON (MessageInteraction -> Value)
-> Maybe MessageInteraction -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe MessageInteraction
messageInteraction)
, (Key
"thread", Channel -> Value
forall a. ToJSON a => a -> Value
toJSON (Channel -> Value) -> Maybe Channel -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Channel
messageThread)
, (Key
"components", [ComponentActionRow] -> Value
forall a. ToJSON a => a -> Value
toJSON ([ComponentActionRow] -> Value)
-> Maybe [ComponentActionRow] -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe [ComponentActionRow]
messageComponents)
, (Key
"sticker_items", [StickerItem] -> Value
forall a. ToJSON a => a -> Value
toJSON ([StickerItem] -> Value) -> Maybe [StickerItem] -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe [StickerItem]
messageStickerItems)
] ]
data AllowedMentions = AllowedMentions
{ AllowedMentions -> Bool
mentionEveryone :: Bool
, AllowedMentions -> Bool
mentionUsers :: Bool
, AllowedMentions -> Bool
mentionRoles :: Bool
, AllowedMentions -> [ChannelId]
mentionUserIds :: [UserId]
, AllowedMentions -> [ChannelId]
mentionRoleIds :: [RoleId]
, AllowedMentions -> Bool
mentionRepliedUser :: Bool
} deriving (Int -> AllowedMentions -> ShowS
[AllowedMentions] -> ShowS
AllowedMentions -> String
(Int -> AllowedMentions -> ShowS)
-> (AllowedMentions -> String)
-> ([AllowedMentions] -> ShowS)
-> Show AllowedMentions
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AllowedMentions] -> ShowS
$cshowList :: [AllowedMentions] -> ShowS
show :: AllowedMentions -> String
$cshow :: AllowedMentions -> String
showsPrec :: Int -> AllowedMentions -> ShowS
$cshowsPrec :: Int -> AllowedMentions -> ShowS
Show, ReadPrec [AllowedMentions]
ReadPrec AllowedMentions
Int -> ReadS AllowedMentions
ReadS [AllowedMentions]
(Int -> ReadS AllowedMentions)
-> ReadS [AllowedMentions]
-> ReadPrec AllowedMentions
-> ReadPrec [AllowedMentions]
-> Read AllowedMentions
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AllowedMentions]
$creadListPrec :: ReadPrec [AllowedMentions]
readPrec :: ReadPrec AllowedMentions
$creadPrec :: ReadPrec AllowedMentions
readList :: ReadS [AllowedMentions]
$creadList :: ReadS [AllowedMentions]
readsPrec :: Int -> ReadS AllowedMentions
$creadsPrec :: Int -> ReadS AllowedMentions
Read, AllowedMentions -> AllowedMentions -> Bool
(AllowedMentions -> AllowedMentions -> Bool)
-> (AllowedMentions -> AllowedMentions -> Bool)
-> Eq AllowedMentions
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AllowedMentions -> AllowedMentions -> Bool
$c/= :: AllowedMentions -> AllowedMentions -> Bool
== :: AllowedMentions -> AllowedMentions -> Bool
$c== :: AllowedMentions -> AllowedMentions -> Bool
Eq, Eq AllowedMentions
Eq AllowedMentions
-> (AllowedMentions -> AllowedMentions -> Ordering)
-> (AllowedMentions -> AllowedMentions -> Bool)
-> (AllowedMentions -> AllowedMentions -> Bool)
-> (AllowedMentions -> AllowedMentions -> Bool)
-> (AllowedMentions -> AllowedMentions -> Bool)
-> (AllowedMentions -> AllowedMentions -> AllowedMentions)
-> (AllowedMentions -> AllowedMentions -> AllowedMentions)
-> Ord AllowedMentions
AllowedMentions -> AllowedMentions -> Bool
AllowedMentions -> AllowedMentions -> Ordering
AllowedMentions -> AllowedMentions -> AllowedMentions
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
min :: AllowedMentions -> AllowedMentions -> AllowedMentions
$cmin :: AllowedMentions -> AllowedMentions -> AllowedMentions
max :: AllowedMentions -> AllowedMentions -> AllowedMentions
$cmax :: AllowedMentions -> AllowedMentions -> AllowedMentions
>= :: AllowedMentions -> AllowedMentions -> Bool
$c>= :: AllowedMentions -> AllowedMentions -> Bool
> :: AllowedMentions -> AllowedMentions -> Bool
$c> :: AllowedMentions -> AllowedMentions -> Bool
<= :: AllowedMentions -> AllowedMentions -> Bool
$c<= :: AllowedMentions -> AllowedMentions -> Bool
< :: AllowedMentions -> AllowedMentions -> Bool
$c< :: AllowedMentions -> AllowedMentions -> Bool
compare :: AllowedMentions -> AllowedMentions -> Ordering
$ccompare :: AllowedMentions -> AllowedMentions -> Ordering
$cp1Ord :: Eq AllowedMentions
Ord)
instance Default AllowedMentions where
def :: AllowedMentions
def = AllowedMentions :: Bool
-> Bool
-> Bool
-> [ChannelId]
-> [ChannelId]
-> Bool
-> AllowedMentions
AllowedMentions { mentionEveryone :: Bool
mentionEveryone = Bool
False
, mentionUsers :: Bool
mentionUsers = Bool
True
, mentionRoles :: Bool
mentionRoles = Bool
True
, mentionUserIds :: [ChannelId]
mentionUserIds = []
, mentionRoleIds :: [ChannelId]
mentionRoleIds = []
, mentionRepliedUser :: Bool
mentionRepliedUser = Bool
True
}
instance ToJSON AllowedMentions where
toJSON :: AllowedMentions -> Value
toJSON AllowedMentions{Bool
[ChannelId]
mentionRepliedUser :: Bool
mentionRoleIds :: [ChannelId]
mentionUserIds :: [ChannelId]
mentionRoles :: Bool
mentionUsers :: Bool
mentionEveryone :: Bool
mentionRepliedUser :: AllowedMentions -> Bool
mentionRoleIds :: AllowedMentions -> [ChannelId]
mentionUserIds :: AllowedMentions -> [ChannelId]
mentionRoles :: AllowedMentions -> Bool
mentionUsers :: AllowedMentions -> Bool
mentionEveryone :: AllowedMentions -> Bool
..} = [Pair] -> Value
object [
(Key
"parse" Key -> [Text] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= [Text
name :: T.Text | (Text
name, Bool
True) <-
[ (Text
"everyone", Bool
mentionEveryone),
(Text
"users", Bool
mentionUsers Bool -> Bool -> Bool
&& [ChannelId]
mentionUserIds [ChannelId] -> [ChannelId] -> Bool
forall a. Eq a => a -> a -> Bool
== []),
(Text
"roles", Bool
mentionRoles Bool -> Bool -> Bool
&& [ChannelId]
mentionRoleIds [ChannelId] -> [ChannelId] -> Bool
forall a. Eq a => a -> a -> Bool
== []) ] ]),
(Key
"roles" Key -> [ChannelId] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= [ChannelId]
mentionRoleIds),
(Key
"users" Key -> [ChannelId] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= [ChannelId]
mentionUserIds),
(Key
"replied_user" Key -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
.= Bool
mentionRepliedUser) ]
data MessageReaction = MessageReaction
{ MessageReaction -> Int
messageReactionCount :: Int
, MessageReaction -> Bool
messageReactionMeIncluded :: Bool
, MessageReaction -> Emoji
messageReactionEmoji :: Emoji
} deriving (Int -> MessageReaction -> ShowS
[MessageReaction] -> ShowS
MessageReaction -> String
(Int -> MessageReaction -> ShowS)
-> (MessageReaction -> String)
-> ([MessageReaction] -> ShowS)
-> Show MessageReaction
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MessageReaction] -> ShowS
$cshowList :: [MessageReaction] -> ShowS
show :: MessageReaction -> String
$cshow :: MessageReaction -> String
showsPrec :: Int -> MessageReaction -> ShowS
$cshowsPrec :: Int -> MessageReaction -> ShowS
Show, ReadPrec [MessageReaction]
ReadPrec MessageReaction
Int -> ReadS MessageReaction
ReadS [MessageReaction]
(Int -> ReadS MessageReaction)
-> ReadS [MessageReaction]
-> ReadPrec MessageReaction
-> ReadPrec [MessageReaction]
-> Read MessageReaction
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MessageReaction]
$creadListPrec :: ReadPrec [MessageReaction]
readPrec :: ReadPrec MessageReaction
$creadPrec :: ReadPrec MessageReaction
readList :: ReadS [MessageReaction]
$creadList :: ReadS [MessageReaction]
readsPrec :: Int -> ReadS MessageReaction
$creadsPrec :: Int -> ReadS MessageReaction
Read, MessageReaction -> MessageReaction -> Bool
(MessageReaction -> MessageReaction -> Bool)
-> (MessageReaction -> MessageReaction -> Bool)
-> Eq MessageReaction
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MessageReaction -> MessageReaction -> Bool
$c/= :: MessageReaction -> MessageReaction -> Bool
== :: MessageReaction -> MessageReaction -> Bool
$c== :: MessageReaction -> MessageReaction -> Bool
Eq, Eq MessageReaction
Eq MessageReaction
-> (MessageReaction -> MessageReaction -> Ordering)
-> (MessageReaction -> MessageReaction -> Bool)
-> (MessageReaction -> MessageReaction -> Bool)
-> (MessageReaction -> MessageReaction -> Bool)
-> (MessageReaction -> MessageReaction -> Bool)
-> (MessageReaction -> MessageReaction -> MessageReaction)
-> (MessageReaction -> MessageReaction -> MessageReaction)
-> Ord MessageReaction
MessageReaction -> MessageReaction -> Bool
MessageReaction -> MessageReaction -> Ordering
MessageReaction -> MessageReaction -> MessageReaction
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
min :: MessageReaction -> MessageReaction -> MessageReaction
$cmin :: MessageReaction -> MessageReaction -> MessageReaction
max :: MessageReaction -> MessageReaction -> MessageReaction
$cmax :: MessageReaction -> MessageReaction -> MessageReaction
>= :: MessageReaction -> MessageReaction -> Bool
$c>= :: MessageReaction -> MessageReaction -> Bool
> :: MessageReaction -> MessageReaction -> Bool
$c> :: MessageReaction -> MessageReaction -> Bool
<= :: MessageReaction -> MessageReaction -> Bool
$c<= :: MessageReaction -> MessageReaction -> Bool
< :: MessageReaction -> MessageReaction -> Bool
$c< :: MessageReaction -> MessageReaction -> Bool
compare :: MessageReaction -> MessageReaction -> Ordering
$ccompare :: MessageReaction -> MessageReaction -> Ordering
$cp1Ord :: Eq MessageReaction
Ord)
instance FromJSON MessageReaction where
parseJSON :: Value -> Parser MessageReaction
parseJSON = String
-> (Object -> Parser MessageReaction)
-> Value
-> Parser MessageReaction
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"MessageReaction" ((Object -> Parser MessageReaction)
-> Value -> Parser MessageReaction)
-> (Object -> Parser MessageReaction)
-> Value
-> Parser MessageReaction
forall a b. (a -> b) -> a -> b
$ \Object
o ->
Int -> Bool -> Emoji -> MessageReaction
MessageReaction (Int -> Bool -> Emoji -> MessageReaction)
-> Parser Int -> Parser (Bool -> Emoji -> MessageReaction)
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
"count"
Parser (Bool -> Emoji -> MessageReaction)
-> Parser Bool -> Parser (Emoji -> MessageReaction)
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
"me"
Parser (Emoji -> MessageReaction)
-> Parser Emoji -> Parser MessageReaction
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Emoji
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"emoji"
instance ToJSON MessageReaction where
toJSON :: MessageReaction -> Value
toJSON MessageReaction{Bool
Int
Emoji
messageReactionEmoji :: Emoji
messageReactionMeIncluded :: Bool
messageReactionCount :: Int
messageReactionEmoji :: MessageReaction -> Emoji
messageReactionMeIncluded :: MessageReaction -> Bool
messageReactionCount :: MessageReaction -> Int
..} = [Pair] -> Value
object [(Key
name, Value
value) | (Key
name, Just Value
value) <-
[ (Key
"count", Int -> Value
forall a. ToJSON a => a -> Value
toJSON (Int -> Value) -> Maybe Int -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Int -> Maybe Int
forall (f :: * -> *) a. Applicative f => a -> f a
pure Int
messageReactionCount)
, (Key
"me", Bool -> Value
forall a. ToJSON a => a -> Value
toJSON (Bool -> Value) -> Maybe Bool -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Bool -> Maybe Bool
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
messageReactionMeIncluded)
, (Key
"emoji", Emoji -> Value
forall a. ToJSON a => a -> Value
toJSON (Emoji -> Value) -> Maybe Emoji -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Emoji -> Maybe Emoji
forall (f :: * -> *) a. Applicative f => a -> f a
pure Emoji
messageReactionEmoji)
]]
data Attachment = Attachment
{ Attachment -> ChannelId
attachmentId :: AttachmentId
, Attachment -> Text
attachmentFilename :: T.Text
, Attachment -> Integer
attachmentSize :: Integer
, Attachment -> Text
attachmentUrl :: T.Text
, Attachment -> Text
attachmentProxy :: T.Text
, Attachment -> Maybe Integer
attachmentHeight :: Maybe Integer
, Attachment -> Maybe Integer
attachmentWidth :: Maybe Integer
} deriving (Int -> Attachment -> ShowS
[Attachment] -> ShowS
Attachment -> String
(Int -> Attachment -> ShowS)
-> (Attachment -> String)
-> ([Attachment] -> ShowS)
-> Show Attachment
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Attachment] -> ShowS
$cshowList :: [Attachment] -> ShowS
show :: Attachment -> String
$cshow :: Attachment -> String
showsPrec :: Int -> Attachment -> ShowS
$cshowsPrec :: Int -> Attachment -> ShowS
Show, ReadPrec [Attachment]
ReadPrec Attachment
Int -> ReadS Attachment
ReadS [Attachment]
(Int -> ReadS Attachment)
-> ReadS [Attachment]
-> ReadPrec Attachment
-> ReadPrec [Attachment]
-> Read Attachment
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Attachment]
$creadListPrec :: ReadPrec [Attachment]
readPrec :: ReadPrec Attachment
$creadPrec :: ReadPrec Attachment
readList :: ReadS [Attachment]
$creadList :: ReadS [Attachment]
readsPrec :: Int -> ReadS Attachment
$creadsPrec :: Int -> ReadS Attachment
Read, Attachment -> Attachment -> Bool
(Attachment -> Attachment -> Bool)
-> (Attachment -> Attachment -> Bool) -> Eq Attachment
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Attachment -> Attachment -> Bool
$c/= :: Attachment -> Attachment -> Bool
== :: Attachment -> Attachment -> Bool
$c== :: Attachment -> Attachment -> Bool
Eq, Eq Attachment
Eq Attachment
-> (Attachment -> Attachment -> Ordering)
-> (Attachment -> Attachment -> Bool)
-> (Attachment -> Attachment -> Bool)
-> (Attachment -> Attachment -> Bool)
-> (Attachment -> Attachment -> Bool)
-> (Attachment -> Attachment -> Attachment)
-> (Attachment -> Attachment -> Attachment)
-> Ord Attachment
Attachment -> Attachment -> Bool
Attachment -> Attachment -> Ordering
Attachment -> Attachment -> Attachment
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
min :: Attachment -> Attachment -> Attachment
$cmin :: Attachment -> Attachment -> Attachment
max :: Attachment -> Attachment -> Attachment
$cmax :: Attachment -> Attachment -> Attachment
>= :: Attachment -> Attachment -> Bool
$c>= :: Attachment -> Attachment -> Bool
> :: Attachment -> Attachment -> Bool
$c> :: Attachment -> Attachment -> Bool
<= :: Attachment -> Attachment -> Bool
$c<= :: Attachment -> Attachment -> Bool
< :: Attachment -> Attachment -> Bool
$c< :: Attachment -> Attachment -> Bool
compare :: Attachment -> Attachment -> Ordering
$ccompare :: Attachment -> Attachment -> Ordering
$cp1Ord :: Eq Attachment
Ord)
instance FromJSON Attachment where
parseJSON :: Value -> Parser Attachment
parseJSON = String
-> (Object -> Parser Attachment) -> Value -> Parser Attachment
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"Attachment" ((Object -> Parser Attachment) -> Value -> Parser Attachment)
-> (Object -> Parser Attachment) -> Value -> Parser Attachment
forall a b. (a -> b) -> a -> b
$ \Object
o ->
ChannelId
-> Text
-> Integer
-> Text
-> Text
-> Maybe Integer
-> Maybe Integer
-> Attachment
Attachment (ChannelId
-> Text
-> Integer
-> Text
-> Text
-> Maybe Integer
-> Maybe Integer
-> Attachment)
-> Parser ChannelId
-> Parser
(Text
-> Integer
-> Text
-> Text
-> Maybe Integer
-> Maybe Integer
-> Attachment)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser ChannelId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser
(Text
-> Integer
-> Text
-> Text
-> Maybe Integer
-> Maybe Integer
-> Attachment)
-> Parser Text
-> Parser
(Integer
-> Text -> Text -> Maybe Integer -> Maybe Integer -> Attachment)
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
"filename"
Parser
(Integer
-> Text -> Text -> Maybe Integer -> Maybe Integer -> Attachment)
-> Parser Integer
-> Parser
(Text -> Text -> Maybe Integer -> Maybe Integer -> Attachment)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"size"
Parser
(Text -> Text -> Maybe Integer -> Maybe Integer -> Attachment)
-> Parser Text
-> Parser (Text -> Maybe Integer -> Maybe Integer -> Attachment)
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
"url"
Parser (Text -> Maybe Integer -> Maybe Integer -> Attachment)
-> Parser Text
-> Parser (Maybe Integer -> Maybe Integer -> Attachment)
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
"proxy_url"
Parser (Maybe Integer -> Maybe Integer -> Attachment)
-> Parser (Maybe Integer) -> Parser (Maybe Integer -> Attachment)
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
"height"
Parser (Maybe Integer -> Attachment)
-> Parser (Maybe Integer) -> Parser Attachment
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
"width"
instance ToJSON Attachment where
toJSON :: Attachment -> Value
toJSON Attachment {Integer
Maybe Integer
Text
ChannelId
attachmentWidth :: Maybe Integer
attachmentHeight :: Maybe Integer
attachmentProxy :: Text
attachmentUrl :: Text
attachmentSize :: Integer
attachmentFilename :: Text
attachmentId :: ChannelId
attachmentWidth :: Attachment -> Maybe Integer
attachmentHeight :: Attachment -> Maybe Integer
attachmentProxy :: Attachment -> Text
attachmentUrl :: Attachment -> Text
attachmentSize :: Attachment -> Integer
attachmentFilename :: Attachment -> Text
attachmentId :: Attachment -> ChannelId
..} = [Pair] -> Value
object [(Key
name, Value
value) | (Key
name, Just Value
value) <-
[ (Key
"id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
attachmentId)
, (Key
"filename", Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Maybe Text
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
attachmentFilename)
, (Key
"size", Integer -> Value
forall a. ToJSON a => a -> Value
toJSON (Integer -> Value) -> Maybe Integer -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Integer -> Maybe Integer
forall (f :: * -> *) a. Applicative f => a -> f a
pure Integer
attachmentSize)
, (Key
"url", Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Maybe Text
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
attachmentUrl)
, (Key
"proxy_url", Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Maybe Text
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
attachmentProxy)
, (Key
"height", Integer -> Value
forall a. ToJSON a => a -> Value
toJSON (Integer -> Value) -> Maybe Integer -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Integer
attachmentHeight)
, (Key
"width", Integer -> Value
forall a. ToJSON a => a -> Value
toJSON (Integer -> Value) -> Maybe Integer -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Integer
attachmentWidth)
] ]
newtype Nonce = Nonce T.Text
deriving (Int -> Nonce -> ShowS
[Nonce] -> ShowS
Nonce -> String
(Int -> Nonce -> ShowS)
-> (Nonce -> String) -> ([Nonce] -> ShowS) -> Show Nonce
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Nonce] -> ShowS
$cshowList :: [Nonce] -> ShowS
show :: Nonce -> String
$cshow :: Nonce -> String
showsPrec :: Int -> Nonce -> ShowS
$cshowsPrec :: Int -> Nonce -> ShowS
Show, ReadPrec [Nonce]
ReadPrec Nonce
Int -> ReadS Nonce
ReadS [Nonce]
(Int -> ReadS Nonce)
-> ReadS [Nonce]
-> ReadPrec Nonce
-> ReadPrec [Nonce]
-> Read Nonce
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Nonce]
$creadListPrec :: ReadPrec [Nonce]
readPrec :: ReadPrec Nonce
$creadPrec :: ReadPrec Nonce
readList :: ReadS [Nonce]
$creadList :: ReadS [Nonce]
readsPrec :: Int -> ReadS Nonce
$creadsPrec :: Int -> ReadS Nonce
Read, Nonce -> Nonce -> Bool
(Nonce -> Nonce -> Bool) -> (Nonce -> Nonce -> Bool) -> Eq Nonce
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Nonce -> Nonce -> Bool
$c/= :: Nonce -> Nonce -> Bool
== :: Nonce -> Nonce -> Bool
$c== :: Nonce -> Nonce -> Bool
Eq, Eq Nonce
Eq Nonce
-> (Nonce -> Nonce -> Ordering)
-> (Nonce -> Nonce -> Bool)
-> (Nonce -> Nonce -> Bool)
-> (Nonce -> Nonce -> Bool)
-> (Nonce -> Nonce -> Bool)
-> (Nonce -> Nonce -> Nonce)
-> (Nonce -> Nonce -> Nonce)
-> Ord Nonce
Nonce -> Nonce -> Bool
Nonce -> Nonce -> Ordering
Nonce -> Nonce -> Nonce
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
min :: Nonce -> Nonce -> Nonce
$cmin :: Nonce -> Nonce -> Nonce
max :: Nonce -> Nonce -> Nonce
$cmax :: Nonce -> Nonce -> Nonce
>= :: Nonce -> Nonce -> Bool
$c>= :: Nonce -> Nonce -> Bool
> :: Nonce -> Nonce -> Bool
$c> :: Nonce -> Nonce -> Bool
<= :: Nonce -> Nonce -> Bool
$c<= :: Nonce -> Nonce -> Bool
< :: Nonce -> Nonce -> Bool
$c< :: Nonce -> Nonce -> Bool
compare :: Nonce -> Nonce -> Ordering
$ccompare :: Nonce -> Nonce -> Ordering
$cp1Ord :: Eq Nonce
Ord)
instance FromJSON Nonce where
parseJSON :: Value -> Parser Nonce
parseJSON (String Text
nonce) = Nonce -> Parser Nonce
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Nonce -> Parser Nonce) -> Nonce -> Parser Nonce
forall a b. (a -> b) -> a -> b
$ Text -> Nonce
Nonce Text
nonce
parseJSON (Number Scientific
nonce) = Nonce -> Parser Nonce
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Nonce -> Parser Nonce)
-> (Scientific -> Nonce) -> Scientific -> Parser Nonce
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Nonce
Nonce (Text -> Nonce) -> (Scientific -> Text) -> Scientific -> Nonce
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
T.pack (String -> Text) -> (Scientific -> String) -> Scientific -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Scientific -> String
forall a. Show a => a -> String
show (Scientific -> Parser Nonce) -> Scientific -> Parser Nonce
forall a b. (a -> b) -> a -> b
$ Scientific
nonce
parseJSON Value
_ = Parser Nonce
forall (f :: * -> *) a. Alternative f => f a
empty
instance ToJSON Nonce where
toJSON :: Nonce -> Value
toJSON (Nonce Text
t) = Text -> Value
String Text
t
data MessageReference = MessageReference
{ MessageReference -> Maybe ChannelId
referenceMessageId :: Maybe MessageId
, MessageReference -> Maybe ChannelId
referenceChannelId :: Maybe ChannelId
, MessageReference -> Maybe ChannelId
referenceGuildId :: Maybe GuildId
, MessageReference -> Bool
failIfNotExists :: Bool
} deriving (Int -> MessageReference -> ShowS
[MessageReference] -> ShowS
MessageReference -> String
(Int -> MessageReference -> ShowS)
-> (MessageReference -> String)
-> ([MessageReference] -> ShowS)
-> Show MessageReference
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MessageReference] -> ShowS
$cshowList :: [MessageReference] -> ShowS
show :: MessageReference -> String
$cshow :: MessageReference -> String
showsPrec :: Int -> MessageReference -> ShowS
$cshowsPrec :: Int -> MessageReference -> ShowS
Show, ReadPrec [MessageReference]
ReadPrec MessageReference
Int -> ReadS MessageReference
ReadS [MessageReference]
(Int -> ReadS MessageReference)
-> ReadS [MessageReference]
-> ReadPrec MessageReference
-> ReadPrec [MessageReference]
-> Read MessageReference
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MessageReference]
$creadListPrec :: ReadPrec [MessageReference]
readPrec :: ReadPrec MessageReference
$creadPrec :: ReadPrec MessageReference
readList :: ReadS [MessageReference]
$creadList :: ReadS [MessageReference]
readsPrec :: Int -> ReadS MessageReference
$creadsPrec :: Int -> ReadS MessageReference
Read, MessageReference -> MessageReference -> Bool
(MessageReference -> MessageReference -> Bool)
-> (MessageReference -> MessageReference -> Bool)
-> Eq MessageReference
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MessageReference -> MessageReference -> Bool
$c/= :: MessageReference -> MessageReference -> Bool
== :: MessageReference -> MessageReference -> Bool
$c== :: MessageReference -> MessageReference -> Bool
Eq, Eq MessageReference
Eq MessageReference
-> (MessageReference -> MessageReference -> Ordering)
-> (MessageReference -> MessageReference -> Bool)
-> (MessageReference -> MessageReference -> Bool)
-> (MessageReference -> MessageReference -> Bool)
-> (MessageReference -> MessageReference -> Bool)
-> (MessageReference -> MessageReference -> MessageReference)
-> (MessageReference -> MessageReference -> MessageReference)
-> Ord MessageReference
MessageReference -> MessageReference -> Bool
MessageReference -> MessageReference -> Ordering
MessageReference -> MessageReference -> MessageReference
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
min :: MessageReference -> MessageReference -> MessageReference
$cmin :: MessageReference -> MessageReference -> MessageReference
max :: MessageReference -> MessageReference -> MessageReference
$cmax :: MessageReference -> MessageReference -> MessageReference
>= :: MessageReference -> MessageReference -> Bool
$c>= :: MessageReference -> MessageReference -> Bool
> :: MessageReference -> MessageReference -> Bool
$c> :: MessageReference -> MessageReference -> Bool
<= :: MessageReference -> MessageReference -> Bool
$c<= :: MessageReference -> MessageReference -> Bool
< :: MessageReference -> MessageReference -> Bool
$c< :: MessageReference -> MessageReference -> Bool
compare :: MessageReference -> MessageReference -> Ordering
$ccompare :: MessageReference -> MessageReference -> Ordering
$cp1Ord :: Eq MessageReference
Ord)
instance FromJSON MessageReference where
parseJSON :: Value -> Parser MessageReference
parseJSON = String
-> (Object -> Parser MessageReference)
-> Value
-> Parser MessageReference
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"MessageReference" ((Object -> Parser MessageReference)
-> Value -> Parser MessageReference)
-> (Object -> Parser MessageReference)
-> Value
-> Parser MessageReference
forall a b. (a -> b) -> a -> b
$ \Object
o ->
Maybe ChannelId
-> Maybe ChannelId -> Maybe ChannelId -> Bool -> MessageReference
MessageReference (Maybe ChannelId
-> Maybe ChannelId -> Maybe ChannelId -> Bool -> MessageReference)
-> Parser (Maybe ChannelId)
-> Parser
(Maybe ChannelId -> Maybe ChannelId -> Bool -> MessageReference)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"message_id"
Parser
(Maybe ChannelId -> Maybe ChannelId -> Bool -> MessageReference)
-> Parser (Maybe ChannelId)
-> Parser (Maybe ChannelId -> Bool -> MessageReference)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"channel_id"
Parser (Maybe ChannelId -> Bool -> MessageReference)
-> Parser (Maybe ChannelId) -> Parser (Bool -> MessageReference)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe ChannelId)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
.:? Key
"guild_id"
Parser (Bool -> MessageReference)
-> Parser Bool -> Parser MessageReference
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
"fail_if_not_exists" Parser (Maybe Bool) -> Bool -> Parser Bool
forall a. Parser (Maybe a) -> a -> Parser a
.!= Bool
True
instance ToJSON MessageReference where
toJSON :: MessageReference -> Value
toJSON MessageReference{Bool
Maybe ChannelId
failIfNotExists :: Bool
referenceGuildId :: Maybe ChannelId
referenceChannelId :: Maybe ChannelId
referenceMessageId :: Maybe ChannelId
failIfNotExists :: MessageReference -> Bool
referenceGuildId :: MessageReference -> Maybe ChannelId
referenceChannelId :: MessageReference -> Maybe ChannelId
referenceMessageId :: MessageReference -> Maybe ChannelId
..} = [Pair] -> Value
object [(Key
name,Value
value) | (Key
name, Just Value
value) <-
[ (Key
"message_id", Maybe ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (Maybe ChannelId -> Value)
-> Maybe (Maybe ChannelId) -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ChannelId -> Maybe (Maybe ChannelId)
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe ChannelId
referenceMessageId)
, (Key
"channel_id", Maybe ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (Maybe ChannelId -> Value)
-> Maybe (Maybe ChannelId) -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ChannelId -> Maybe (Maybe ChannelId)
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe ChannelId
referenceChannelId)
, (Key
"guild_id", Maybe ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (Maybe ChannelId -> Value)
-> Maybe (Maybe ChannelId) -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe ChannelId -> Maybe (Maybe ChannelId)
forall (f :: * -> *) a. Applicative f => a -> f a
pure Maybe ChannelId
referenceGuildId)
, (Key
"fail_if_not_exists", Bool -> Value
forall a. ToJSON a => a -> Value
toJSON (Bool -> Value) -> Maybe Bool -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Bool -> Maybe Bool
forall (f :: * -> *) a. Applicative f => a -> f a
pure Bool
failIfNotExists)
] ]
instance Default MessageReference where
def :: MessageReference
def = MessageReference :: Maybe ChannelId
-> Maybe ChannelId -> Maybe ChannelId -> Bool -> MessageReference
MessageReference { referenceMessageId :: Maybe ChannelId
referenceMessageId = Maybe ChannelId
forall a. Maybe a
Nothing
, referenceChannelId :: Maybe ChannelId
referenceChannelId = Maybe ChannelId
forall a. Maybe a
Nothing
, referenceGuildId :: Maybe ChannelId
referenceGuildId = Maybe ChannelId
forall a. Maybe a
Nothing
, failIfNotExists :: Bool
failIfNotExists = Bool
False
}
data MessageType
= MessageTypeDefault
| MessageTypeRecipientAdd
| MessageTypeRecipientRemove
| MessageTypeCall
| MessageTypeChannelNameChange
| MessageTypeChannelIconChange
| MessageTypeChannelPinnedMessage
| MessageTypeGuildMemberJoin
| MessageTypeUserPremiumGuildSubscription
| MessageTypeUserPremiumGuildSubscriptionTier1
| MessageTypeUserPremiumGuildSubscriptionTier2
| MessageTypeUserPremiumGuildSubscriptionTier3
| MessageTypeChannelFollowAdd
| MessageTypeGuildDiscoveryDisqualified
| MessageTypeGuildDiscoveryRequalified
| MessageTypeGuildDiscoveryGracePeriodInitialWarning
| MessageTypeGuildDiscoveryGracePeriodFinalWarning
| MessageTypeThreadCreated
| MessageTypeReply
| MessageTypeChatInputCommand
| MessageTypeThreadStarterMessage
| MessageTypeGuildInviteReminder
| MessageTypeContextMenuCommand
deriving (Int -> MessageType -> ShowS
[MessageType] -> ShowS
MessageType -> String
(Int -> MessageType -> ShowS)
-> (MessageType -> String)
-> ([MessageType] -> ShowS)
-> Show MessageType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MessageType] -> ShowS
$cshowList :: [MessageType] -> ShowS
show :: MessageType -> String
$cshow :: MessageType -> String
showsPrec :: Int -> MessageType -> ShowS
$cshowsPrec :: Int -> MessageType -> ShowS
Show, ReadPrec [MessageType]
ReadPrec MessageType
Int -> ReadS MessageType
ReadS [MessageType]
(Int -> ReadS MessageType)
-> ReadS [MessageType]
-> ReadPrec MessageType
-> ReadPrec [MessageType]
-> Read MessageType
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MessageType]
$creadListPrec :: ReadPrec [MessageType]
readPrec :: ReadPrec MessageType
$creadPrec :: ReadPrec MessageType
readList :: ReadS [MessageType]
$creadList :: ReadS [MessageType]
readsPrec :: Int -> ReadS MessageType
$creadsPrec :: Int -> ReadS MessageType
Read, Typeable MessageType
DataType
Constr
Typeable MessageType
-> (forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> MessageType -> c MessageType)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c MessageType)
-> (MessageType -> Constr)
-> (MessageType -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c MessageType))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c MessageType))
-> ((forall b. Data b => b -> b) -> MessageType -> MessageType)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MessageType -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MessageType -> r)
-> (forall u. (forall d. Data d => d -> u) -> MessageType -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> MessageType -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> MessageType -> m MessageType)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> MessageType -> m MessageType)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> MessageType -> m MessageType)
-> Data MessageType
MessageType -> DataType
MessageType -> Constr
(forall b. Data b => b -> b) -> MessageType -> MessageType
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> MessageType -> c MessageType
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c MessageType
forall a.
Typeable a
-> (forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> MessageType -> u
forall u. (forall d. Data d => d -> u) -> MessageType -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MessageType -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MessageType -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> MessageType -> m MessageType
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> MessageType -> m MessageType
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c MessageType
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> MessageType -> c MessageType
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c MessageType)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c MessageType)
$cMessageTypeContextMenuCommand :: Constr
$cMessageTypeGuildInviteReminder :: Constr
$cMessageTypeThreadStarterMessage :: Constr
$cMessageTypeChatInputCommand :: Constr
$cMessageTypeReply :: Constr
$cMessageTypeThreadCreated :: Constr
$cMessageTypeGuildDiscoveryGracePeriodFinalWarning :: Constr
$cMessageTypeGuildDiscoveryGracePeriodInitialWarning :: Constr
$cMessageTypeGuildDiscoveryRequalified :: Constr
$cMessageTypeGuildDiscoveryDisqualified :: Constr
$cMessageTypeChannelFollowAdd :: Constr
$cMessageTypeUserPremiumGuildSubscriptionTier3 :: Constr
$cMessageTypeUserPremiumGuildSubscriptionTier2 :: Constr
$cMessageTypeUserPremiumGuildSubscriptionTier1 :: Constr
$cMessageTypeUserPremiumGuildSubscription :: Constr
$cMessageTypeGuildMemberJoin :: Constr
$cMessageTypeChannelPinnedMessage :: Constr
$cMessageTypeChannelIconChange :: Constr
$cMessageTypeChannelNameChange :: Constr
$cMessageTypeCall :: Constr
$cMessageTypeRecipientRemove :: Constr
$cMessageTypeRecipientAdd :: Constr
$cMessageTypeDefault :: Constr
$tMessageType :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> MessageType -> m MessageType
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> MessageType -> m MessageType
gmapMp :: (forall d. Data d => d -> m d) -> MessageType -> m MessageType
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> MessageType -> m MessageType
gmapM :: (forall d. Data d => d -> m d) -> MessageType -> m MessageType
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> MessageType -> m MessageType
gmapQi :: Int -> (forall d. Data d => d -> u) -> MessageType -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> MessageType -> u
gmapQ :: (forall d. Data d => d -> u) -> MessageType -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> MessageType -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MessageType -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MessageType -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MessageType -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MessageType -> r
gmapT :: (forall b. Data b => b -> b) -> MessageType -> MessageType
$cgmapT :: (forall b. Data b => b -> b) -> MessageType -> MessageType
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c MessageType)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c MessageType)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c MessageType)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c MessageType)
dataTypeOf :: MessageType -> DataType
$cdataTypeOf :: MessageType -> DataType
toConstr :: MessageType -> Constr
$ctoConstr :: MessageType -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c MessageType
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c MessageType
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> MessageType -> c MessageType
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> MessageType -> c MessageType
$cp1Data :: Typeable MessageType
Data, MessageType -> MessageType -> Bool
(MessageType -> MessageType -> Bool)
-> (MessageType -> MessageType -> Bool) -> Eq MessageType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MessageType -> MessageType -> Bool
$c/= :: MessageType -> MessageType -> Bool
== :: MessageType -> MessageType -> Bool
$c== :: MessageType -> MessageType -> Bool
Eq, Eq MessageType
Eq MessageType
-> (MessageType -> MessageType -> Ordering)
-> (MessageType -> MessageType -> Bool)
-> (MessageType -> MessageType -> Bool)
-> (MessageType -> MessageType -> Bool)
-> (MessageType -> MessageType -> Bool)
-> (MessageType -> MessageType -> MessageType)
-> (MessageType -> MessageType -> MessageType)
-> Ord MessageType
MessageType -> MessageType -> Bool
MessageType -> MessageType -> Ordering
MessageType -> MessageType -> MessageType
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
min :: MessageType -> MessageType -> MessageType
$cmin :: MessageType -> MessageType -> MessageType
max :: MessageType -> MessageType -> MessageType
$cmax :: MessageType -> MessageType -> MessageType
>= :: MessageType -> MessageType -> Bool
$c>= :: MessageType -> MessageType -> Bool
> :: MessageType -> MessageType -> Bool
$c> :: MessageType -> MessageType -> Bool
<= :: MessageType -> MessageType -> Bool
$c<= :: MessageType -> MessageType -> Bool
< :: MessageType -> MessageType -> Bool
$c< :: MessageType -> MessageType -> Bool
compare :: MessageType -> MessageType -> Ordering
$ccompare :: MessageType -> MessageType -> Ordering
$cp1Ord :: Eq MessageType
Ord)
instance InternalDiscordEnum MessageType where
discordTypeStartValue :: MessageType
discordTypeStartValue = MessageType
MessageTypeDefault
fromDiscordType :: MessageType -> Int
fromDiscordType MessageType
MessageTypeDefault = Int
0
fromDiscordType MessageType
MessageTypeRecipientAdd = Int
1
fromDiscordType MessageType
MessageTypeRecipientRemove = Int
2
fromDiscordType MessageType
MessageTypeCall = Int
3
fromDiscordType MessageType
MessageTypeChannelNameChange = Int
4
fromDiscordType MessageType
MessageTypeChannelIconChange = Int
5
fromDiscordType MessageType
MessageTypeChannelPinnedMessage = Int
6
fromDiscordType MessageType
MessageTypeGuildMemberJoin = Int
7
fromDiscordType MessageType
MessageTypeUserPremiumGuildSubscription = Int
8
fromDiscordType MessageType
MessageTypeUserPremiumGuildSubscriptionTier1 = Int
9
fromDiscordType MessageType
MessageTypeUserPremiumGuildSubscriptionTier2 = Int
10
fromDiscordType MessageType
MessageTypeUserPremiumGuildSubscriptionTier3 = Int
11
fromDiscordType MessageType
MessageTypeChannelFollowAdd = Int
12
fromDiscordType MessageType
MessageTypeGuildDiscoveryDisqualified = Int
14
fromDiscordType MessageType
MessageTypeGuildDiscoveryRequalified = Int
15
fromDiscordType MessageType
MessageTypeGuildDiscoveryGracePeriodInitialWarning = Int
16
fromDiscordType MessageType
MessageTypeGuildDiscoveryGracePeriodFinalWarning = Int
17
fromDiscordType MessageType
MessageTypeThreadCreated = Int
18
fromDiscordType MessageType
MessageTypeReply = Int
19
fromDiscordType MessageType
MessageTypeChatInputCommand = Int
20
fromDiscordType MessageType
MessageTypeThreadStarterMessage = Int
21
fromDiscordType MessageType
MessageTypeGuildInviteReminder = Int
22
fromDiscordType MessageType
MessageTypeContextMenuCommand = Int
23
instance ToJSON MessageType where
toJSON :: MessageType -> Value
toJSON = Int -> Value
forall a. ToJSON a => a -> Value
toJSON (Int -> Value) -> (MessageType -> Int) -> MessageType -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MessageType -> Int
forall a. InternalDiscordEnum a => a -> Int
fromDiscordType
instance FromJSON MessageType where
parseJSON :: Value -> Parser MessageType
parseJSON = String -> Value -> Parser MessageType
forall a. InternalDiscordEnum a => String -> Value -> Parser a
discordTypeParseJSON String
"MessageType"
data MessageActivity = MessageActivity
{ MessageActivity -> MessageActivityType
messageActivityType :: MessageActivityType
, MessageActivity -> Maybe Text
messageActivityPartyId :: Maybe T.Text
}
deriving (Int -> MessageActivity -> ShowS
[MessageActivity] -> ShowS
MessageActivity -> String
(Int -> MessageActivity -> ShowS)
-> (MessageActivity -> String)
-> ([MessageActivity] -> ShowS)
-> Show MessageActivity
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MessageActivity] -> ShowS
$cshowList :: [MessageActivity] -> ShowS
show :: MessageActivity -> String
$cshow :: MessageActivity -> String
showsPrec :: Int -> MessageActivity -> ShowS
$cshowsPrec :: Int -> MessageActivity -> ShowS
Show, ReadPrec [MessageActivity]
ReadPrec MessageActivity
Int -> ReadS MessageActivity
ReadS [MessageActivity]
(Int -> ReadS MessageActivity)
-> ReadS [MessageActivity]
-> ReadPrec MessageActivity
-> ReadPrec [MessageActivity]
-> Read MessageActivity
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MessageActivity]
$creadListPrec :: ReadPrec [MessageActivity]
readPrec :: ReadPrec MessageActivity
$creadPrec :: ReadPrec MessageActivity
readList :: ReadS [MessageActivity]
$creadList :: ReadS [MessageActivity]
readsPrec :: Int -> ReadS MessageActivity
$creadsPrec :: Int -> ReadS MessageActivity
Read, Typeable MessageActivity
DataType
Constr
Typeable MessageActivity
-> (forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> MessageActivity -> c MessageActivity)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c MessageActivity)
-> (MessageActivity -> Constr)
-> (MessageActivity -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c MessageActivity))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c MessageActivity))
-> ((forall b. Data b => b -> b)
-> MessageActivity -> MessageActivity)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MessageActivity -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MessageActivity -> r)
-> (forall u.
(forall d. Data d => d -> u) -> MessageActivity -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> MessageActivity -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> MessageActivity -> m MessageActivity)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> MessageActivity -> m MessageActivity)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> MessageActivity -> m MessageActivity)
-> Data MessageActivity
MessageActivity -> DataType
MessageActivity -> Constr
(forall b. Data b => b -> b) -> MessageActivity -> MessageActivity
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> MessageActivity -> c MessageActivity
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c MessageActivity
forall a.
Typeable a
-> (forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u.
Int -> (forall d. Data d => d -> u) -> MessageActivity -> u
forall u. (forall d. Data d => d -> u) -> MessageActivity -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MessageActivity -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MessageActivity -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> MessageActivity -> m MessageActivity
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> MessageActivity -> m MessageActivity
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c MessageActivity
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> MessageActivity -> c MessageActivity
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c MessageActivity)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c MessageActivity)
$cMessageActivity :: Constr
$tMessageActivity :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> MessageActivity -> m MessageActivity
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> MessageActivity -> m MessageActivity
gmapMp :: (forall d. Data d => d -> m d)
-> MessageActivity -> m MessageActivity
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> MessageActivity -> m MessageActivity
gmapM :: (forall d. Data d => d -> m d)
-> MessageActivity -> m MessageActivity
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> MessageActivity -> m MessageActivity
gmapQi :: Int -> (forall d. Data d => d -> u) -> MessageActivity -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> MessageActivity -> u
gmapQ :: (forall d. Data d => d -> u) -> MessageActivity -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> MessageActivity -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MessageActivity -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MessageActivity -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MessageActivity -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MessageActivity -> r
gmapT :: (forall b. Data b => b -> b) -> MessageActivity -> MessageActivity
$cgmapT :: (forall b. Data b => b -> b) -> MessageActivity -> MessageActivity
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c MessageActivity)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c MessageActivity)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c MessageActivity)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c MessageActivity)
dataTypeOf :: MessageActivity -> DataType
$cdataTypeOf :: MessageActivity -> DataType
toConstr :: MessageActivity -> Constr
$ctoConstr :: MessageActivity -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c MessageActivity
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c MessageActivity
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> MessageActivity -> c MessageActivity
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> MessageActivity -> c MessageActivity
$cp1Data :: Typeable MessageActivity
Data, MessageActivity -> MessageActivity -> Bool
(MessageActivity -> MessageActivity -> Bool)
-> (MessageActivity -> MessageActivity -> Bool)
-> Eq MessageActivity
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MessageActivity -> MessageActivity -> Bool
$c/= :: MessageActivity -> MessageActivity -> Bool
== :: MessageActivity -> MessageActivity -> Bool
$c== :: MessageActivity -> MessageActivity -> Bool
Eq, Eq MessageActivity
Eq MessageActivity
-> (MessageActivity -> MessageActivity -> Ordering)
-> (MessageActivity -> MessageActivity -> Bool)
-> (MessageActivity -> MessageActivity -> Bool)
-> (MessageActivity -> MessageActivity -> Bool)
-> (MessageActivity -> MessageActivity -> Bool)
-> (MessageActivity -> MessageActivity -> MessageActivity)
-> (MessageActivity -> MessageActivity -> MessageActivity)
-> Ord MessageActivity
MessageActivity -> MessageActivity -> Bool
MessageActivity -> MessageActivity -> Ordering
MessageActivity -> MessageActivity -> MessageActivity
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
min :: MessageActivity -> MessageActivity -> MessageActivity
$cmin :: MessageActivity -> MessageActivity -> MessageActivity
max :: MessageActivity -> MessageActivity -> MessageActivity
$cmax :: MessageActivity -> MessageActivity -> MessageActivity
>= :: MessageActivity -> MessageActivity -> Bool
$c>= :: MessageActivity -> MessageActivity -> Bool
> :: MessageActivity -> MessageActivity -> Bool
$c> :: MessageActivity -> MessageActivity -> Bool
<= :: MessageActivity -> MessageActivity -> Bool
$c<= :: MessageActivity -> MessageActivity -> Bool
< :: MessageActivity -> MessageActivity -> Bool
$c< :: MessageActivity -> MessageActivity -> Bool
compare :: MessageActivity -> MessageActivity -> Ordering
$ccompare :: MessageActivity -> MessageActivity -> Ordering
$cp1Ord :: Eq MessageActivity
Ord)
instance FromJSON MessageActivity where
parseJSON :: Value -> Parser MessageActivity
parseJSON = String
-> (Object -> Parser MessageActivity)
-> Value
-> Parser MessageActivity
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"MessageActivity" ((Object -> Parser MessageActivity)
-> Value -> Parser MessageActivity)
-> (Object -> Parser MessageActivity)
-> Value
-> Parser MessageActivity
forall a b. (a -> b) -> a -> b
$ \Object
o ->
MessageActivityType -> Maybe Text -> MessageActivity
MessageActivity (MessageActivityType -> Maybe Text -> MessageActivity)
-> Parser MessageActivityType
-> Parser (Maybe Text -> MessageActivity)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser MessageActivityType
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"type"
Parser (Maybe Text -> MessageActivity)
-> Parser (Maybe Text) -> Parser MessageActivity
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
"party_id"
instance ToJSON MessageActivity where
toJSON :: MessageActivity -> Value
toJSON MessageActivity{Maybe Text
MessageActivityType
messageActivityPartyId :: Maybe Text
messageActivityType :: MessageActivityType
messageActivityPartyId :: MessageActivity -> Maybe Text
messageActivityType :: MessageActivity -> MessageActivityType
..} = [Pair] -> Value
object [(Key
name,Value
value) | (Key
name, Just Value
value) <-
[ (Key
"type", MessageActivityType -> Value
forall a. ToJSON a => a -> Value
toJSON (MessageActivityType -> Value)
-> Maybe MessageActivityType -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> MessageActivityType -> Maybe MessageActivityType
forall (f :: * -> *) a. Applicative f => a -> f a
pure MessageActivityType
messageActivityType)
, (Key
"party_id", Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Text
messageActivityPartyId)
] ]
data MessageActivityType
= MessageActivityTypeJoin
| MessageActivityTypeSpectate
| MessageActivityTypeListen
| MessageActivityTypeJoinRequest
deriving (Int -> MessageActivityType -> ShowS
[MessageActivityType] -> ShowS
MessageActivityType -> String
(Int -> MessageActivityType -> ShowS)
-> (MessageActivityType -> String)
-> ([MessageActivityType] -> ShowS)
-> Show MessageActivityType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MessageActivityType] -> ShowS
$cshowList :: [MessageActivityType] -> ShowS
show :: MessageActivityType -> String
$cshow :: MessageActivityType -> String
showsPrec :: Int -> MessageActivityType -> ShowS
$cshowsPrec :: Int -> MessageActivityType -> ShowS
Show, ReadPrec [MessageActivityType]
ReadPrec MessageActivityType
Int -> ReadS MessageActivityType
ReadS [MessageActivityType]
(Int -> ReadS MessageActivityType)
-> ReadS [MessageActivityType]
-> ReadPrec MessageActivityType
-> ReadPrec [MessageActivityType]
-> Read MessageActivityType
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MessageActivityType]
$creadListPrec :: ReadPrec [MessageActivityType]
readPrec :: ReadPrec MessageActivityType
$creadPrec :: ReadPrec MessageActivityType
readList :: ReadS [MessageActivityType]
$creadList :: ReadS [MessageActivityType]
readsPrec :: Int -> ReadS MessageActivityType
$creadsPrec :: Int -> ReadS MessageActivityType
Read, Typeable MessageActivityType
DataType
Constr
Typeable MessageActivityType
-> (forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> MessageActivityType
-> c MessageActivityType)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c MessageActivityType)
-> (MessageActivityType -> Constr)
-> (MessageActivityType -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c MessageActivityType))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c MessageActivityType))
-> ((forall b. Data b => b -> b)
-> MessageActivityType -> MessageActivityType)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MessageActivityType -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MessageActivityType -> r)
-> (forall u.
(forall d. Data d => d -> u) -> MessageActivityType -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> MessageActivityType -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> MessageActivityType -> m MessageActivityType)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> MessageActivityType -> m MessageActivityType)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> MessageActivityType -> m MessageActivityType)
-> Data MessageActivityType
MessageActivityType -> DataType
MessageActivityType -> Constr
(forall b. Data b => b -> b)
-> MessageActivityType -> MessageActivityType
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> MessageActivityType
-> c MessageActivityType
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c MessageActivityType
forall a.
Typeable a
-> (forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u.
Int -> (forall d. Data d => d -> u) -> MessageActivityType -> u
forall u.
(forall d. Data d => d -> u) -> MessageActivityType -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MessageActivityType -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MessageActivityType -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> MessageActivityType -> m MessageActivityType
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> MessageActivityType -> m MessageActivityType
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c MessageActivityType
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> MessageActivityType
-> c MessageActivityType
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c MessageActivityType)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c MessageActivityType)
$cMessageActivityTypeJoinRequest :: Constr
$cMessageActivityTypeListen :: Constr
$cMessageActivityTypeSpectate :: Constr
$cMessageActivityTypeJoin :: Constr
$tMessageActivityType :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> MessageActivityType -> m MessageActivityType
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> MessageActivityType -> m MessageActivityType
gmapMp :: (forall d. Data d => d -> m d)
-> MessageActivityType -> m MessageActivityType
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> MessageActivityType -> m MessageActivityType
gmapM :: (forall d. Data d => d -> m d)
-> MessageActivityType -> m MessageActivityType
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> MessageActivityType -> m MessageActivityType
gmapQi :: Int -> (forall d. Data d => d -> u) -> MessageActivityType -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> MessageActivityType -> u
gmapQ :: (forall d. Data d => d -> u) -> MessageActivityType -> [u]
$cgmapQ :: forall u.
(forall d. Data d => d -> u) -> MessageActivityType -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MessageActivityType -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MessageActivityType -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MessageActivityType -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MessageActivityType -> r
gmapT :: (forall b. Data b => b -> b)
-> MessageActivityType -> MessageActivityType
$cgmapT :: (forall b. Data b => b -> b)
-> MessageActivityType -> MessageActivityType
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c MessageActivityType)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c MessageActivityType)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c MessageActivityType)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c MessageActivityType)
dataTypeOf :: MessageActivityType -> DataType
$cdataTypeOf :: MessageActivityType -> DataType
toConstr :: MessageActivityType -> Constr
$ctoConstr :: MessageActivityType -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c MessageActivityType
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c MessageActivityType
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> MessageActivityType
-> c MessageActivityType
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> MessageActivityType
-> c MessageActivityType
$cp1Data :: Typeable MessageActivityType
Data, MessageActivityType -> MessageActivityType -> Bool
(MessageActivityType -> MessageActivityType -> Bool)
-> (MessageActivityType -> MessageActivityType -> Bool)
-> Eq MessageActivityType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MessageActivityType -> MessageActivityType -> Bool
$c/= :: MessageActivityType -> MessageActivityType -> Bool
== :: MessageActivityType -> MessageActivityType -> Bool
$c== :: MessageActivityType -> MessageActivityType -> Bool
Eq, Eq MessageActivityType
Eq MessageActivityType
-> (MessageActivityType -> MessageActivityType -> Ordering)
-> (MessageActivityType -> MessageActivityType -> Bool)
-> (MessageActivityType -> MessageActivityType -> Bool)
-> (MessageActivityType -> MessageActivityType -> Bool)
-> (MessageActivityType -> MessageActivityType -> Bool)
-> (MessageActivityType
-> MessageActivityType -> MessageActivityType)
-> (MessageActivityType
-> MessageActivityType -> MessageActivityType)
-> Ord MessageActivityType
MessageActivityType -> MessageActivityType -> Bool
MessageActivityType -> MessageActivityType -> Ordering
MessageActivityType -> MessageActivityType -> MessageActivityType
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
min :: MessageActivityType -> MessageActivityType -> MessageActivityType
$cmin :: MessageActivityType -> MessageActivityType -> MessageActivityType
max :: MessageActivityType -> MessageActivityType -> MessageActivityType
$cmax :: MessageActivityType -> MessageActivityType -> MessageActivityType
>= :: MessageActivityType -> MessageActivityType -> Bool
$c>= :: MessageActivityType -> MessageActivityType -> Bool
> :: MessageActivityType -> MessageActivityType -> Bool
$c> :: MessageActivityType -> MessageActivityType -> Bool
<= :: MessageActivityType -> MessageActivityType -> Bool
$c<= :: MessageActivityType -> MessageActivityType -> Bool
< :: MessageActivityType -> MessageActivityType -> Bool
$c< :: MessageActivityType -> MessageActivityType -> Bool
compare :: MessageActivityType -> MessageActivityType -> Ordering
$ccompare :: MessageActivityType -> MessageActivityType -> Ordering
$cp1Ord :: Eq MessageActivityType
Ord)
instance InternalDiscordEnum MessageActivityType where
discordTypeStartValue :: MessageActivityType
discordTypeStartValue = MessageActivityType
MessageActivityTypeJoin
fromDiscordType :: MessageActivityType -> Int
fromDiscordType MessageActivityType
MessageActivityTypeJoin = Int
1
fromDiscordType MessageActivityType
MessageActivityTypeSpectate = Int
2
fromDiscordType MessageActivityType
MessageActivityTypeListen = Int
3
fromDiscordType MessageActivityType
MessageActivityTypeJoinRequest = Int
4
instance ToJSON MessageActivityType where
toJSON :: MessageActivityType -> Value
toJSON = Int -> Value
forall a. ToJSON a => a -> Value
toJSON (Int -> Value)
-> (MessageActivityType -> Int) -> MessageActivityType -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MessageActivityType -> Int
forall a. InternalDiscordEnum a => a -> Int
fromDiscordType
instance FromJSON MessageActivityType where
parseJSON :: Value -> Parser MessageActivityType
parseJSON = String -> Value -> Parser MessageActivityType
forall a. InternalDiscordEnum a => String -> Value -> Parser a
discordTypeParseJSON String
"MessageActivityType"
data MessageFlag =
MessageFlagCrossposted
| MessageFlagIsCrosspost
| MessageFlagSupressEmbeds
| MessageFlagSourceMessageDeleted
| MessageFlagUrgent
| MessageFlagHasThread
| MessageFlagEphemeral
| MessageFlagLoading
| MessageFlagFailedToMentionRollesInThread
deriving (Int -> MessageFlag -> ShowS
[MessageFlag] -> ShowS
MessageFlag -> String
(Int -> MessageFlag -> ShowS)
-> (MessageFlag -> String)
-> ([MessageFlag] -> ShowS)
-> Show MessageFlag
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MessageFlag] -> ShowS
$cshowList :: [MessageFlag] -> ShowS
show :: MessageFlag -> String
$cshow :: MessageFlag -> String
showsPrec :: Int -> MessageFlag -> ShowS
$cshowsPrec :: Int -> MessageFlag -> ShowS
Show, ReadPrec [MessageFlag]
ReadPrec MessageFlag
Int -> ReadS MessageFlag
ReadS [MessageFlag]
(Int -> ReadS MessageFlag)
-> ReadS [MessageFlag]
-> ReadPrec MessageFlag
-> ReadPrec [MessageFlag]
-> Read MessageFlag
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MessageFlag]
$creadListPrec :: ReadPrec [MessageFlag]
readPrec :: ReadPrec MessageFlag
$creadPrec :: ReadPrec MessageFlag
readList :: ReadS [MessageFlag]
$creadList :: ReadS [MessageFlag]
readsPrec :: Int -> ReadS MessageFlag
$creadsPrec :: Int -> ReadS MessageFlag
Read, MessageFlag -> MessageFlag -> Bool
(MessageFlag -> MessageFlag -> Bool)
-> (MessageFlag -> MessageFlag -> Bool) -> Eq MessageFlag
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MessageFlag -> MessageFlag -> Bool
$c/= :: MessageFlag -> MessageFlag -> Bool
== :: MessageFlag -> MessageFlag -> Bool
$c== :: MessageFlag -> MessageFlag -> Bool
Eq, Typeable MessageFlag
DataType
Constr
Typeable MessageFlag
-> (forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> MessageFlag -> c MessageFlag)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c MessageFlag)
-> (MessageFlag -> Constr)
-> (MessageFlag -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c MessageFlag))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c MessageFlag))
-> ((forall b. Data b => b -> b) -> MessageFlag -> MessageFlag)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MessageFlag -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MessageFlag -> r)
-> (forall u. (forall d. Data d => d -> u) -> MessageFlag -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> MessageFlag -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> MessageFlag -> m MessageFlag)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> MessageFlag -> m MessageFlag)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> MessageFlag -> m MessageFlag)
-> Data MessageFlag
MessageFlag -> DataType
MessageFlag -> Constr
(forall b. Data b => b -> b) -> MessageFlag -> MessageFlag
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> MessageFlag -> c MessageFlag
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c MessageFlag
forall a.
Typeable a
-> (forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> a -> c a)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c a)
-> (a -> Constr)
-> (a -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c a))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c a))
-> ((forall b. Data b => b -> b) -> a -> a)
-> (forall r r'.
(r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall r r'.
(r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> a -> r)
-> (forall u. (forall d. Data d => d -> u) -> a -> [u])
-> (forall u. Int -> (forall d. Data d => d -> u) -> a -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> a -> m a)
-> Data a
forall u. Int -> (forall d. Data d => d -> u) -> MessageFlag -> u
forall u. (forall d. Data d => d -> u) -> MessageFlag -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MessageFlag -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MessageFlag -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> MessageFlag -> m MessageFlag
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> MessageFlag -> m MessageFlag
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c MessageFlag
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> MessageFlag -> c MessageFlag
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c MessageFlag)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c MessageFlag)
$cMessageFlagFailedToMentionRollesInThread :: Constr
$cMessageFlagLoading :: Constr
$cMessageFlagEphemeral :: Constr
$cMessageFlagHasThread :: Constr
$cMessageFlagUrgent :: Constr
$cMessageFlagSourceMessageDeleted :: Constr
$cMessageFlagSupressEmbeds :: Constr
$cMessageFlagIsCrosspost :: Constr
$cMessageFlagCrossposted :: Constr
$tMessageFlag :: DataType
gmapMo :: (forall d. Data d => d -> m d) -> MessageFlag -> m MessageFlag
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> MessageFlag -> m MessageFlag
gmapMp :: (forall d. Data d => d -> m d) -> MessageFlag -> m MessageFlag
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d) -> MessageFlag -> m MessageFlag
gmapM :: (forall d. Data d => d -> m d) -> MessageFlag -> m MessageFlag
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d) -> MessageFlag -> m MessageFlag
gmapQi :: Int -> (forall d. Data d => d -> u) -> MessageFlag -> u
$cgmapQi :: forall u. Int -> (forall d. Data d => d -> u) -> MessageFlag -> u
gmapQ :: (forall d. Data d => d -> u) -> MessageFlag -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> MessageFlag -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MessageFlag -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> MessageFlag -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MessageFlag -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> MessageFlag -> r
gmapT :: (forall b. Data b => b -> b) -> MessageFlag -> MessageFlag
$cgmapT :: (forall b. Data b => b -> b) -> MessageFlag -> MessageFlag
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c MessageFlag)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c MessageFlag)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c MessageFlag)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c MessageFlag)
dataTypeOf :: MessageFlag -> DataType
$cdataTypeOf :: MessageFlag -> DataType
toConstr :: MessageFlag -> Constr
$ctoConstr :: MessageFlag -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c MessageFlag
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c MessageFlag
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> MessageFlag -> c MessageFlag
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> MessageFlag -> c MessageFlag
$cp1Data :: Typeable MessageFlag
Data, Eq MessageFlag
Eq MessageFlag
-> (MessageFlag -> MessageFlag -> Ordering)
-> (MessageFlag -> MessageFlag -> Bool)
-> (MessageFlag -> MessageFlag -> Bool)
-> (MessageFlag -> MessageFlag -> Bool)
-> (MessageFlag -> MessageFlag -> Bool)
-> (MessageFlag -> MessageFlag -> MessageFlag)
-> (MessageFlag -> MessageFlag -> MessageFlag)
-> Ord MessageFlag
MessageFlag -> MessageFlag -> Bool
MessageFlag -> MessageFlag -> Ordering
MessageFlag -> MessageFlag -> MessageFlag
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
min :: MessageFlag -> MessageFlag -> MessageFlag
$cmin :: MessageFlag -> MessageFlag -> MessageFlag
max :: MessageFlag -> MessageFlag -> MessageFlag
$cmax :: MessageFlag -> MessageFlag -> MessageFlag
>= :: MessageFlag -> MessageFlag -> Bool
$c>= :: MessageFlag -> MessageFlag -> Bool
> :: MessageFlag -> MessageFlag -> Bool
$c> :: MessageFlag -> MessageFlag -> Bool
<= :: MessageFlag -> MessageFlag -> Bool
$c<= :: MessageFlag -> MessageFlag -> Bool
< :: MessageFlag -> MessageFlag -> Bool
$c< :: MessageFlag -> MessageFlag -> Bool
compare :: MessageFlag -> MessageFlag -> Ordering
$ccompare :: MessageFlag -> MessageFlag -> Ordering
$cp1Ord :: Eq MessageFlag
Ord)
newtype MessageFlags = MessageFlags [MessageFlag]
deriving (Int -> MessageFlags -> ShowS
[MessageFlags] -> ShowS
MessageFlags -> String
(Int -> MessageFlags -> ShowS)
-> (MessageFlags -> String)
-> ([MessageFlags] -> ShowS)
-> Show MessageFlags
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MessageFlags] -> ShowS
$cshowList :: [MessageFlags] -> ShowS
show :: MessageFlags -> String
$cshow :: MessageFlags -> String
showsPrec :: Int -> MessageFlags -> ShowS
$cshowsPrec :: Int -> MessageFlags -> ShowS
Show, ReadPrec [MessageFlags]
ReadPrec MessageFlags
Int -> ReadS MessageFlags
ReadS [MessageFlags]
(Int -> ReadS MessageFlags)
-> ReadS [MessageFlags]
-> ReadPrec MessageFlags
-> ReadPrec [MessageFlags]
-> Read MessageFlags
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MessageFlags]
$creadListPrec :: ReadPrec [MessageFlags]
readPrec :: ReadPrec MessageFlags
$creadPrec :: ReadPrec MessageFlags
readList :: ReadS [MessageFlags]
$creadList :: ReadS [MessageFlags]
readsPrec :: Int -> ReadS MessageFlags
$creadsPrec :: Int -> ReadS MessageFlags
Read, MessageFlags -> MessageFlags -> Bool
(MessageFlags -> MessageFlags -> Bool)
-> (MessageFlags -> MessageFlags -> Bool) -> Eq MessageFlags
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MessageFlags -> MessageFlags -> Bool
$c/= :: MessageFlags -> MessageFlags -> Bool
== :: MessageFlags -> MessageFlags -> Bool
$c== :: MessageFlags -> MessageFlags -> Bool
Eq, Eq MessageFlags
Eq MessageFlags
-> (MessageFlags -> MessageFlags -> Ordering)
-> (MessageFlags -> MessageFlags -> Bool)
-> (MessageFlags -> MessageFlags -> Bool)
-> (MessageFlags -> MessageFlags -> Bool)
-> (MessageFlags -> MessageFlags -> Bool)
-> (MessageFlags -> MessageFlags -> MessageFlags)
-> (MessageFlags -> MessageFlags -> MessageFlags)
-> Ord MessageFlags
MessageFlags -> MessageFlags -> Bool
MessageFlags -> MessageFlags -> Ordering
MessageFlags -> MessageFlags -> MessageFlags
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
min :: MessageFlags -> MessageFlags -> MessageFlags
$cmin :: MessageFlags -> MessageFlags -> MessageFlags
max :: MessageFlags -> MessageFlags -> MessageFlags
$cmax :: MessageFlags -> MessageFlags -> MessageFlags
>= :: MessageFlags -> MessageFlags -> Bool
$c>= :: MessageFlags -> MessageFlags -> Bool
> :: MessageFlags -> MessageFlags -> Bool
$c> :: MessageFlags -> MessageFlags -> Bool
<= :: MessageFlags -> MessageFlags -> Bool
$c<= :: MessageFlags -> MessageFlags -> Bool
< :: MessageFlags -> MessageFlags -> Bool
$c< :: MessageFlags -> MessageFlags -> Bool
compare :: MessageFlags -> MessageFlags -> Ordering
$ccompare :: MessageFlags -> MessageFlags -> Ordering
$cp1Ord :: Eq MessageFlags
Ord)
instance InternalDiscordEnum MessageFlag where
discordTypeStartValue :: MessageFlag
discordTypeStartValue = MessageFlag
MessageFlagCrossposted
fromDiscordType :: MessageFlag -> Int
fromDiscordType MessageFlag
MessageFlagCrossposted = Int
1 Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
0
fromDiscordType MessageFlag
MessageFlagIsCrosspost = Int
1 Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
1
fromDiscordType MessageFlag
MessageFlagSupressEmbeds = Int
1 Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
2
fromDiscordType MessageFlag
MessageFlagSourceMessageDeleted = Int
1 Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
3
fromDiscordType MessageFlag
MessageFlagUrgent = Int
1 Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
4
fromDiscordType MessageFlag
MessageFlagHasThread = Int
1 Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
5
fromDiscordType MessageFlag
MessageFlagEphemeral = Int
1 Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
6
fromDiscordType MessageFlag
MessageFlagLoading = Int
1 Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
7
fromDiscordType MessageFlag
MessageFlagFailedToMentionRollesInThread = Int
1 Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
8
instance ToJSON MessageFlags where
toJSON :: MessageFlags -> Value
toJSON (MessageFlags [MessageFlag]
fs) = Scientific -> Value
Number (Scientific -> Value) -> Scientific -> Value
forall a b. (a -> b) -> a -> b
$ Integer -> Scientific
forall a. Num a => Integer -> a
fromInteger (Integer -> Scientific) -> Integer -> Scientific
forall a b. (a -> b) -> a -> b
$ Int -> Integer
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Integer) -> Int -> Integer
forall a b. (a -> b) -> a -> b
$ (Int -> Int -> Int) -> Int -> [Int] -> Int
forall (t :: * -> *) a b.
Foldable t =>
(a -> b -> b) -> b -> t a -> b
foldr Int -> Int -> Int
forall a. Bits a => a -> a -> a
(.|.) Int
0 (MessageFlag -> Int
forall a. InternalDiscordEnum a => a -> Int
fromDiscordType (MessageFlag -> Int) -> [MessageFlag] -> [Int]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [MessageFlag]
fs)
instance FromJSON MessageFlags where
parseJSON :: Value -> Parser MessageFlags
parseJSON = String
-> (Scientific -> Parser MessageFlags)
-> Value
-> Parser MessageFlags
forall a. String -> (Scientific -> Parser a) -> Value -> Parser a
withScientific String
"MessageFlags" ((Scientific -> Parser MessageFlags)
-> Value -> Parser MessageFlags)
-> (Scientific -> Parser MessageFlags)
-> Value
-> Parser MessageFlags
forall a b. (a -> b) -> a -> b
$ \Scientific
s ->
let i :: Int
i = Scientific -> Int
forall a b. (RealFrac a, Integral b) => a -> b
round Scientific
s
in MessageFlags -> Parser MessageFlags
forall (m :: * -> *) a. Monad m => a -> m a
return (MessageFlags -> Parser MessageFlags)
-> MessageFlags -> Parser MessageFlags
forall a b. (a -> b) -> a -> b
$ [MessageFlag] -> MessageFlags
MessageFlags ((Int, MessageFlag) -> MessageFlag
forall a b. (a, b) -> b
snd ((Int, MessageFlag) -> MessageFlag)
-> [(Int, MessageFlag)] -> [MessageFlag]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ((Int, MessageFlag) -> Bool)
-> [(Int, MessageFlag)] -> [(Int, MessageFlag)]
forall a. (a -> Bool) -> [a] -> [a]
filter (\(Int
i',MessageFlag
_) -> Int
i Int -> Int -> Int
forall a. Bits a => a -> a -> a
.&. Int
i' Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
i') [(Int, MessageFlag)]
forall a. InternalDiscordEnum a => [(Int, a)]
discordTypeTable)
data MessageInteraction = MessageInteraction
{ MessageInteraction -> ChannelId
messageInteractionId :: InteractionId
, MessageInteraction -> Integer
messageInteractionType :: Integer
, MessageInteraction -> Text
messageInteractionName :: T.Text
, MessageInteraction -> User
messageInteractionUser :: User
} deriving (Int -> MessageInteraction -> ShowS
[MessageInteraction] -> ShowS
MessageInteraction -> String
(Int -> MessageInteraction -> ShowS)
-> (MessageInteraction -> String)
-> ([MessageInteraction] -> ShowS)
-> Show MessageInteraction
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MessageInteraction] -> ShowS
$cshowList :: [MessageInteraction] -> ShowS
show :: MessageInteraction -> String
$cshow :: MessageInteraction -> String
showsPrec :: Int -> MessageInteraction -> ShowS
$cshowsPrec :: Int -> MessageInteraction -> ShowS
Show, ReadPrec [MessageInteraction]
ReadPrec MessageInteraction
Int -> ReadS MessageInteraction
ReadS [MessageInteraction]
(Int -> ReadS MessageInteraction)
-> ReadS [MessageInteraction]
-> ReadPrec MessageInteraction
-> ReadPrec [MessageInteraction]
-> Read MessageInteraction
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MessageInteraction]
$creadListPrec :: ReadPrec [MessageInteraction]
readPrec :: ReadPrec MessageInteraction
$creadPrec :: ReadPrec MessageInteraction
readList :: ReadS [MessageInteraction]
$creadList :: ReadS [MessageInteraction]
readsPrec :: Int -> ReadS MessageInteraction
$creadsPrec :: Int -> ReadS MessageInteraction
Read, MessageInteraction -> MessageInteraction -> Bool
(MessageInteraction -> MessageInteraction -> Bool)
-> (MessageInteraction -> MessageInteraction -> Bool)
-> Eq MessageInteraction
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MessageInteraction -> MessageInteraction -> Bool
$c/= :: MessageInteraction -> MessageInteraction -> Bool
== :: MessageInteraction -> MessageInteraction -> Bool
$c== :: MessageInteraction -> MessageInteraction -> Bool
Eq, Eq MessageInteraction
Eq MessageInteraction
-> (MessageInteraction -> MessageInteraction -> Ordering)
-> (MessageInteraction -> MessageInteraction -> Bool)
-> (MessageInteraction -> MessageInteraction -> Bool)
-> (MessageInteraction -> MessageInteraction -> Bool)
-> (MessageInteraction -> MessageInteraction -> Bool)
-> (MessageInteraction -> MessageInteraction -> MessageInteraction)
-> (MessageInteraction -> MessageInteraction -> MessageInteraction)
-> Ord MessageInteraction
MessageInteraction -> MessageInteraction -> Bool
MessageInteraction -> MessageInteraction -> Ordering
MessageInteraction -> MessageInteraction -> MessageInteraction
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
min :: MessageInteraction -> MessageInteraction -> MessageInteraction
$cmin :: MessageInteraction -> MessageInteraction -> MessageInteraction
max :: MessageInteraction -> MessageInteraction -> MessageInteraction
$cmax :: MessageInteraction -> MessageInteraction -> MessageInteraction
>= :: MessageInteraction -> MessageInteraction -> Bool
$c>= :: MessageInteraction -> MessageInteraction -> Bool
> :: MessageInteraction -> MessageInteraction -> Bool
$c> :: MessageInteraction -> MessageInteraction -> Bool
<= :: MessageInteraction -> MessageInteraction -> Bool
$c<= :: MessageInteraction -> MessageInteraction -> Bool
< :: MessageInteraction -> MessageInteraction -> Bool
$c< :: MessageInteraction -> MessageInteraction -> Bool
compare :: MessageInteraction -> MessageInteraction -> Ordering
$ccompare :: MessageInteraction -> MessageInteraction -> Ordering
$cp1Ord :: Eq MessageInteraction
Ord)
instance ToJSON MessageInteraction where
toJSON :: MessageInteraction -> Value
toJSON MessageInteraction{Integer
Text
ChannelId
User
messageInteractionUser :: User
messageInteractionName :: Text
messageInteractionType :: Integer
messageInteractionId :: ChannelId
messageInteractionUser :: MessageInteraction -> User
messageInteractionName :: MessageInteraction -> Text
messageInteractionType :: MessageInteraction -> Integer
messageInteractionId :: MessageInteraction -> ChannelId
..} = [Pair] -> Value
object [(Key
name,Value
value) | (Key
name, Just Value
value) <-
[ (Key
"id", ChannelId -> Value
forall a. ToJSON a => a -> Value
toJSON (ChannelId -> Value) -> Maybe ChannelId -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ChannelId -> Maybe ChannelId
forall (f :: * -> *) a. Applicative f => a -> f a
pure ChannelId
messageInteractionId)
, (Key
"type", Integer -> Value
forall a. ToJSON a => a -> Value
toJSON (Integer -> Value) -> Maybe Integer -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Integer -> Maybe Integer
forall (f :: * -> *) a. Applicative f => a -> f a
pure Integer
messageInteractionType)
, (Key
"name", Text -> Value
forall a. ToJSON a => a -> Value
toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Maybe Text
forall (f :: * -> *) a. Applicative f => a -> f a
pure Text
messageInteractionName)
, (Key
"user", User -> Value
forall a. ToJSON a => a -> Value
toJSON (User -> Value) -> Maybe User -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> User -> Maybe User
forall (f :: * -> *) a. Applicative f => a -> f a
pure User
messageInteractionUser)
] ]
instance FromJSON MessageInteraction where
parseJSON :: Value -> Parser MessageInteraction
parseJSON = String
-> (Object -> Parser MessageInteraction)
-> Value
-> Parser MessageInteraction
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"MessageInteraction" ((Object -> Parser MessageInteraction)
-> Value -> Parser MessageInteraction)
-> (Object -> Parser MessageInteraction)
-> Value
-> Parser MessageInteraction
forall a b. (a -> b) -> a -> b
$ \Object
o ->
ChannelId -> Integer -> Text -> User -> MessageInteraction
MessageInteraction (ChannelId -> Integer -> Text -> User -> MessageInteraction)
-> Parser ChannelId
-> Parser (Integer -> Text -> User -> MessageInteraction)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Object
o Object -> Key -> Parser ChannelId
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"id"
Parser (Integer -> Text -> User -> MessageInteraction)
-> Parser Integer -> Parser (Text -> User -> MessageInteraction)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser Integer
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"type"
Parser (Text -> User -> MessageInteraction)
-> Parser Text -> Parser (User -> MessageInteraction)
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 (User -> MessageInteraction)
-> Parser User -> Parser MessageInteraction
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser User
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"user"