module Calamity.HTTP.Channel
( ChannelRequest(..)
, CreateMessageOptions(..)
, ChannelUpdate(..)
, AllowedMentionType(..)
, AllowedMentions(..)
, ChannelMessagesQuery(..)
, GetReactionsOptions(..)
, CreateChannelInviteOptions(..)
, GroupDMAddRecipientOptions(..) ) where
import Calamity.HTTP.Internal.Request
import Calamity.HTTP.Internal.Route
import Calamity.Internal.AesonThings
import Calamity.Types.Model.Channel
import Calamity.Types.Model.Guild
import Calamity.Types.Model.User
import Calamity.Types.Snowflake
import Control.Arrow
import Control.Lens hiding ( (.=) )
import Data.Aeson
import Data.ByteString.Lazy ( ByteString )
import Data.Default.Class
import Data.Generics.Product.Subtype ( upcast )
import Data.Maybe
import qualified Data.Text as S
import qualified Data.Text.Encoding as S
import Data.Text ( Text )
import GHC.Generics
import Network.Wreq ( partLBS )
import Network.Wreq.Lens
import Network.Wreq.Session
import Network.Mime
import TextShow
import Network.HTTP.Types (urlEncode)
data CreateMessageOptions = CreateMessageOptions
{ CreateMessageOptions -> Maybe Text
content :: Maybe Text
, CreateMessageOptions -> Maybe Text
nonce :: Maybe Text
, CreateMessageOptions -> Maybe Bool
tts :: Maybe Bool
, CreateMessageOptions -> Maybe (Text, ByteString)
file :: Maybe (Text, ByteString)
, CreateMessageOptions -> Maybe Embed
embed :: Maybe Embed
, CreateMessageOptions -> Maybe AllowedMentions
allowedMentions :: Maybe AllowedMentions
}
deriving ( Int -> CreateMessageOptions -> ShowS
[CreateMessageOptions] -> ShowS
CreateMessageOptions -> String
(Int -> CreateMessageOptions -> ShowS)
-> (CreateMessageOptions -> String)
-> ([CreateMessageOptions] -> ShowS)
-> Show CreateMessageOptions
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateMessageOptions] -> ShowS
$cshowList :: [CreateMessageOptions] -> ShowS
show :: CreateMessageOptions -> String
$cshow :: CreateMessageOptions -> String
showsPrec :: Int -> CreateMessageOptions -> ShowS
$cshowsPrec :: Int -> CreateMessageOptions -> ShowS
Show, (forall x. CreateMessageOptions -> Rep CreateMessageOptions x)
-> (forall x. Rep CreateMessageOptions x -> CreateMessageOptions)
-> Generic CreateMessageOptions
forall x. Rep CreateMessageOptions x -> CreateMessageOptions
forall x. CreateMessageOptions -> Rep CreateMessageOptions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateMessageOptions x -> CreateMessageOptions
$cfrom :: forall x. CreateMessageOptions -> Rep CreateMessageOptions x
Generic, CreateMessageOptions
CreateMessageOptions -> Default CreateMessageOptions
forall a. a -> Default a
def :: CreateMessageOptions
$cdef :: CreateMessageOptions
Default )
data AllowedMentionType
= AllowedMentionRoles
| AllowedMentionUsers
| AllowedMentionEveryone
deriving ( Int -> AllowedMentionType -> ShowS
[AllowedMentionType] -> ShowS
AllowedMentionType -> String
(Int -> AllowedMentionType -> ShowS)
-> (AllowedMentionType -> String)
-> ([AllowedMentionType] -> ShowS)
-> Show AllowedMentionType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AllowedMentionType] -> ShowS
$cshowList :: [AllowedMentionType] -> ShowS
show :: AllowedMentionType -> String
$cshow :: AllowedMentionType -> String
showsPrec :: Int -> AllowedMentionType -> ShowS
$cshowsPrec :: Int -> AllowedMentionType -> ShowS
Show, (forall x. AllowedMentionType -> Rep AllowedMentionType x)
-> (forall x. Rep AllowedMentionType x -> AllowedMentionType)
-> Generic AllowedMentionType
forall x. Rep AllowedMentionType x -> AllowedMentionType
forall x. AllowedMentionType -> Rep AllowedMentionType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep AllowedMentionType x -> AllowedMentionType
$cfrom :: forall x. AllowedMentionType -> Rep AllowedMentionType x
Generic )
instance ToJSON AllowedMentionType where
toJSON :: AllowedMentionType -> Value
toJSON AllowedMentionRoles = Text -> Value
String "roles"
toJSON AllowedMentionUsers = Text -> Value
String "users"
toJSON AllowedMentionEveryone = Text -> Value
String "everyone"
data AllowedMentions = AllowedMentions
{ AllowedMentions -> [AllowedMentionType]
parse :: [AllowedMentionType]
, AllowedMentions -> [Snowflake Role]
roles :: [Snowflake Role]
, AllowedMentions -> [Snowflake User]
users :: [Snowflake User]
}
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, (forall x. AllowedMentions -> Rep AllowedMentions x)
-> (forall x. Rep AllowedMentions x -> AllowedMentions)
-> Generic AllowedMentions
forall x. Rep AllowedMentions x -> AllowedMentions
forall x. AllowedMentions -> Rep AllowedMentions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep AllowedMentions x -> AllowedMentions
$cfrom :: forall x. AllowedMentions -> Rep AllowedMentions x
Generic, AllowedMentions
AllowedMentions -> Default AllowedMentions
forall a. a -> Default a
def :: AllowedMentions
$cdef :: AllowedMentions
Default )
deriving ( [AllowedMentions] -> Encoding
[AllowedMentions] -> Value
AllowedMentions -> Encoding
AllowedMentions -> Value
(AllowedMentions -> Value)
-> (AllowedMentions -> Encoding)
-> ([AllowedMentions] -> Value)
-> ([AllowedMentions] -> Encoding)
-> ToJSON AllowedMentions
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [AllowedMentions] -> Encoding
$ctoEncodingList :: [AllowedMentions] -> Encoding
toJSONList :: [AllowedMentions] -> Value
$ctoJSONList :: [AllowedMentions] -> Value
toEncoding :: AllowedMentions -> Encoding
$ctoEncoding :: AllowedMentions -> Encoding
toJSON :: AllowedMentions -> Value
$ctoJSON :: AllowedMentions -> Value
ToJSON ) via CalamityJSON AllowedMentions
instance Semigroup AllowedMentions where
AllowedMentions p0 :: [AllowedMentionType]
p0 r0 :: [Snowflake Role]
r0 u0 :: [Snowflake User]
u0 <> :: AllowedMentions -> AllowedMentions -> AllowedMentions
<> AllowedMentions p1 :: [AllowedMentionType]
p1 r1 :: [Snowflake Role]
r1 u1 :: [Snowflake User]
u1 =
[AllowedMentionType]
-> [Snowflake Role] -> [Snowflake User] -> AllowedMentions
AllowedMentions ([AllowedMentionType]
p0 [AllowedMentionType]
-> [AllowedMentionType] -> [AllowedMentionType]
forall a. Semigroup a => a -> a -> a
<> [AllowedMentionType]
p1) ([Snowflake Role]
r0 [Snowflake Role] -> [Snowflake Role] -> [Snowflake Role]
forall a. Semigroup a => a -> a -> a
<> [Snowflake Role]
r1) ([Snowflake User]
u0 [Snowflake User] -> [Snowflake User] -> [Snowflake User]
forall a. Semigroup a => a -> a -> a
<> [Snowflake User]
u1)
instance Monoid AllowedMentions where
mempty :: AllowedMentions
mempty = AllowedMentions
forall a. Default a => a
def
data CreateMessageJson = CreateMessageJson
{ CreateMessageJson -> Maybe Text
content :: Maybe Text
, CreateMessageJson -> Maybe Text
nonce :: Maybe Text
, CreateMessageJson -> Maybe Bool
tts :: Maybe Bool
, CreateMessageJson -> Maybe Embed
embed :: Maybe Embed
}
deriving ( Int -> CreateMessageJson -> ShowS
[CreateMessageJson] -> ShowS
CreateMessageJson -> String
(Int -> CreateMessageJson -> ShowS)
-> (CreateMessageJson -> String)
-> ([CreateMessageJson] -> ShowS)
-> Show CreateMessageJson
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateMessageJson] -> ShowS
$cshowList :: [CreateMessageJson] -> ShowS
show :: CreateMessageJson -> String
$cshow :: CreateMessageJson -> String
showsPrec :: Int -> CreateMessageJson -> ShowS
$cshowsPrec :: Int -> CreateMessageJson -> ShowS
Show, (forall x. CreateMessageJson -> Rep CreateMessageJson x)
-> (forall x. Rep CreateMessageJson x -> CreateMessageJson)
-> Generic CreateMessageJson
forall x. Rep CreateMessageJson x -> CreateMessageJson
forall x. CreateMessageJson -> Rep CreateMessageJson x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateMessageJson x -> CreateMessageJson
$cfrom :: forall x. CreateMessageJson -> Rep CreateMessageJson x
Generic )
deriving ( [CreateMessageJson] -> Encoding
[CreateMessageJson] -> Value
CreateMessageJson -> Encoding
CreateMessageJson -> Value
(CreateMessageJson -> Value)
-> (CreateMessageJson -> Encoding)
-> ([CreateMessageJson] -> Value)
-> ([CreateMessageJson] -> Encoding)
-> ToJSON CreateMessageJson
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [CreateMessageJson] -> Encoding
$ctoEncodingList :: [CreateMessageJson] -> Encoding
toJSONList :: [CreateMessageJson] -> Value
$ctoJSONList :: [CreateMessageJson] -> Value
toEncoding :: CreateMessageJson -> Encoding
$ctoEncoding :: CreateMessageJson -> Encoding
toJSON :: CreateMessageJson -> Value
$ctoJSON :: CreateMessageJson -> Value
ToJSON ) via CalamityJSON CreateMessageJson
data ChannelUpdate = ChannelUpdate
{ ChannelUpdate -> Maybe Text
name :: Maybe Text
, ChannelUpdate -> Maybe Int
position :: Maybe Int
, ChannelUpdate -> Maybe Text
topic :: Maybe Text
, ChannelUpdate -> Maybe Bool
nsfw :: Maybe Bool
, ChannelUpdate -> Maybe Int
rateLimitPerUser :: Maybe Int
, ChannelUpdate -> Maybe Int
bitrate :: Maybe Int
, ChannelUpdate -> Maybe Int
userLimit :: Maybe Int
, ChannelUpdate -> Maybe [Overwrite]
permissionOverwrites :: Maybe [Overwrite]
, ChannelUpdate -> Maybe (Snowflake Channel)
parentID :: Maybe (Snowflake Channel)
}
deriving ( (forall x. ChannelUpdate -> Rep ChannelUpdate x)
-> (forall x. Rep ChannelUpdate x -> ChannelUpdate)
-> Generic ChannelUpdate
forall x. Rep ChannelUpdate x -> ChannelUpdate
forall x. ChannelUpdate -> Rep ChannelUpdate x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ChannelUpdate x -> ChannelUpdate
$cfrom :: forall x. ChannelUpdate -> Rep ChannelUpdate x
Generic, Int -> ChannelUpdate -> ShowS
[ChannelUpdate] -> ShowS
ChannelUpdate -> String
(Int -> ChannelUpdate -> ShowS)
-> (ChannelUpdate -> String)
-> ([ChannelUpdate] -> ShowS)
-> Show ChannelUpdate
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChannelUpdate] -> ShowS
$cshowList :: [ChannelUpdate] -> ShowS
show :: ChannelUpdate -> String
$cshow :: ChannelUpdate -> String
showsPrec :: Int -> ChannelUpdate -> ShowS
$cshowsPrec :: Int -> ChannelUpdate -> ShowS
Show, ChannelUpdate
ChannelUpdate -> Default ChannelUpdate
forall a. a -> Default a
def :: ChannelUpdate
$cdef :: ChannelUpdate
Default )
deriving ( [ChannelUpdate] -> Encoding
[ChannelUpdate] -> Value
ChannelUpdate -> Encoding
ChannelUpdate -> Value
(ChannelUpdate -> Value)
-> (ChannelUpdate -> Encoding)
-> ([ChannelUpdate] -> Value)
-> ([ChannelUpdate] -> Encoding)
-> ToJSON ChannelUpdate
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [ChannelUpdate] -> Encoding
$ctoEncodingList :: [ChannelUpdate] -> Encoding
toJSONList :: [ChannelUpdate] -> Value
$ctoJSONList :: [ChannelUpdate] -> Value
toEncoding :: ChannelUpdate -> Encoding
$ctoEncoding :: ChannelUpdate -> Encoding
toJSON :: ChannelUpdate -> Value
$ctoJSON :: ChannelUpdate -> Value
ToJSON ) via CalamityJSON ChannelUpdate
data ChannelMessagesQuery
= ChannelMessagesAround
{ ChannelMessagesQuery -> Snowflake Message
around :: Snowflake Message
}
| ChannelMessagesBefore
{ ChannelMessagesQuery -> Snowflake Message
before :: Snowflake Message
}
| ChannelMessagesAfter
{ ChannelMessagesQuery -> Snowflake Message
after :: Snowflake Message
}
| ChannelMessagesLimit
{ ChannelMessagesQuery -> Int
limit :: Int
}
deriving ( (forall x. ChannelMessagesQuery -> Rep ChannelMessagesQuery x)
-> (forall x. Rep ChannelMessagesQuery x -> ChannelMessagesQuery)
-> Generic ChannelMessagesQuery
forall x. Rep ChannelMessagesQuery x -> ChannelMessagesQuery
forall x. ChannelMessagesQuery -> Rep ChannelMessagesQuery x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ChannelMessagesQuery x -> ChannelMessagesQuery
$cfrom :: forall x. ChannelMessagesQuery -> Rep ChannelMessagesQuery x
Generic, Int -> ChannelMessagesQuery -> ShowS
[ChannelMessagesQuery] -> ShowS
ChannelMessagesQuery -> String
(Int -> ChannelMessagesQuery -> ShowS)
-> (ChannelMessagesQuery -> String)
-> ([ChannelMessagesQuery] -> ShowS)
-> Show ChannelMessagesQuery
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ChannelMessagesQuery] -> ShowS
$cshowList :: [ChannelMessagesQuery] -> ShowS
show :: ChannelMessagesQuery -> String
$cshow :: ChannelMessagesQuery -> String
showsPrec :: Int -> ChannelMessagesQuery -> ShowS
$cshowsPrec :: Int -> ChannelMessagesQuery -> ShowS
Show )
deriving ( [ChannelMessagesQuery] -> Encoding
[ChannelMessagesQuery] -> Value
ChannelMessagesQuery -> Encoding
ChannelMessagesQuery -> Value
(ChannelMessagesQuery -> Value)
-> (ChannelMessagesQuery -> Encoding)
-> ([ChannelMessagesQuery] -> Value)
-> ([ChannelMessagesQuery] -> Encoding)
-> ToJSON ChannelMessagesQuery
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [ChannelMessagesQuery] -> Encoding
$ctoEncodingList :: [ChannelMessagesQuery] -> Encoding
toJSONList :: [ChannelMessagesQuery] -> Value
$ctoJSONList :: [ChannelMessagesQuery] -> Value
toEncoding :: ChannelMessagesQuery -> Encoding
$ctoEncoding :: ChannelMessagesQuery -> Encoding
toJSON :: ChannelMessagesQuery -> Value
$ctoJSON :: ChannelMessagesQuery -> Value
ToJSON ) via CalamityJSON ChannelMessagesQuery
data GetReactionsOptions = GetReactionsOptions
{ GetReactionsOptions -> Maybe (Snowflake User)
before :: Maybe (Snowflake User)
, GetReactionsOptions -> Maybe (Snowflake User)
after :: Maybe (Snowflake User)
, GetReactionsOptions -> Maybe Integer
limit :: Maybe Integer
}
deriving ( Int -> GetReactionsOptions -> ShowS
[GetReactionsOptions] -> ShowS
GetReactionsOptions -> String
(Int -> GetReactionsOptions -> ShowS)
-> (GetReactionsOptions -> String)
-> ([GetReactionsOptions] -> ShowS)
-> Show GetReactionsOptions
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetReactionsOptions] -> ShowS
$cshowList :: [GetReactionsOptions] -> ShowS
show :: GetReactionsOptions -> String
$cshow :: GetReactionsOptions -> String
showsPrec :: Int -> GetReactionsOptions -> ShowS
$cshowsPrec :: Int -> GetReactionsOptions -> ShowS
Show, (forall x. GetReactionsOptions -> Rep GetReactionsOptions x)
-> (forall x. Rep GetReactionsOptions x -> GetReactionsOptions)
-> Generic GetReactionsOptions
forall x. Rep GetReactionsOptions x -> GetReactionsOptions
forall x. GetReactionsOptions -> Rep GetReactionsOptions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetReactionsOptions x -> GetReactionsOptions
$cfrom :: forall x. GetReactionsOptions -> Rep GetReactionsOptions x
Generic, GetReactionsOptions
GetReactionsOptions -> Default GetReactionsOptions
forall a. a -> Default a
def :: GetReactionsOptions
$cdef :: GetReactionsOptions
Default )
data CreateChannelInviteOptions = CreateChannelInviteOptions
{ CreateChannelInviteOptions -> Maybe Int
maxAge :: Maybe Int
, CreateChannelInviteOptions -> Maybe Int
maxUses :: Maybe Int
, CreateChannelInviteOptions -> Maybe Bool
temporary :: Maybe Bool
, CreateChannelInviteOptions -> Maybe Bool
unique :: Maybe Bool
}
deriving ( Int -> CreateChannelInviteOptions -> ShowS
[CreateChannelInviteOptions] -> ShowS
CreateChannelInviteOptions -> String
(Int -> CreateChannelInviteOptions -> ShowS)
-> (CreateChannelInviteOptions -> String)
-> ([CreateChannelInviteOptions] -> ShowS)
-> Show CreateChannelInviteOptions
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateChannelInviteOptions] -> ShowS
$cshowList :: [CreateChannelInviteOptions] -> ShowS
show :: CreateChannelInviteOptions -> String
$cshow :: CreateChannelInviteOptions -> String
showsPrec :: Int -> CreateChannelInviteOptions -> ShowS
$cshowsPrec :: Int -> CreateChannelInviteOptions -> ShowS
Show, (forall x.
CreateChannelInviteOptions -> Rep CreateChannelInviteOptions x)
-> (forall x.
Rep CreateChannelInviteOptions x -> CreateChannelInviteOptions)
-> Generic CreateChannelInviteOptions
forall x.
Rep CreateChannelInviteOptions x -> CreateChannelInviteOptions
forall x.
CreateChannelInviteOptions -> Rep CreateChannelInviteOptions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateChannelInviteOptions x -> CreateChannelInviteOptions
$cfrom :: forall x.
CreateChannelInviteOptions -> Rep CreateChannelInviteOptions x
Generic, CreateChannelInviteOptions
CreateChannelInviteOptions -> Default CreateChannelInviteOptions
forall a. a -> Default a
def :: CreateChannelInviteOptions
$cdef :: CreateChannelInviteOptions
Default )
deriving ( [CreateChannelInviteOptions] -> Encoding
[CreateChannelInviteOptions] -> Value
CreateChannelInviteOptions -> Encoding
CreateChannelInviteOptions -> Value
(CreateChannelInviteOptions -> Value)
-> (CreateChannelInviteOptions -> Encoding)
-> ([CreateChannelInviteOptions] -> Value)
-> ([CreateChannelInviteOptions] -> Encoding)
-> ToJSON CreateChannelInviteOptions
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [CreateChannelInviteOptions] -> Encoding
$ctoEncodingList :: [CreateChannelInviteOptions] -> Encoding
toJSONList :: [CreateChannelInviteOptions] -> Value
$ctoJSONList :: [CreateChannelInviteOptions] -> Value
toEncoding :: CreateChannelInviteOptions -> Encoding
$ctoEncoding :: CreateChannelInviteOptions -> Encoding
toJSON :: CreateChannelInviteOptions -> Value
$ctoJSON :: CreateChannelInviteOptions -> Value
ToJSON ) via CalamityJSON CreateChannelInviteOptions
data GroupDMAddRecipientOptions = GroupDMAddRecipientOptions
{ GroupDMAddRecipientOptions -> Text
accessToken :: Text
, GroupDMAddRecipientOptions -> Text
nick :: Text
}
deriving ( Int -> GroupDMAddRecipientOptions -> ShowS
[GroupDMAddRecipientOptions] -> ShowS
GroupDMAddRecipientOptions -> String
(Int -> GroupDMAddRecipientOptions -> ShowS)
-> (GroupDMAddRecipientOptions -> String)
-> ([GroupDMAddRecipientOptions] -> ShowS)
-> Show GroupDMAddRecipientOptions
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GroupDMAddRecipientOptions] -> ShowS
$cshowList :: [GroupDMAddRecipientOptions] -> ShowS
show :: GroupDMAddRecipientOptions -> String
$cshow :: GroupDMAddRecipientOptions -> String
showsPrec :: Int -> GroupDMAddRecipientOptions -> ShowS
$cshowsPrec :: Int -> GroupDMAddRecipientOptions -> ShowS
Show, (forall x.
GroupDMAddRecipientOptions -> Rep GroupDMAddRecipientOptions x)
-> (forall x.
Rep GroupDMAddRecipientOptions x -> GroupDMAddRecipientOptions)
-> Generic GroupDMAddRecipientOptions
forall x.
Rep GroupDMAddRecipientOptions x -> GroupDMAddRecipientOptions
forall x.
GroupDMAddRecipientOptions -> Rep GroupDMAddRecipientOptions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GroupDMAddRecipientOptions x -> GroupDMAddRecipientOptions
$cfrom :: forall x.
GroupDMAddRecipientOptions -> Rep GroupDMAddRecipientOptions x
Generic )
deriving ( [GroupDMAddRecipientOptions] -> Encoding
[GroupDMAddRecipientOptions] -> Value
GroupDMAddRecipientOptions -> Encoding
GroupDMAddRecipientOptions -> Value
(GroupDMAddRecipientOptions -> Value)
-> (GroupDMAddRecipientOptions -> Encoding)
-> ([GroupDMAddRecipientOptions] -> Value)
-> ([GroupDMAddRecipientOptions] -> Encoding)
-> ToJSON GroupDMAddRecipientOptions
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [GroupDMAddRecipientOptions] -> Encoding
$ctoEncodingList :: [GroupDMAddRecipientOptions] -> Encoding
toJSONList :: [GroupDMAddRecipientOptions] -> Value
$ctoJSONList :: [GroupDMAddRecipientOptions] -> Value
toEncoding :: GroupDMAddRecipientOptions -> Encoding
$ctoEncoding :: GroupDMAddRecipientOptions -> Encoding
toJSON :: GroupDMAddRecipientOptions -> Value
$ctoJSON :: GroupDMAddRecipientOptions -> Value
ToJSON ) via CalamityJSON GroupDMAddRecipientOptions
data ChannelRequest a where
CreateMessage :: (HasID Channel c) => c -> CreateMessageOptions -> ChannelRequest Message
GetMessage :: (HasID Channel c, HasID Message m) => c -> m -> ChannelRequest Message
EditMessage :: (HasID Channel c, HasID Message m) => c -> m -> Maybe Text -> Maybe Embed -> ChannelRequest Message
DeleteMessage :: (HasID Channel c, HasID Message m) => c -> m -> ChannelRequest ()
BulkDeleteMessages :: (HasID Channel c, HasID Message m) => c -> [m] -> ChannelRequest ()
GetChannel :: (HasID Channel c) => c -> ChannelRequest Channel
ModifyChannel :: (HasID Channel c) => c -> ChannelUpdate -> ChannelRequest Channel
DeleteChannel :: (HasID Channel c) => c -> ChannelRequest ()
GetChannelMessages :: (HasID Channel c) => c -> Maybe ChannelMessagesQuery -> ChannelRequest [Message]
CreateReaction :: (HasID Channel c, HasID Message m) => c -> m -> RawEmoji -> ChannelRequest ()
DeleteOwnReaction :: (HasID Channel c, HasID Message m) => c -> m -> RawEmoji -> ChannelRequest ()
DeleteUserReaction :: (HasID Channel c, HasID Message m, HasID User u) => c -> m -> RawEmoji -> u -> ChannelRequest ()
GetReactions :: (HasID Channel c, HasID Message m) => c -> m -> RawEmoji -> GetReactionsOptions -> ChannelRequest [User]
DeleteAllReactions :: (HasID Channel c, HasID Message m) => c -> m -> ChannelRequest ()
GetChannelInvites :: (HasID Channel c) => c -> ChannelRequest [Invite]
CreateChannelInvite :: (HasID Channel c) => c -> CreateChannelInviteOptions -> ChannelRequest Invite
EditChannelPermissions :: (HasID Channel c) => c -> Overwrite -> ChannelRequest ()
DeleteChannelPermission :: (HasID Channel c, HasID Overwrite o) => c -> o -> ChannelRequest ()
TriggerTyping :: (HasID Channel c) => c -> ChannelRequest ()
GetPinnedMessages :: (HasID Channel c) => c -> ChannelRequest [Message]
AddPinnedMessage :: (HasID Channel c, HasID Message m) => c -> m -> ChannelRequest ()
DeletePinnedMessage :: (HasID Channel c, HasID Message m) => c -> m -> ChannelRequest ()
GroupDMAddRecipient :: (HasID Channel c, HasID User u) => c -> u -> GroupDMAddRecipientOptions -> ChannelRequest ()
GroupDMRemoveRecipient :: (HasID Channel c, HasID User u) => c -> u -> ChannelRequest ()
baseRoute :: Snowflake Channel -> RouteBuilder _
baseRoute :: Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute id :: Snowflake Channel
id = RouteBuilder '[]
mkRouteBuilder RouteBuilder '[] -> S -> ConsRes S '[]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "channels" RouteBuilder '[] -> ID Channel -> ConsRes (ID Channel) '[]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// ID Channel
forall k (a :: k). ID a
ID @Channel
RouteBuilder '[ '(Channel, 'Required)]
-> (RouteBuilder '[ '(Channel, 'Required)]
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)])
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a b. a -> (a -> b) -> b
& Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Required)]
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall k (ids :: [(*, RouteRequirement)]).
Typeable k =>
Snowflake k
-> RouteBuilder ids -> RouteBuilder ('(k, 'Satisfied) : ids)
giveID Snowflake Channel
id
encodeEmoji :: RawEmoji -> S.Text
encodeEmoji :: RawEmoji -> Text
encodeEmoji = ByteString -> Text
S.decodeUtf8 (ByteString -> Text)
-> (RawEmoji -> ByteString) -> RawEmoji -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> ByteString -> ByteString
urlEncode Bool
True (ByteString -> ByteString)
-> (RawEmoji -> ByteString) -> RawEmoji -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> ByteString
S.encodeUtf8 (Text -> ByteString)
-> (RawEmoji -> Text) -> RawEmoji -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. RawEmoji -> Text
forall a. TextShow a => a -> Text
showt
instance Request (ChannelRequest a) where
type Result (ChannelRequest a) = a
route :: ChannelRequest a -> Route
route (CreateMessage (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
id) _) = Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
id RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "messages"
RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (GetChannel (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
id)) = Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
id
RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (ModifyChannel (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
id) _) = Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
id
RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (DeleteChannel (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
id)) = Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
id
RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (GetChannelMessages (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
id) _) = Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
id RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "messages"
RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (GetMessage (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
cid) (forall a. HasID Message a => a -> Snowflake Message
forall b a. HasID b a => a -> Snowflake b
getID @Message -> Snowflake Message
mid)) = Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
cid RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "messages" RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> ID Message
-> ConsRes
(ID Message) '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// ID Message
forall k (a :: k). ID a
ID @Message
RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> (RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)])
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall a b. a -> (a -> b) -> b
& Snowflake Message
-> RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall k (ids :: [(*, RouteRequirement)]).
Typeable k =>
Snowflake k
-> RouteBuilder ids -> RouteBuilder ('(k, 'Satisfied) : ids)
giveID Snowflake Message
mid
RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (CreateReaction (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
cid) (forall a. HasID Message a => a -> Snowflake Message
forall b a. HasID b a => a -> Snowflake b
getID @Message -> Snowflake Message
mid) emoji :: RawEmoji
emoji) =
Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
cid RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "messages" RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> ID Message
-> ConsRes
(ID Message) '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// ID Message
forall k (a :: k). ID a
ID @Message RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> S
-> ConsRes
S
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "reactions" RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> S
-> ConsRes
S
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S (RawEmoji -> Text
encodeEmoji RawEmoji
emoji) RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> S
-> ConsRes
S
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "@me"
RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> (RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)])
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall a b. a -> (a -> b) -> b
& Snowflake Message
-> RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall k (ids :: [(*, RouteRequirement)]).
Typeable k =>
Snowflake k
-> RouteBuilder ids -> RouteBuilder ('(k, 'Satisfied) : ids)
giveID Snowflake Message
mid
RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (DeleteOwnReaction (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
cid) (forall a. HasID Message a => a -> Snowflake Message
forall b a. HasID b a => a -> Snowflake b
getID @Message -> Snowflake Message
mid) emoji :: RawEmoji
emoji) =
Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
cid RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "messages" RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> ID Message
-> ConsRes
(ID Message) '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// ID Message
forall k (a :: k). ID a
ID @Message RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> S
-> ConsRes
S
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "reactions" RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> S
-> ConsRes
S
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S (RawEmoji -> Text
encodeEmoji RawEmoji
emoji) RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> S
-> ConsRes
S
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "@me"
RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> (RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)])
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall a b. a -> (a -> b) -> b
& Snowflake Message
-> RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall k (ids :: [(*, RouteRequirement)]).
Typeable k =>
Snowflake k
-> RouteBuilder ids -> RouteBuilder ('(k, 'Satisfied) : ids)
giveID Snowflake Message
mid
RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (DeleteUserReaction (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
cid) (forall a. HasID Message a => a -> Snowflake Message
forall b a. HasID b a => a -> Snowflake b
getID @Message -> Snowflake Message
mid) emoji :: RawEmoji
emoji (forall a. HasID User a => a -> Snowflake User
forall b a. HasID b a => a -> Snowflake b
getID @User -> Snowflake User
uid)) =
Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
cid RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "messages" RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> ID Message
-> ConsRes
(ID Message) '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// ID Message
forall k (a :: k). ID a
ID @Message RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> S
-> ConsRes
S
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "reactions" RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> S
-> ConsRes
S
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S (RawEmoji -> Text
encodeEmoji RawEmoji
emoji) RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> ID User
-> ConsRes
(ID User)
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// ID User
forall k (a :: k). ID a
ID @User
RouteBuilder
'[ '(User, 'Required), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder
'[ '(User, 'Required), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> RouteBuilder
'[ '(Message, 'Satisfied), '(User, 'Required),
'(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)])
-> RouteBuilder
'[ '(Message, 'Satisfied), '(User, 'Required),
'(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
forall a b. a -> (a -> b) -> b
& Snowflake Message
-> RouteBuilder
'[ '(User, 'Required), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> RouteBuilder
'[ '(Message, 'Satisfied), '(User, 'Required),
'(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
forall k (ids :: [(*, RouteRequirement)]).
Typeable k =>
Snowflake k
-> RouteBuilder ids -> RouteBuilder ('(k, 'Satisfied) : ids)
giveID Snowflake Message
mid
RouteBuilder
'[ '(Message, 'Satisfied), '(User, 'Required),
'(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> (RouteBuilder
'[ '(Message, 'Satisfied), '(User, 'Required),
'(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(User, 'Satisfied), '(Message, 'Satisfied), '(User, 'Required),
'(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)])
-> RouteBuilder
'[ '(User, 'Satisfied), '(Message, 'Satisfied), '(User, 'Required),
'(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
forall a b. a -> (a -> b) -> b
& Snowflake User
-> RouteBuilder
'[ '(Message, 'Satisfied), '(User, 'Required),
'(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(User, 'Satisfied), '(Message, 'Satisfied), '(User, 'Required),
'(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
forall k (ids :: [(*, RouteRequirement)]).
Typeable k =>
Snowflake k
-> RouteBuilder ids -> RouteBuilder ('(k, 'Satisfied) : ids)
giveID Snowflake User
uid
RouteBuilder
'[ '(User, 'Satisfied), '(Message, 'Satisfied), '(User, 'Required),
'(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> (RouteBuilder
'[ '(User, 'Satisfied), '(Message, 'Satisfied), '(User, 'Required),
'(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder
'[ '(User, 'Satisfied), '(Message, 'Satisfied), '(User, 'Required),
'(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (GetReactions (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
cid) (forall a. HasID Message a => a -> Snowflake Message
forall b a. HasID b a => a -> Snowflake b
getID @Message -> Snowflake Message
mid) emoji :: RawEmoji
emoji _) =
Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
cid RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "messages" RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> ID Message
-> ConsRes
(ID Message) '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// ID Message
forall k (a :: k). ID a
ID @Message RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> S
-> ConsRes
S
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "reactions" RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> S
-> ConsRes
S
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S (RawEmoji -> Text
encodeEmoji RawEmoji
emoji)
RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> (RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)])
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall a b. a -> (a -> b) -> b
& Snowflake Message
-> RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall k (ids :: [(*, RouteRequirement)]).
Typeable k =>
Snowflake k
-> RouteBuilder ids -> RouteBuilder ('(k, 'Satisfied) : ids)
giveID Snowflake Message
mid
RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (DeleteAllReactions (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
cid) (forall a. HasID Message a => a -> Snowflake Message
forall b a. HasID b a => a -> Snowflake b
getID @Message -> Snowflake Message
mid)) =
Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
cid RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "messages" RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> ID Message
-> ConsRes
(ID Message) '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// ID Message
forall k (a :: k). ID a
ID @Message RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> S
-> ConsRes
S
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "reactions"
RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> (RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)])
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall a b. a -> (a -> b) -> b
& Snowflake Message
-> RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall k (ids :: [(*, RouteRequirement)]).
Typeable k =>
Snowflake k
-> RouteBuilder ids -> RouteBuilder ('(k, 'Satisfied) : ids)
giveID Snowflake Message
mid
RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (EditMessage (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
cid) (forall a. HasID Message a => a -> Snowflake Message
forall b a. HasID b a => a -> Snowflake b
getID @Message -> Snowflake Message
mid) _ _) = Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
cid RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "messages" RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> ID Message
-> ConsRes
(ID Message) '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// ID Message
forall k (a :: k). ID a
ID @Message
RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> (RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)])
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall a b. a -> (a -> b) -> b
& Snowflake Message
-> RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall k (ids :: [(*, RouteRequirement)]).
Typeable k =>
Snowflake k
-> RouteBuilder ids -> RouteBuilder ('(k, 'Satisfied) : ids)
giveID Snowflake Message
mid
RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (DeleteMessage (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
cid) (forall a. HasID Message a => a -> Snowflake Message
forall b a. HasID b a => a -> Snowflake b
getID @Message -> Snowflake Message
mid)) = Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
cid RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "messages" RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> ID Message
-> ConsRes
(ID Message) '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// ID Message
forall k (a :: k). ID a
ID @Message
RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> (RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)])
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall a b. a -> (a -> b) -> b
& Snowflake Message
-> RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall k (ids :: [(*, RouteRequirement)]).
Typeable k =>
Snowflake k
-> RouteBuilder ids -> RouteBuilder ('(k, 'Satisfied) : ids)
giveID Snowflake Message
mid
RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (BulkDeleteMessages (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
cid) _) = Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
cid RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "messages" RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "bulk-delete"
RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (GetChannelInvites (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
cid)) = Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
cid RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "invites"
RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (CreateChannelInvite (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
cid) _) = Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
cid RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "invites"
RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (EditChannelPermissions (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
cid) (forall a. HasID Overwrite a => a -> Snowflake Overwrite
forall b a. HasID b a => a -> Snowflake b
getID @Overwrite -> Snowflake Overwrite
oid)) =
Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
cid RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "permissions" RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> ID Overwrite
-> ConsRes
(ID Overwrite) '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// ID Overwrite
forall k (a :: k). ID a
ID @Overwrite
RouteBuilder
'[ '(Overwrite, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> (RouteBuilder
'[ '(Overwrite, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Overwrite, 'Satisfied), '(Overwrite, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)])
-> RouteBuilder
'[ '(Overwrite, 'Satisfied), '(Overwrite, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall a b. a -> (a -> b) -> b
& Snowflake Overwrite
-> RouteBuilder
'[ '(Overwrite, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Overwrite, 'Satisfied), '(Overwrite, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall k (ids :: [(*, RouteRequirement)]).
Typeable k =>
Snowflake k
-> RouteBuilder ids -> RouteBuilder ('(k, 'Satisfied) : ids)
giveID Snowflake Overwrite
oid
RouteBuilder
'[ '(Overwrite, 'Satisfied), '(Overwrite, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder
'[ '(Overwrite, 'Satisfied), '(Overwrite, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder
'[ '(Overwrite, 'Satisfied), '(Overwrite, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (DeleteChannelPermission (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
cid) (forall a. HasID Overwrite a => a -> Snowflake Overwrite
forall b a. HasID b a => a -> Snowflake b
getID @Overwrite -> Snowflake Overwrite
oid)) =
Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
cid RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "permissions" RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> ID Overwrite
-> ConsRes
(ID Overwrite) '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// ID Overwrite
forall k (a :: k). ID a
ID @Overwrite
RouteBuilder
'[ '(Overwrite, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> (RouteBuilder
'[ '(Overwrite, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Overwrite, 'Satisfied), '(Overwrite, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)])
-> RouteBuilder
'[ '(Overwrite, 'Satisfied), '(Overwrite, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall a b. a -> (a -> b) -> b
& Snowflake Overwrite
-> RouteBuilder
'[ '(Overwrite, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Overwrite, 'Satisfied), '(Overwrite, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall k (ids :: [(*, RouteRequirement)]).
Typeable k =>
Snowflake k
-> RouteBuilder ids -> RouteBuilder ('(k, 'Satisfied) : ids)
giveID Snowflake Overwrite
oid
RouteBuilder
'[ '(Overwrite, 'Satisfied), '(Overwrite, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder
'[ '(Overwrite, 'Satisfied), '(Overwrite, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder
'[ '(Overwrite, 'Satisfied), '(Overwrite, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (TriggerTyping (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
cid)) = Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
cid RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "typing"
RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (GetPinnedMessages (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
cid)) = Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
cid RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "pins"
RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (AddPinnedMessage (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
cid) (forall a. HasID Message a => a -> Snowflake Message
forall b a. HasID b a => a -> Snowflake b
getID @Message -> Snowflake Message
mid)) = Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
cid RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "pins" RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> ID Message
-> ConsRes
(ID Message) '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// ID Message
forall k (a :: k). ID a
ID @Message
RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> (RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)])
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall a b. a -> (a -> b) -> b
& Snowflake Message
-> RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall k (ids :: [(*, RouteRequirement)]).
Typeable k =>
Snowflake k
-> RouteBuilder ids -> RouteBuilder ('(k, 'Satisfied) : ids)
giveID Snowflake Message
mid
RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (DeletePinnedMessage (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
cid) (forall a. HasID Message a => a -> Snowflake Message
forall b a. HasID b a => a -> Snowflake b
getID @Message -> Snowflake Message
mid)) = Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
cid RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "pins" RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> ID Message
-> ConsRes
(ID Message) '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// ID Message
forall k (a :: k). ID a
ID @Message
RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> (RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)])
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall a b. a -> (a -> b) -> b
& Snowflake Message
-> RouteBuilder
'[ '(Message, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
forall k (ids :: [(*, RouteRequirement)]).
Typeable k =>
Snowflake k
-> RouteBuilder ids -> RouteBuilder ('(k, 'Satisfied) : ids)
giveID Snowflake Message
mid
RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> (RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder
'[ '(Message, 'Satisfied), '(Message, 'Required),
'(Channel, 'Satisfied), '(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (GroupDMAddRecipient (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
cid) (forall a. HasID User a => a -> Snowflake User
forall b a. HasID b a => a -> Snowflake b
getID @User -> Snowflake User
uid) _) = Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
cid RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "recipients" RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> ID User
-> ConsRes
(ID User) '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// ID User
forall k (a :: k). ID a
ID @User
RouteBuilder
'[ '(User, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> (RouteBuilder
'[ '(User, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(User, 'Satisfied), '(User, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)])
-> RouteBuilder
'[ '(User, 'Satisfied), '(User, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
forall a b. a -> (a -> b) -> b
& Snowflake User
-> RouteBuilder
'[ '(User, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(User, 'Satisfied), '(User, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
forall k (ids :: [(*, RouteRequirement)]).
Typeable k =>
Snowflake k
-> RouteBuilder ids -> RouteBuilder ('(k, 'Satisfied) : ids)
giveID Snowflake User
uid
RouteBuilder
'[ '(User, 'Satisfied), '(User, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> (RouteBuilder
'[ '(User, 'Satisfied), '(User, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder
'[ '(User, 'Satisfied), '(User, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
route (GroupDMRemoveRecipient (c -> Snowflake Channel
forall b a. HasID b a => a -> Snowflake b
getID -> Snowflake Channel
cid) (forall a. HasID User a => a -> Snowflake User
forall b a. HasID b a => a -> Snowflake b
getID @User -> Snowflake User
uid)) = Snowflake Channel
-> RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
baseRoute Snowflake Channel
cid RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> S -> ConsRes S '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// Text -> S
S "recipients" RouteBuilder '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
-> ID User
-> ConsRes
(ID User) '[ '(Channel, 'Satisfied), '(Channel, 'Required)]
forall a (ids :: [(*, RouteRequirement)]).
RouteFragmentable a ids =>
RouteBuilder ids -> a -> ConsRes a ids
// ID User
forall k (a :: k). ID a
ID @User
RouteBuilder
'[ '(User, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> (RouteBuilder
'[ '(User, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(User, 'Satisfied), '(User, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)])
-> RouteBuilder
'[ '(User, 'Satisfied), '(User, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
forall a b. a -> (a -> b) -> b
& Snowflake User
-> RouteBuilder
'[ '(User, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> RouteBuilder
'[ '(User, 'Satisfied), '(User, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
forall k (ids :: [(*, RouteRequirement)]).
Typeable k =>
Snowflake k
-> RouteBuilder ids -> RouteBuilder ('(k, 'Satisfied) : ids)
giveID Snowflake User
uid
RouteBuilder
'[ '(User, 'Satisfied), '(User, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> (RouteBuilder
'[ '(User, 'Satisfied), '(User, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> Route)
-> Route
forall a b. a -> (a -> b) -> b
& RouteBuilder
'[ '(User, 'Satisfied), '(User, 'Required), '(Channel, 'Satisfied),
'(Channel, 'Required)]
-> Route
forall (ids :: [(*, RouteRequirement)]).
EnsureFulfilled ids =>
RouteBuilder ids -> Route
buildRoute
action :: ChannelRequest a
-> Options -> Session -> String -> IO (Response ByteString)
action (CreateMessage _ o :: CreateMessageOptions
o@CreateMessageOptions { $sel:file:CreateMessageOptions :: CreateMessageOptions -> Maybe (Text, ByteString)
file = Maybe (Text, ByteString)
Nothing }) = Value -> Options -> Session -> String -> IO (Response ByteString)
forall a.
Postable a =>
a -> Options -> Session -> String -> IO (Response ByteString)
postWith'
(CreateMessageJson -> Value
forall a. ToJSON a => a -> Value
toJSON (CreateMessageJson -> Value)
-> (CreateMessageOptions -> CreateMessageJson)
-> CreateMessageOptions
-> Value
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall sub.
Subtype CreateMessageJson sub =>
sub -> CreateMessageJson
forall sup sub. Subtype sup sub => sub -> sup
upcast @CreateMessageJson (CreateMessageOptions -> Value) -> CreateMessageOptions -> Value
forall a b. (a -> b) -> a -> b
$ CreateMessageOptions
o)
action (CreateMessage _ o :: CreateMessageOptions
o@CreateMessageOptions { $sel:file:CreateMessageOptions :: CreateMessageOptions -> Maybe (Text, ByteString)
file = Just f :: (Text, ByteString)
f }) = [Part] -> Options -> Session -> String -> IO (Response ByteString)
forall a.
Postable a =>
a -> Options -> Session -> String -> IO (Response ByteString)
postWith'
[Text -> ByteString -> Part
forall (m :: * -> *).
Applicative m =>
Text -> ByteString -> PartM m
partLBS @IO "file" ((Text, ByteString) -> ByteString
forall a b. (a, b) -> b
snd (Text, ByteString)
f) Part -> (Part -> Part) -> Part
forall a b. a -> (a -> b) -> b
& (Maybe String -> Identity (Maybe String)) -> Part -> Identity Part
Lens' Part (Maybe String)
partFileName ((Maybe String -> Identity (Maybe String))
-> Part -> Identity Part)
-> String -> Part -> Part
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ (Text -> String
S.unpack (Text -> String) -> Text -> String
forall a b. (a -> b) -> a -> b
$ (Text, ByteString) -> Text
forall a b. (a, b) -> a
fst (Text, ByteString)
f) Part -> (Part -> Part) -> Part
forall a b. a -> (a -> b) -> b
& (Maybe ByteString -> Identity (Maybe ByteString))
-> Part -> Identity Part
Traversal' Part (Maybe ByteString)
partContentType ((Maybe ByteString -> Identity (Maybe ByteString))
-> Part -> Identity Part)
-> ByteString -> Part -> Part
forall s t a b. ASetter s t a (Maybe b) -> b -> s -> t
?~ Text -> ByteString
defaultMimeLookup ((Text, ByteString) -> Text
forall a b. (a, b) -> a
fst (Text, ByteString)
f),
Text -> ByteString -> Part
forall (m :: * -> *).
Applicative m =>
Text -> ByteString -> PartM m
partLBS "payload_json" (CreateMessageJson -> ByteString
forall a. ToJSON a => a -> ByteString
encode (CreateMessageJson -> ByteString)
-> (CreateMessageOptions -> CreateMessageJson)
-> CreateMessageOptions
-> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall sub.
Subtype CreateMessageJson sub =>
sub -> CreateMessageJson
forall sup sub. Subtype sup sub => sub -> sup
upcast @CreateMessageJson (CreateMessageOptions -> ByteString)
-> CreateMessageOptions -> ByteString
forall a b. (a -> b) -> a -> b
$ CreateMessageOptions
o)]
action (GetChannel _) = Options -> Session -> String -> IO (Response ByteString)
getWith
action (ModifyChannel _ p :: ChannelUpdate
p) = Value -> Options -> Session -> String -> IO (Response ByteString)
forall a.
Putable a =>
a -> Options -> Session -> String -> IO (Response ByteString)
putWith' (ChannelUpdate -> Value
forall a. ToJSON a => a -> Value
toJSON ChannelUpdate
p)
action (DeleteChannel _) = Options -> Session -> String -> IO (Response ByteString)
deleteWith
action (GetChannelMessages _ (Just (ChannelMessagesAround (Word64 -> Text
forall a. TextShow a => a -> Text
showt (Word64 -> Text)
-> (Snowflake Message -> Word64) -> Snowflake Message -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Snowflake Message -> Word64
forall t. Snowflake t -> Word64
fromSnowflake -> Text
a)))) = (Options -> Options)
-> Options -> Session -> String -> IO (Response ByteString)
getWithP
(Text -> Lens' Options [Text]
param "around" (([Text] -> Identity [Text]) -> Options -> Identity Options)
-> [Text] -> Options -> Options
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [Text
a])
action (GetChannelMessages _ (Just (ChannelMessagesBefore (Word64 -> Text
forall a. TextShow a => a -> Text
showt (Word64 -> Text)
-> (Snowflake Message -> Word64) -> Snowflake Message -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Snowflake Message -> Word64
forall t. Snowflake t -> Word64
fromSnowflake -> Text
a)))) = (Options -> Options)
-> Options -> Session -> String -> IO (Response ByteString)
getWithP
(Text -> Lens' Options [Text]
param "before" (([Text] -> Identity [Text]) -> Options -> Identity Options)
-> [Text] -> Options -> Options
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [Text
a])
action (GetChannelMessages _ (Just (ChannelMessagesAfter (Word64 -> Text
forall a. TextShow a => a -> Text
showt (Word64 -> Text)
-> (Snowflake Message -> Word64) -> Snowflake Message -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Snowflake Message -> Word64
forall t. Snowflake t -> Word64
fromSnowflake -> Text
a)))) = (Options -> Options)
-> Options -> Session -> String -> IO (Response ByteString)
getWithP
(Text -> Lens' Options [Text]
param "after" (([Text] -> Identity [Text]) -> Options -> Identity Options)
-> [Text] -> Options -> Options
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [Text
a])
action (GetChannelMessages _ (Just (ChannelMessagesLimit (Int -> Text
forall a. TextShow a => a -> Text
showt -> Text
a)))) = (Options -> Options)
-> Options -> Session -> String -> IO (Response ByteString)
getWithP (Text -> Lens' Options [Text]
param "around" (([Text] -> Identity [Text]) -> Options -> Identity Options)
-> [Text] -> Options -> Options
forall s t a b. ASetter s t a b -> b -> s -> t
.~ [Text
a])
action (GetChannelMessages _ Nothing) = Options -> Session -> String -> IO (Response ByteString)
getWith
action (GetMessage _ _) = Options -> Session -> String -> IO (Response ByteString)
getWith
action CreateReaction {} = Options -> Session -> String -> IO (Response ByteString)
putEmpty
action DeleteOwnReaction {} = Options -> Session -> String -> IO (Response ByteString)
deleteWith
action DeleteUserReaction {} = Options -> Session -> String -> IO (Response ByteString)
deleteWith
action (GetReactions _ _ _ GetReactionsOptions { Maybe (Snowflake User)
before :: Maybe (Snowflake User)
$sel:before:GetReactionsOptions :: GetReactionsOptions -> Maybe (Snowflake User)
before, Maybe (Snowflake User)
after :: Maybe (Snowflake User)
$sel:after:GetReactionsOptions :: GetReactionsOptions -> Maybe (Snowflake User)
after, Maybe Integer
limit :: Maybe Integer
$sel:limit:GetReactionsOptions :: GetReactionsOptions -> Maybe Integer
limit }) = (Options -> Options)
-> Options -> Session -> String -> IO (Response ByteString)
getWithP
(Text -> Lens' Options [Text]
param "before" (([Text] -> Identity [Text]) -> Options -> Identity Options)
-> [Text] -> Options -> Options
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Maybe Text -> [Text]
forall a. Maybe a -> [a]
maybeToList (Snowflake User -> Text
forall a. TextShow a => a -> Text
showt (Snowflake User -> Text) -> Maybe (Snowflake User) -> Maybe Text
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (Snowflake User)
before) (Options -> Options) -> (Options -> Options) -> Options -> Options
forall k (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>>
Text -> Lens' Options [Text]
param "after" (([Text] -> Identity [Text]) -> Options -> Identity Options)
-> [Text] -> Options -> Options
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Maybe Text -> [Text]
forall a. Maybe a -> [a]
maybeToList (Snowflake User -> Text
forall a. TextShow a => a -> Text
showt (Snowflake User -> Text) -> Maybe (Snowflake User) -> Maybe Text
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe (Snowflake User)
after) (Options -> Options) -> (Options -> Options) -> Options -> Options
forall k (cat :: k -> k -> *) (a :: k) (b :: k) (c :: k).
Category cat =>
cat a b -> cat b c -> cat a c
>>>
Text -> Lens' Options [Text]
param "limit" (([Text] -> Identity [Text]) -> Options -> Identity Options)
-> [Text] -> Options -> Options
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Maybe Text -> [Text]
forall a. Maybe a -> [a]
maybeToList (Integer -> Text
forall a. TextShow a => a -> Text
showt (Integer -> Text) -> Maybe Integer -> Maybe Text
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Integer
limit))
action (DeleteAllReactions _ _) = Options -> Session -> String -> IO (Response ByteString)
deleteWith
action (EditMessage _ _ content :: Maybe Text
content embed :: Maybe Embed
embed) = Value -> Options -> Session -> String -> IO (Response ByteString)
forall a.
Postable a =>
a -> Options -> Session -> String -> IO (Response ByteString)
patchWith' ([Pair] -> Value
object ["content" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
.= Maybe Text
content, "embed" Text -> Maybe Embed -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
.= Maybe Embed
embed])
action (DeleteMessage _ _) = Options -> Session -> String -> IO (Response ByteString)
deleteWith
action (BulkDeleteMessages _ ((m -> Snowflake Message) -> [m] -> [Snowflake Message]
forall a b. (a -> b) -> [a] -> [b]
map (forall a. HasID Message a => a -> Snowflake Message
forall b a. HasID b a => a -> Snowflake b
getID @Message) -> [Snowflake Message]
ids)) = Value -> Options -> Session -> String -> IO (Response ByteString)
forall a.
Postable a =>
a -> Options -> Session -> String -> IO (Response ByteString)
postWith' ([Pair] -> Value
object ["messages" Text -> [Snowflake Message] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
.= [Snowflake Message]
ids])
action (GetChannelInvites _) = Options -> Session -> String -> IO (Response ByteString)
getWith
action (CreateChannelInvite _ o :: CreateChannelInviteOptions
o) = Value -> Options -> Session -> String -> IO (Response ByteString)
forall a.
Postable a =>
a -> Options -> Session -> String -> IO (Response ByteString)
postWith' (CreateChannelInviteOptions -> Value
forall a. ToJSON a => a -> Value
toJSON CreateChannelInviteOptions
o)
action (EditChannelPermissions _ o :: Overwrite
o) = Value -> Options -> Session -> String -> IO (Response ByteString)
forall a.
Putable a =>
a -> Options -> Session -> String -> IO (Response ByteString)
putWith' (Overwrite -> Value
forall a. ToJSON a => a -> Value
toJSON Overwrite
o)
action (DeleteChannelPermission _ _) = Options -> Session -> String -> IO (Response ByteString)
deleteWith
action (TriggerTyping _) = Options -> Session -> String -> IO (Response ByteString)
postEmpty
action (GetPinnedMessages _) = Options -> Session -> String -> IO (Response ByteString)
getWith
action (AddPinnedMessage _ _) = Options -> Session -> String -> IO (Response ByteString)
putEmpty
action (DeletePinnedMessage _ _) = Options -> Session -> String -> IO (Response ByteString)
deleteWith
action (GroupDMAddRecipient _ _ o :: GroupDMAddRecipientOptions
o) = Value -> Options -> Session -> String -> IO (Response ByteString)
forall a.
Putable a =>
a -> Options -> Session -> String -> IO (Response ByteString)
putWith' (GroupDMAddRecipientOptions -> Value
forall a. ToJSON a => a -> Value
toJSON GroupDMAddRecipientOptions
o)
action (GroupDMRemoveRecipient _ _) = Options -> Session -> String -> IO (Response ByteString)
deleteWith