{-# LANGUAGE OverloadedStrings #-}
{-# 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 Discord.Internal.Types.Prelude
import Discord.Internal.Types.User (User(..), GuildMember)
import Discord.Internal.Types.Embed
import Data.Data (Data)
import Data.Maybe (fromJust)
import Data.Bits
import Discord.Internal.Types.Components (Component, 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
}
| 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
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 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{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
..} -> Bool
True
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
..} -> Bool
True
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
..} -> Bool
True
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
..} -> Bool
True
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
..} -> 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 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 [Component]
messageComponents :: Maybe [Component]
, 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> 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 [Component]
-> Maybe [StickerItem]
-> Message)
-> Parser Bool
-> Parser
(Maybe ChannelId
-> MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [Component]
-> 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 [Component]
-> Maybe [StickerItem]
-> Message)
-> Parser (Maybe ChannelId)
-> Parser
(MessageType
-> Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [Component]
-> 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 [Component]
-> Maybe [StickerItem]
-> Message)
-> Parser MessageType
-> Parser
(Maybe MessageActivity
-> Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [Component]
-> 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 [Component]
-> Maybe [StickerItem]
-> Message)
-> Parser (Maybe MessageActivity)
-> Parser
(Maybe ChannelId
-> Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [Component]
-> 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 [Component]
-> Maybe [StickerItem]
-> Message)
-> Parser (Maybe ChannelId)
-> Parser
(Maybe MessageReference
-> Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [Component]
-> 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 [Component]
-> Maybe [StickerItem]
-> Message)
-> Parser (Maybe MessageReference)
-> Parser
(Maybe MessageFlags
-> Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [Component]
-> 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 [Component]
-> Maybe [StickerItem]
-> Message)
-> Parser (Maybe MessageFlags)
-> Parser
(Maybe Message
-> Maybe MessageInteraction
-> Maybe Channel
-> Maybe [Component]
-> 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 [Component]
-> Maybe [StickerItem]
-> Message)
-> Parser (Maybe Message)
-> Parser
(Maybe MessageInteraction
-> Maybe Channel
-> Maybe [Component]
-> 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 [Component]
-> Maybe [StickerItem]
-> Message)
-> Parser (Maybe MessageInteraction)
-> Parser
(Maybe Channel
-> Maybe [Component] -> 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 [Component] -> Maybe [StickerItem] -> Message)
-> Parser (Maybe Channel)
-> Parser (Maybe [Component] -> 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 [Component] -> Maybe [StickerItem] -> Message)
-> Parser (Maybe [Component])
-> Parser (Maybe [StickerItem] -> Message)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser (Maybe [Component])
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 [Component]
Maybe [StickerItem]
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 [Component]
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 [Component]
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", [Component] -> Value
forall a. ToJSON a => a -> Value
toJSON ([Component] -> Value) -> Maybe [Component] -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe [Component]
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 StickerItem = StickerItem
{ StickerItem -> ChannelId
stickerItemId :: StickerId
, StickerItem -> Text
stickerItemName :: T.Text
, StickerItem -> StickerFormatType
stickerItemFormatType :: StickerFormatType
} deriving (Int -> StickerItem -> ShowS
[StickerItem] -> ShowS
StickerItem -> String
(Int -> StickerItem -> ShowS)
-> (StickerItem -> String)
-> ([StickerItem] -> ShowS)
-> Show StickerItem
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StickerItem] -> ShowS
$cshowList :: [StickerItem] -> ShowS
show :: StickerItem -> String
$cshow :: StickerItem -> String
showsPrec :: Int -> StickerItem -> ShowS
$cshowsPrec :: Int -> StickerItem -> ShowS
Show, ReadPrec [StickerItem]
ReadPrec StickerItem
Int -> ReadS StickerItem
ReadS [StickerItem]
(Int -> ReadS StickerItem)
-> ReadS [StickerItem]
-> ReadPrec StickerItem
-> ReadPrec [StickerItem]
-> Read StickerItem
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StickerItem]
$creadListPrec :: ReadPrec [StickerItem]
readPrec :: ReadPrec StickerItem
$creadPrec :: ReadPrec StickerItem
readList :: ReadS [StickerItem]
$creadList :: ReadS [StickerItem]
readsPrec :: Int -> ReadS StickerItem
$creadsPrec :: Int -> ReadS StickerItem
Read, StickerItem -> StickerItem -> Bool
(StickerItem -> StickerItem -> Bool)
-> (StickerItem -> StickerItem -> Bool) -> Eq StickerItem
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StickerItem -> StickerItem -> Bool
$c/= :: StickerItem -> StickerItem -> Bool
== :: StickerItem -> StickerItem -> Bool
$c== :: StickerItem -> StickerItem -> Bool
Eq, Eq StickerItem
Eq StickerItem
-> (StickerItem -> StickerItem -> Ordering)
-> (StickerItem -> StickerItem -> Bool)
-> (StickerItem -> StickerItem -> Bool)
-> (StickerItem -> StickerItem -> Bool)
-> (StickerItem -> StickerItem -> Bool)
-> (StickerItem -> StickerItem -> StickerItem)
-> (StickerItem -> StickerItem -> StickerItem)
-> Ord StickerItem
StickerItem -> StickerItem -> Bool
StickerItem -> StickerItem -> Ordering
StickerItem -> StickerItem -> StickerItem
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 :: StickerItem -> StickerItem -> StickerItem
$cmin :: StickerItem -> StickerItem -> StickerItem
max :: StickerItem -> StickerItem -> StickerItem
$cmax :: StickerItem -> StickerItem -> StickerItem
>= :: StickerItem -> StickerItem -> Bool
$c>= :: StickerItem -> StickerItem -> Bool
> :: StickerItem -> StickerItem -> Bool
$c> :: StickerItem -> StickerItem -> Bool
<= :: StickerItem -> StickerItem -> Bool
$c<= :: StickerItem -> StickerItem -> Bool
< :: StickerItem -> StickerItem -> Bool
$c< :: StickerItem -> StickerItem -> Bool
compare :: StickerItem -> StickerItem -> Ordering
$ccompare :: StickerItem -> StickerItem -> Ordering
$cp1Ord :: Eq StickerItem
Ord)
instance FromJSON StickerItem where
parseJSON :: Value -> Parser StickerItem
parseJSON = String
-> (Object -> Parser StickerItem) -> Value -> Parser StickerItem
forall a. String -> (Object -> Parser a) -> Value -> Parser a
withObject String
"StickerItem" ((Object -> Parser StickerItem) -> Value -> Parser StickerItem)
-> (Object -> Parser StickerItem) -> Value -> Parser StickerItem
forall a b. (a -> b) -> a -> b
$ \Object
o ->
ChannelId -> Text -> StickerFormatType -> StickerItem
StickerItem (ChannelId -> Text -> StickerFormatType -> StickerItem)
-> Parser ChannelId
-> Parser (Text -> StickerFormatType -> StickerItem)
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 -> StickerFormatType -> StickerItem)
-> Parser Text -> Parser (StickerFormatType -> StickerItem)
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 (StickerFormatType -> StickerItem)
-> Parser StickerFormatType -> Parser StickerItem
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser StickerFormatType
forall a. FromJSON a => Object -> Key -> Parser a
.: Key
"format_type"
instance ToJSON StickerItem where
toJSON :: StickerItem -> Value
toJSON StickerItem{Text
ChannelId
StickerFormatType
stickerItemFormatType :: StickerFormatType
stickerItemName :: Text
stickerItemId :: ChannelId
stickerItemFormatType :: StickerItem -> StickerFormatType
stickerItemName :: StickerItem -> Text
stickerItemId :: StickerItem -> 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
stickerItemId)
, (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
stickerItemName)
, (Key
"format_type", StickerFormatType -> Value
forall a. ToJSON a => a -> Value
toJSON (StickerFormatType -> Value)
-> Maybe StickerFormatType -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> StickerFormatType -> Maybe StickerFormatType
forall (f :: * -> *) a. Applicative f => a -> f a
pure StickerFormatType
stickerItemFormatType)
]]
data StickerFormatType =
StickerFormatTypePNG
| StickerFormatTypeAPNG
| StickerFormatTypeLOTTIE
deriving (Int -> StickerFormatType -> ShowS
[StickerFormatType] -> ShowS
StickerFormatType -> String
(Int -> StickerFormatType -> ShowS)
-> (StickerFormatType -> String)
-> ([StickerFormatType] -> ShowS)
-> Show StickerFormatType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [StickerFormatType] -> ShowS
$cshowList :: [StickerFormatType] -> ShowS
show :: StickerFormatType -> String
$cshow :: StickerFormatType -> String
showsPrec :: Int -> StickerFormatType -> ShowS
$cshowsPrec :: Int -> StickerFormatType -> ShowS
Show, ReadPrec [StickerFormatType]
ReadPrec StickerFormatType
Int -> ReadS StickerFormatType
ReadS [StickerFormatType]
(Int -> ReadS StickerFormatType)
-> ReadS [StickerFormatType]
-> ReadPrec StickerFormatType
-> ReadPrec [StickerFormatType]
-> Read StickerFormatType
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [StickerFormatType]
$creadListPrec :: ReadPrec [StickerFormatType]
readPrec :: ReadPrec StickerFormatType
$creadPrec :: ReadPrec StickerFormatType
readList :: ReadS [StickerFormatType]
$creadList :: ReadS [StickerFormatType]
readsPrec :: Int -> ReadS StickerFormatType
$creadsPrec :: Int -> ReadS StickerFormatType
Read, StickerFormatType -> StickerFormatType -> Bool
(StickerFormatType -> StickerFormatType -> Bool)
-> (StickerFormatType -> StickerFormatType -> Bool)
-> Eq StickerFormatType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: StickerFormatType -> StickerFormatType -> Bool
$c/= :: StickerFormatType -> StickerFormatType -> Bool
== :: StickerFormatType -> StickerFormatType -> Bool
$c== :: StickerFormatType -> StickerFormatType -> Bool
Eq, Eq StickerFormatType
Eq StickerFormatType
-> (StickerFormatType -> StickerFormatType -> Ordering)
-> (StickerFormatType -> StickerFormatType -> Bool)
-> (StickerFormatType -> StickerFormatType -> Bool)
-> (StickerFormatType -> StickerFormatType -> Bool)
-> (StickerFormatType -> StickerFormatType -> Bool)
-> (StickerFormatType -> StickerFormatType -> StickerFormatType)
-> (StickerFormatType -> StickerFormatType -> StickerFormatType)
-> Ord StickerFormatType
StickerFormatType -> StickerFormatType -> Bool
StickerFormatType -> StickerFormatType -> Ordering
StickerFormatType -> StickerFormatType -> StickerFormatType
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 :: StickerFormatType -> StickerFormatType -> StickerFormatType
$cmin :: StickerFormatType -> StickerFormatType -> StickerFormatType
max :: StickerFormatType -> StickerFormatType -> StickerFormatType
$cmax :: StickerFormatType -> StickerFormatType -> StickerFormatType
>= :: StickerFormatType -> StickerFormatType -> Bool
$c>= :: StickerFormatType -> StickerFormatType -> Bool
> :: StickerFormatType -> StickerFormatType -> Bool
$c> :: StickerFormatType -> StickerFormatType -> Bool
<= :: StickerFormatType -> StickerFormatType -> Bool
$c<= :: StickerFormatType -> StickerFormatType -> Bool
< :: StickerFormatType -> StickerFormatType -> Bool
$c< :: StickerFormatType -> StickerFormatType -> Bool
compare :: StickerFormatType -> StickerFormatType -> Ordering
$ccompare :: StickerFormatType -> StickerFormatType -> Ordering
$cp1Ord :: Eq StickerFormatType
Ord, Typeable StickerFormatType
DataType
Constr
Typeable StickerFormatType
-> (forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g)
-> StickerFormatType
-> c StickerFormatType)
-> (forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c StickerFormatType)
-> (StickerFormatType -> Constr)
-> (StickerFormatType -> DataType)
-> (forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c StickerFormatType))
-> (forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c StickerFormatType))
-> ((forall b. Data b => b -> b)
-> StickerFormatType -> StickerFormatType)
-> (forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> StickerFormatType -> r)
-> (forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> StickerFormatType -> r)
-> (forall u.
(forall d. Data d => d -> u) -> StickerFormatType -> [u])
-> (forall u.
Int -> (forall d. Data d => d -> u) -> StickerFormatType -> u)
-> (forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> StickerFormatType -> m StickerFormatType)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> StickerFormatType -> m StickerFormatType)
-> (forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> StickerFormatType -> m StickerFormatType)
-> Data StickerFormatType
StickerFormatType -> DataType
StickerFormatType -> Constr
(forall b. Data b => b -> b)
-> StickerFormatType -> StickerFormatType
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> StickerFormatType -> c StickerFormatType
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c StickerFormatType
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) -> StickerFormatType -> u
forall u. (forall d. Data d => d -> u) -> StickerFormatType -> [u]
forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> StickerFormatType -> r
forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> StickerFormatType -> r
forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> StickerFormatType -> m StickerFormatType
forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> StickerFormatType -> m StickerFormatType
forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c StickerFormatType
forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> StickerFormatType -> c StickerFormatType
forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c StickerFormatType)
forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c StickerFormatType)
$cStickerFormatTypeLOTTIE :: Constr
$cStickerFormatTypeAPNG :: Constr
$cStickerFormatTypePNG :: Constr
$tStickerFormatType :: DataType
gmapMo :: (forall d. Data d => d -> m d)
-> StickerFormatType -> m StickerFormatType
$cgmapMo :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> StickerFormatType -> m StickerFormatType
gmapMp :: (forall d. Data d => d -> m d)
-> StickerFormatType -> m StickerFormatType
$cgmapMp :: forall (m :: * -> *).
MonadPlus m =>
(forall d. Data d => d -> m d)
-> StickerFormatType -> m StickerFormatType
gmapM :: (forall d. Data d => d -> m d)
-> StickerFormatType -> m StickerFormatType
$cgmapM :: forall (m :: * -> *).
Monad m =>
(forall d. Data d => d -> m d)
-> StickerFormatType -> m StickerFormatType
gmapQi :: Int -> (forall d. Data d => d -> u) -> StickerFormatType -> u
$cgmapQi :: forall u.
Int -> (forall d. Data d => d -> u) -> StickerFormatType -> u
gmapQ :: (forall d. Data d => d -> u) -> StickerFormatType -> [u]
$cgmapQ :: forall u. (forall d. Data d => d -> u) -> StickerFormatType -> [u]
gmapQr :: (r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> StickerFormatType -> r
$cgmapQr :: forall r r'.
(r' -> r -> r)
-> r -> (forall d. Data d => d -> r') -> StickerFormatType -> r
gmapQl :: (r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> StickerFormatType -> r
$cgmapQl :: forall r r'.
(r -> r' -> r)
-> r -> (forall d. Data d => d -> r') -> StickerFormatType -> r
gmapT :: (forall b. Data b => b -> b)
-> StickerFormatType -> StickerFormatType
$cgmapT :: (forall b. Data b => b -> b)
-> StickerFormatType -> StickerFormatType
dataCast2 :: (forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c StickerFormatType)
$cdataCast2 :: forall (t :: * -> * -> *) (c :: * -> *).
Typeable t =>
(forall d e. (Data d, Data e) => c (t d e))
-> Maybe (c StickerFormatType)
dataCast1 :: (forall d. Data d => c (t d)) -> Maybe (c StickerFormatType)
$cdataCast1 :: forall (t :: * -> *) (c :: * -> *).
Typeable t =>
(forall d. Data d => c (t d)) -> Maybe (c StickerFormatType)
dataTypeOf :: StickerFormatType -> DataType
$cdataTypeOf :: StickerFormatType -> DataType
toConstr :: StickerFormatType -> Constr
$ctoConstr :: StickerFormatType -> Constr
gunfold :: (forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c StickerFormatType
$cgunfold :: forall (c :: * -> *).
(forall b r. Data b => c (b -> r) -> c r)
-> (forall r. r -> c r) -> Constr -> c StickerFormatType
gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> StickerFormatType -> c StickerFormatType
$cgfoldl :: forall (c :: * -> *).
(forall d b. Data d => c (d -> b) -> d -> c b)
-> (forall g. g -> c g) -> StickerFormatType -> c StickerFormatType
$cp1Data :: Typeable StickerFormatType
Data)
instance Enum StickerFormatType where
fromEnum :: StickerFormatType -> Int
fromEnum StickerFormatType
StickerFormatTypePNG = Int
1
fromEnum StickerFormatType
StickerFormatTypeAPNG = Int
2
fromEnum StickerFormatType
StickerFormatTypeLOTTIE = Int
3
toEnum :: Int -> StickerFormatType
toEnum Int
a = Maybe StickerFormatType -> StickerFormatType
forall a. HasCallStack => Maybe a -> a
fromJust (Maybe StickerFormatType -> StickerFormatType)
-> Maybe StickerFormatType -> StickerFormatType
forall a b. (a -> b) -> a -> b
$ Int -> [(Int, StickerFormatType)] -> Maybe StickerFormatType
forall a b. Eq a => a -> [(a, b)] -> Maybe b
lookup Int
a [(Int, StickerFormatType)]
table
where
table :: [(Int, StickerFormatType)]
table = StickerFormatType -> [(Int, StickerFormatType)]
forall t. (Data t, Enum t) => t -> [(Int, t)]
makeTable StickerFormatType
StickerFormatTypePNG
instance ToJSON StickerFormatType where
toJSON :: StickerFormatType -> Value
toJSON = Int -> Value
forall a. ToJSON a => a -> Value
toJSON (Int -> Value)
-> (StickerFormatType -> Int) -> StickerFormatType -> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. StickerFormatType -> Int
forall a. Enum a => a -> Int
fromEnum
instance FromJSON StickerFormatType where
parseJSON :: Value -> Parser StickerFormatType
parseJSON = String
-> (Scientific -> Parser StickerFormatType)
-> Value
-> Parser StickerFormatType
forall a. String -> (Scientific -> Parser a) -> Value -> Parser a
withScientific String
"StickerFormatType" (StickerFormatType -> Parser StickerFormatType
forall (m :: * -> *) a. Monad m => a -> m a
return (StickerFormatType -> Parser StickerFormatType)
-> (Scientific -> StickerFormatType)
-> Scientific
-> Parser StickerFormatType
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> StickerFormatType
forall a. Enum a => Int -> a
toEnum (Int -> StickerFormatType)
-> (Scientific -> Int) -> Scientific -> StickerFormatType
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Scientific -> Int
forall a b. (RealFrac a, Integral b) => a -> b
round)
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 Enum MessageType where
fromEnum :: MessageType -> Int
fromEnum MessageType
MessageTypeDefault = Int
0
fromEnum MessageType
MessageTypeRecipientAdd = Int
1
fromEnum MessageType
MessageTypeRecipientRemove = Int
2
fromEnum MessageType
MessageTypeCall = Int
3
fromEnum MessageType
MessageTypeChannelNameChange = Int
4
fromEnum MessageType
MessageTypeChannelIconChange = Int
5
fromEnum MessageType
MessageTypeChannelPinnedMessage = Int
6
fromEnum MessageType
MessageTypeGuildMemberJoin = Int
7
fromEnum MessageType
MessageTypeUserPremiumGuildSubscription = Int
8
fromEnum MessageType
MessageTypeUserPremiumGuildSubscriptionTier1 = Int
9
fromEnum MessageType
MessageTypeUserPremiumGuildSubscriptionTier2 = Int
10
fromEnum MessageType
MessageTypeUserPremiumGuildSubscriptionTier3 = Int
11
fromEnum MessageType
MessageTypeChannelFollowAdd = Int
12
fromEnum MessageType
MessageTypeGuildDiscoveryDisqualified = Int
14
fromEnum MessageType
MessageTypeGuildDiscoveryRequalified = Int
15
fromEnum MessageType
MessageTypeGuildDiscoveryGracePeriodInitialWarning = Int
16
fromEnum MessageType
MessageTypeGuildDiscoveryGracePeriodFinalWarning = Int
17
fromEnum MessageType
MessageTypeThreadCreated = Int
18
fromEnum MessageType
MessageTypeReply = Int
19
fromEnum MessageType
MessageTypeChatInputCommand = Int
20
fromEnum MessageType
MessageTypeThreadStarterMessage = Int
21
fromEnum MessageType
MessageTypeGuildInviteReminder = Int
22
fromEnum MessageType
MessageTypeContextMenuCommand = Int
23
toEnum :: Int -> MessageType
toEnum Int
a = Maybe MessageType -> MessageType
forall a. HasCallStack => Maybe a -> a
fromJust (Maybe MessageType -> MessageType)
-> Maybe MessageType -> MessageType
forall a b. (a -> b) -> a -> b
$ Int -> [(Int, MessageType)] -> Maybe MessageType
forall a b. Eq a => a -> [(a, b)] -> Maybe b
lookup Int
a [(Int, MessageType)]
table
where
table :: [(Int, MessageType)]
table = MessageType -> [(Int, MessageType)]
forall t. (Data t, Enum t) => t -> [(Int, t)]
makeTable MessageType
MessageTypeDefault
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. Enum a => a -> Int
fromEnum
instance FromJSON MessageType where
parseJSON :: Value -> Parser MessageType
parseJSON = String
-> (Scientific -> Parser MessageType)
-> Value
-> Parser MessageType
forall a. String -> (Scientific -> Parser a) -> Value -> Parser a
withScientific String
"MessageType" (MessageType -> Parser MessageType
forall (m :: * -> *) a. Monad m => a -> m a
return (MessageType -> Parser MessageType)
-> (Scientific -> MessageType) -> Scientific -> Parser MessageType
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> MessageType
forall a. Enum a => Int -> a
toEnum (Int -> MessageType)
-> (Scientific -> Int) -> Scientific -> MessageType
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Scientific -> Int
forall a b. (RealFrac a, Integral b) => a -> b
round)
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 Enum MessageActivityType where
fromEnum :: MessageActivityType -> Int
fromEnum MessageActivityType
MessageActivityTypeJoin = Int
1
fromEnum MessageActivityType
MessageActivityTypeSpectate = Int
2
fromEnum MessageActivityType
MessageActivityTypeListen = Int
3
fromEnum MessageActivityType
MessageActivityTypeJoinRequest = Int
4
toEnum :: Int -> MessageActivityType
toEnum Int
a = Maybe MessageActivityType -> MessageActivityType
forall a. HasCallStack => Maybe a -> a
fromJust (Maybe MessageActivityType -> MessageActivityType)
-> Maybe MessageActivityType -> MessageActivityType
forall a b. (a -> b) -> a -> b
$ Int -> [(Int, MessageActivityType)] -> Maybe MessageActivityType
forall a b. Eq a => a -> [(a, b)] -> Maybe b
lookup Int
a [(Int, MessageActivityType)]
table
where
table :: [(Int, MessageActivityType)]
table = MessageActivityType -> [(Int, MessageActivityType)]
forall t. (Data t, Enum t) => t -> [(Int, t)]
makeTable MessageActivityType
MessageActivityTypeJoin
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. Enum a => a -> Int
fromEnum
instance FromJSON MessageActivityType where
parseJSON :: Value -> Parser MessageActivityType
parseJSON = String
-> (Scientific -> Parser MessageActivityType)
-> Value
-> Parser MessageActivityType
forall a. String -> (Scientific -> Parser a) -> Value -> Parser a
withScientific String
"MessageActivityType" (MessageActivityType -> Parser MessageActivityType
forall (m :: * -> *) a. Monad m => a -> m a
return (MessageActivityType -> Parser MessageActivityType)
-> (Scientific -> MessageActivityType)
-> Scientific
-> Parser MessageActivityType
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> MessageActivityType
forall a. Enum a => Int -> a
toEnum (Int -> MessageActivityType)
-> (Scientific -> Int) -> Scientific -> MessageActivityType
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Scientific -> Int
forall a b. (RealFrac a, Integral b) => a -> b
round)
data MessageFlag =
MessageFlagCrossposted
| MessageFlagIsCrosspost
| MessageFlagSupressEmbeds
| MessageFlagSourceMessageDeleted
| MessageFlagUrgent
| MessageFlagHasThread
| MessageFlagEphemeral
| MessageFlagLoading
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)
$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 Enum MessageFlag where
fromEnum :: MessageFlag -> Int
fromEnum MessageFlag
MessageFlagCrossposted = Int
1 Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
0
fromEnum MessageFlag
MessageFlagIsCrosspost = Int
1 Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
1
fromEnum MessageFlag
MessageFlagSupressEmbeds = Int
1 Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
2
fromEnum MessageFlag
MessageFlagSourceMessageDeleted = Int
1 Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
3
fromEnum MessageFlag
MessageFlagUrgent = Int
1 Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
4
fromEnum MessageFlag
MessageFlagHasThread = Int
1 Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
5
fromEnum MessageFlag
MessageFlagEphemeral = Int
1 Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
6
fromEnum MessageFlag
MessageFlagLoading = Int
1 Int -> Int -> Int
forall a. Bits a => a -> Int -> a
`shift` Int
7
toEnum :: Int -> MessageFlag
toEnum Int
a = Maybe MessageFlag -> MessageFlag
forall a. HasCallStack => Maybe a -> a
fromJust (Maybe MessageFlag -> MessageFlag)
-> Maybe MessageFlag -> MessageFlag
forall a b. (a -> b) -> a -> b
$ Int -> [(Int, MessageFlag)] -> Maybe MessageFlag
forall a b. Eq a => a -> [(a, b)] -> Maybe b
lookup Int
a [(Int, MessageFlag)]
table
where
table :: [(Int, MessageFlag)]
table = MessageFlag -> [(Int, MessageFlag)]
forall t. (Data t, Enum t) => t -> [(Int, t)]
makeTable MessageFlag
MessageFlagCrossposted
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. Enum a => a -> Int
fromEnum (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
s -> let i :: Int
i = Scientific -> Int
forall a b. (RealFrac a, Integral b) => a -> b
round Scientific
s in if Int
i Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
/= (Int
i Int -> Int -> Int
forall a. Bits a => a -> a -> a
.&. Int
range) then String -> Parser MessageFlags
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"could not get message flags" else 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)]
table))
where
table :: [(Int, MessageFlag)]
table = MessageFlag -> [(Int, MessageFlag)]
forall t. (Data t, Enum t) => t -> [(Int, t)]
makeTable MessageFlag
MessageFlagCrossposted
range :: Int
range = [Int] -> Int
forall (t :: * -> *) a. (Foldable t, Num a) => t a -> a
sum ([Int] -> Int) -> [Int] -> Int
forall a b. (a -> b) -> a -> b
$ (Int, MessageFlag) -> Int
forall a b. (a, b) -> a
fst ((Int, MessageFlag) -> Int) -> [(Int, MessageFlag)] -> [Int]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> [(Int, MessageFlag)]
table
data MessageInteraction = MessageInteraction
{ MessageInteraction -> ChannelId
messageInteractionId :: InteractionId
, MessageInteraction -> InteractionType
messageInteractionType :: InteractionType
, 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, 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, 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)
instance ToJSON MessageInteraction where
toJSON :: MessageInteraction -> Value
toJSON MessageInteraction{Text
InteractionType
ChannelId
User
messageInteractionUser :: User
messageInteractionName :: Text
messageInteractionType :: InteractionType
messageInteractionId :: ChannelId
messageInteractionUser :: MessageInteraction -> User
messageInteractionName :: MessageInteraction -> Text
messageInteractionType :: MessageInteraction -> InteractionType
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", InteractionType -> Value
forall a. ToJSON a => a -> Value
toJSON (InteractionType -> Value) -> Maybe InteractionType -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> InteractionType -> Maybe InteractionType
forall (f :: * -> *) a. Applicative f => a -> f a
pure InteractionType
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 -> InteractionType -> Text -> User -> MessageInteraction
MessageInteraction (ChannelId
-> InteractionType -> Text -> User -> MessageInteraction)
-> Parser ChannelId
-> Parser (InteractionType -> 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 (InteractionType -> Text -> User -> MessageInteraction)
-> Parser InteractionType
-> Parser (Text -> User -> MessageInteraction)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Object
o Object -> Key -> Parser InteractionType
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"