{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE FlexibleInstances #-}
module Discord.Internal.Monad
( MonadDiscord(..)
) where
import Control.Concurrent ( threadDelay )
import Control.Exception.Safe ( MonadThrow
, MonadMask
, SomeException
, throwM
, try
)
import Control.Monad.IO.Class ( MonadIO
, liftIO
)
import Control.Monad ( void )
import Control.Monad.Reader ( ReaderT
, ask
)
import Data.Aeson ( FromJSON
, eitherDecode
)
import qualified Data.ByteString.Lazy as BL
import qualified Data.ByteString as B
import Data.Ix ( inRange )
import qualified Data.Text.Encoding as TE
import qualified Data.Text as T
import Data.Time.Clock.POSIX ( POSIXTime
, getPOSIXTime
)
import qualified Network.HTTP.Req as Req
import Text.Read ( readMaybe )
import Discord.Internal.Rest.Prelude
import Discord.Internal.Rest.HTTP ( RestCallInternalException(..)
, Request(..)
, JsonRequest(..)
)
import qualified Discord.Requests as R
import Discord.Types
import Discord
import Command.Error ( CommandError(..) )
class (Monad m, MonadThrow m, MonadMask m, MonadFail m) => MonadDiscord m where
getChannel :: ChannelId -> m Channel
modifyChannel :: ChannelId -> R.ModifyChannelOpts -> m Channel
deleteChannel :: ChannelId -> m Channel
getChannelMessages :: ChannelId -> (Int, R.MessageTiming) -> m [Message]
getChannelMessage :: (ChannelId, MessageId) -> m Message
createMessage :: ChannelId -> T.Text -> m Message
createMessageEmbed :: ChannelId -> T.Text -> CreateEmbed -> m Message
createMessageUploadFile :: ChannelId -> T.Text -> B.ByteString -> m Message
createMessageDetailed :: ChannelId -> R.MessageDetailedOpts -> m Message
createReaction :: (ChannelId, MessageId) -> T.Text -> m ()
deleteOwnReaction :: (ChannelId, MessageId) -> T.Text -> m ()
deleteUserReaction :: (ChannelId, MessageId) -> UserId -> T.Text -> m ()
deleteSingleReaction :: (ChannelId, MessageId) -> T.Text -> m ()
getReactions :: (ChannelId, MessageId) -> T.Text -> (Int, R.ReactionTiming) -> m [User]
deleteAllReactions :: (ChannelId, MessageId) -> m ()
editMessage :: (ChannelId, MessageId) -> T.Text -> Maybe CreateEmbed -> m Message
deleteMessage :: (ChannelId, MessageId) -> m ()
bulkDeleteMessage :: (ChannelId, [MessageId]) -> m ()
editChannelPermissions :: ChannelId -> OverwriteId -> R.ChannelPermissionsOpts -> m ()
getChannelInvites :: ChannelId -> m Object
createChannelInvite :: ChannelId -> R.ChannelInviteOpts -> m Invite
deleteChannelPermission :: ChannelId -> OverwriteId -> m ()
triggerTypingIndicator :: ChannelId -> m ()
getPinnedMessages :: ChannelId -> m [Message]
addPinnedMessage :: (ChannelId, MessageId) -> m ()
deletePinnedMessage :: (ChannelId, MessageId) -> m ()
groupDMAddRecipient :: ChannelId -> R.GroupDMAddRecipientOpts -> m ()
groupDMRemoveRecipient :: ChannelId -> UserId -> m ()
listGuildEmojis :: GuildId -> m [Emoji]
getGuildEmoji :: GuildId -> EmojiId -> m Emoji
createGuildEmoji :: GuildId -> T.Text -> B.ByteString -> m Emoji
modifyGuildEmoji :: GuildId -> EmojiId -> R.ModifyGuildEmojiOpts -> m Emoji
deleteGuildEmoji :: GuildId -> EmojiId -> m ()
createGuild :: R.CreateGuildOpts -> m Guild
getGuild :: GuildId -> m Guild
modifyGuild :: GuildId -> R.ModifyGuildOpts -> m Guild
deleteGuild :: GuildId -> m ()
getGuildChannels :: GuildId -> m [Channel]
createGuildChannel :: GuildId -> T.Text -> [Overwrite] -> R.CreateGuildChannelOpts -> m Channel
modifyGuildChannelPositions :: GuildId -> [(ChannelId, Int)] -> m [Channel]
getGuildMember :: GuildId -> UserId -> m GuildMember
listGuildMembers :: GuildId -> R.GuildMembersTiming -> m [GuildMember]
addGuildMember :: GuildId -> UserId -> R.AddGuildMemberOpts -> m ()
modifyGuildMember :: GuildId -> UserId -> R.ModifyGuildMemberOpts -> m ()
modifyCurrentUserNick :: GuildId -> T.Text -> m ()
addGuildMemberRole :: GuildId -> UserId -> RoleId -> m ()
removeGuildMemberRole :: GuildId -> UserId -> RoleId -> m ()
removeGuildMember :: GuildId -> UserId -> m ()
getGuildBans :: GuildId -> m [GuildBan]
getGuildBan :: GuildId -> UserId -> m GuildBan
createGuildBan :: GuildId -> UserId -> R.CreateGuildBanOpts -> m ()
removeGuildBan :: GuildId -> UserId -> m ()
getGuildRoles :: GuildId -> m [Role]
createGuildRole :: GuildId -> R.ModifyGuildRoleOpts -> m Role
modifyGuildRolePositions :: GuildId -> [(RoleId, Integer)] -> m [Role]
modifyGuildRole :: GuildId -> RoleId -> R.ModifyGuildRoleOpts -> m Role
deleteGuildRole :: GuildId -> RoleId -> m ()
getGuildPruneCount :: GuildId -> Integer -> m Object
beginGuildPrune :: GuildId -> Integer -> m Object
getGuildVoiceRegions :: GuildId -> m [VoiceRegion]
getGuildInvites :: GuildId -> m [Invite]
getGuildIntegrations :: GuildId -> m [Integration]
createGuildIntegration :: GuildId -> IntegrationId -> R.CreateGuildIntegrationOpts -> m ()
modifyGuildIntegration :: GuildId -> IntegrationId -> R.ModifyGuildIntegrationOpts -> m ()
deleteGuildIntegration :: GuildId -> IntegrationId -> m ()
syncGuildIntegration :: GuildId -> IntegrationId -> m ()
getGuildEmbed :: GuildId -> m GuildEmbed
modifyGuildEmbed :: GuildId -> GuildEmbed -> m GuildEmbed
getGuildVanityURL :: GuildId -> m T.Text
getInvite :: T.Text -> m Invite
deleteInvite :: T.Text -> m Invite
getCurrentUser :: m User
getUser :: UserId -> m User
modifyCurrentUser :: T.Text -> R.CurrentUserAvatar -> m User
getCurrentUserGuilds :: m [PartialGuild]
leaveGuild :: GuildId -> m ()
getUserDMs :: m [Channel]
createDM :: UserId -> m Channel
getUserConnections :: m [ConnectionObject]
listVoiceRegions :: m [VoiceRegion]
createWebhook :: ChannelId -> R.CreateWebhookOpts -> m Webhook
getChannelWebhooks :: ChannelId -> m [Webhook]
getGuildWebhooks :: GuildId -> m [Webhook]
getWebhook :: WebhookId -> m Webhook
getWebhookWithToken :: WebhookId -> T.Text -> m Webhook
modifyWebhook :: WebhookId -> R.ModifyWebhookOpts -> m Webhook
modifyWebhookWithToken :: WebhookId -> T.Text -> R.ModifyWebhookOpts -> m Webhook
deleteWebhook :: WebhookId -> m ()
deleteWebhookWithToken :: WebhookId -> T.Text -> m ()
executeWebhookWithToken :: WebhookId -> T.Text -> R.ExecuteWebhookWithTokenOpts -> m ()
respond :: Message -> T.Text -> m ()
instance MonadDiscord DiscordHandler where
getChannel :: ChannelId -> DiscordHandler Channel
getChannel = ChannelRequest Channel -> DiscordHandler Channel
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest Channel -> DiscordHandler Channel)
-> (ChannelId -> ChannelRequest Channel)
-> ChannelId
-> DiscordHandler Channel
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelRequest Channel
R.GetChannel
modifyChannel :: ChannelId -> ModifyChannelOpts -> DiscordHandler Channel
modifyChannel = (ChannelRequest Channel -> DiscordHandler Channel
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest Channel -> DiscordHandler Channel)
-> (ModifyChannelOpts -> ChannelRequest Channel)
-> ModifyChannelOpts
-> DiscordHandler Channel
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ModifyChannelOpts -> ChannelRequest Channel)
-> ModifyChannelOpts -> DiscordHandler Channel)
-> (ChannelId -> ModifyChannelOpts -> ChannelRequest Channel)
-> ChannelId
-> ModifyChannelOpts
-> DiscordHandler Channel
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ModifyChannelOpts -> ChannelRequest Channel
R.ModifyChannel
deleteChannel :: ChannelId -> DiscordHandler Channel
deleteChannel = ChannelRequest Channel -> DiscordHandler Channel
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest Channel -> DiscordHandler Channel)
-> (ChannelId -> ChannelRequest Channel)
-> ChannelId
-> DiscordHandler Channel
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelRequest Channel
R.DeleteChannel
getChannelMessages :: ChannelId -> (Int, MessageTiming) -> DiscordHandler [Message]
getChannelMessages = (ChannelRequest [Message] -> DiscordHandler [Message]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest [Message] -> DiscordHandler [Message])
-> ((Int, MessageTiming) -> ChannelRequest [Message])
-> (Int, MessageTiming)
-> DiscordHandler [Message]
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) (((Int, MessageTiming) -> ChannelRequest [Message])
-> (Int, MessageTiming) -> DiscordHandler [Message])
-> (ChannelId -> (Int, MessageTiming) -> ChannelRequest [Message])
-> ChannelId
-> (Int, MessageTiming)
-> DiscordHandler [Message]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> (Int, MessageTiming) -> ChannelRequest [Message]
R.GetChannelMessages
getChannelMessage :: (ChannelId, ChannelId) -> DiscordHandler Message
getChannelMessage = ChannelRequest Message -> DiscordHandler Message
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest Message -> DiscordHandler Message)
-> ((ChannelId, ChannelId) -> ChannelRequest Message)
-> (ChannelId, ChannelId)
-> DiscordHandler Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId) -> ChannelRequest Message
R.GetChannelMessage
createMessage :: ChannelId -> Text -> DiscordHandler Message
createMessage = (ChannelRequest Message -> DiscordHandler Message
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest Message -> DiscordHandler Message)
-> (Text -> ChannelRequest Message)
-> Text
-> DiscordHandler Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> ChannelRequest Message)
-> Text -> DiscordHandler Message)
-> (ChannelId -> Text -> ChannelRequest Message)
-> ChannelId
-> Text
-> DiscordHandler Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> Text -> ChannelRequest Message
R.CreateMessage
createMessageEmbed :: ChannelId -> Text -> CreateEmbed -> DiscordHandler Message
createMessageEmbed = ((ChannelRequest Message -> DiscordHandler Message
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest Message -> DiscordHandler Message)
-> (CreateEmbed -> ChannelRequest Message)
-> CreateEmbed
-> DiscordHandler Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((CreateEmbed -> ChannelRequest Message)
-> CreateEmbed -> DiscordHandler Message)
-> (Text -> CreateEmbed -> ChannelRequest Message)
-> Text
-> CreateEmbed
-> DiscordHandler Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> CreateEmbed -> ChannelRequest Message)
-> Text -> CreateEmbed -> DiscordHandler Message)
-> (ChannelId -> Text -> CreateEmbed -> ChannelRequest Message)
-> ChannelId
-> Text
-> CreateEmbed
-> DiscordHandler Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> Text -> CreateEmbed -> ChannelRequest Message
R.CreateMessageEmbed
createMessageUploadFile :: ChannelId -> Text -> ByteString -> DiscordHandler Message
createMessageUploadFile = ((ChannelRequest Message -> DiscordHandler Message
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest Message -> DiscordHandler Message)
-> (ByteString -> ChannelRequest Message)
-> ByteString
-> DiscordHandler Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ByteString -> ChannelRequest Message)
-> ByteString -> DiscordHandler Message)
-> (Text -> ByteString -> ChannelRequest Message)
-> Text
-> ByteString
-> DiscordHandler Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> ByteString -> ChannelRequest Message)
-> Text -> ByteString -> DiscordHandler Message)
-> (ChannelId -> Text -> ByteString -> ChannelRequest Message)
-> ChannelId
-> Text
-> ByteString
-> DiscordHandler Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> Text -> ByteString -> ChannelRequest Message
R.CreateMessageUploadFile
createMessageDetailed :: ChannelId -> MessageDetailedOpts -> DiscordHandler Message
createMessageDetailed = (ChannelRequest Message -> DiscordHandler Message
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest Message -> DiscordHandler Message)
-> (MessageDetailedOpts -> ChannelRequest Message)
-> MessageDetailedOpts
-> DiscordHandler Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((MessageDetailedOpts -> ChannelRequest Message)
-> MessageDetailedOpts -> DiscordHandler Message)
-> (ChannelId -> MessageDetailedOpts -> ChannelRequest Message)
-> ChannelId
-> MessageDetailedOpts
-> DiscordHandler Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> MessageDetailedOpts -> ChannelRequest Message
R.CreateMessageDetailed
createReaction :: (ChannelId, ChannelId) -> Text -> DiscordHandler ()
createReaction = (ChannelRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest () -> DiscordHandler ())
-> (Text -> ChannelRequest ()) -> Text -> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> ChannelRequest ()) -> Text -> DiscordHandler ())
-> ((ChannelId, ChannelId) -> Text -> ChannelRequest ())
-> (ChannelId, ChannelId)
-> Text
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId) -> Text -> ChannelRequest ()
R.CreateReaction
deleteOwnReaction :: (ChannelId, ChannelId) -> Text -> DiscordHandler ()
deleteOwnReaction = (ChannelRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest () -> DiscordHandler ())
-> (Text -> ChannelRequest ()) -> Text -> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> ChannelRequest ()) -> Text -> DiscordHandler ())
-> ((ChannelId, ChannelId) -> Text -> ChannelRequest ())
-> (ChannelId, ChannelId)
-> Text
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId) -> Text -> ChannelRequest ()
R.DeleteOwnReaction
deleteUserReaction :: (ChannelId, ChannelId) -> ChannelId -> Text -> DiscordHandler ()
deleteUserReaction = ((ChannelRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest () -> DiscordHandler ())
-> (Text -> ChannelRequest ()) -> Text -> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> ChannelRequest ()) -> Text -> DiscordHandler ())
-> (ChannelId -> Text -> ChannelRequest ())
-> ChannelId
-> Text
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> Text -> ChannelRequest ())
-> ChannelId -> Text -> DiscordHandler ())
-> ((ChannelId, ChannelId)
-> ChannelId -> Text -> ChannelRequest ())
-> (ChannelId, ChannelId)
-> ChannelId
-> Text
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId) -> ChannelId -> Text -> ChannelRequest ()
R.DeleteUserReaction
deleteSingleReaction :: (ChannelId, ChannelId) -> Text -> DiscordHandler ()
deleteSingleReaction = (ChannelRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest () -> DiscordHandler ())
-> (Text -> ChannelRequest ()) -> Text -> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> ChannelRequest ()) -> Text -> DiscordHandler ())
-> ((ChannelId, ChannelId) -> Text -> ChannelRequest ())
-> (ChannelId, ChannelId)
-> Text
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId) -> Text -> ChannelRequest ()
R.DeleteSingleReaction
getReactions :: (ChannelId, ChannelId)
-> Text -> (Int, ReactionTiming) -> DiscordHandler [User]
getReactions = ((ChannelRequest [User] -> DiscordHandler [User]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest [User] -> DiscordHandler [User])
-> ((Int, ReactionTiming) -> ChannelRequest [User])
-> (Int, ReactionTiming)
-> DiscordHandler [User]
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) (((Int, ReactionTiming) -> ChannelRequest [User])
-> (Int, ReactionTiming) -> DiscordHandler [User])
-> (Text -> (Int, ReactionTiming) -> ChannelRequest [User])
-> Text
-> (Int, ReactionTiming)
-> DiscordHandler [User]
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> (Int, ReactionTiming) -> ChannelRequest [User])
-> Text -> (Int, ReactionTiming) -> DiscordHandler [User])
-> ((ChannelId, ChannelId)
-> Text -> (Int, ReactionTiming) -> ChannelRequest [User])
-> (ChannelId, ChannelId)
-> Text
-> (Int, ReactionTiming)
-> DiscordHandler [User]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId)
-> Text -> (Int, ReactionTiming) -> ChannelRequest [User]
R.GetReactions
deleteAllReactions :: (ChannelId, ChannelId) -> DiscordHandler ()
deleteAllReactions = ChannelRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest () -> DiscordHandler ())
-> ((ChannelId, ChannelId) -> ChannelRequest ())
-> (ChannelId, ChannelId)
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId) -> ChannelRequest ()
R.DeleteAllReactions
editMessage :: (ChannelId, ChannelId)
-> Text -> Maybe CreateEmbed -> DiscordHandler Message
editMessage = ((ChannelRequest Message -> DiscordHandler Message
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest Message -> DiscordHandler Message)
-> (Maybe CreateEmbed -> ChannelRequest Message)
-> Maybe CreateEmbed
-> DiscordHandler Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Maybe CreateEmbed -> ChannelRequest Message)
-> Maybe CreateEmbed -> DiscordHandler Message)
-> (Text -> Maybe CreateEmbed -> ChannelRequest Message)
-> Text
-> Maybe CreateEmbed
-> DiscordHandler Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> Maybe CreateEmbed -> ChannelRequest Message)
-> Text -> Maybe CreateEmbed -> DiscordHandler Message)
-> ((ChannelId, ChannelId)
-> Text -> Maybe CreateEmbed -> ChannelRequest Message)
-> (ChannelId, ChannelId)
-> Text
-> Maybe CreateEmbed
-> DiscordHandler Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId)
-> Text -> Maybe CreateEmbed -> ChannelRequest Message
R.EditMessage
deleteMessage :: (ChannelId, ChannelId) -> DiscordHandler ()
deleteMessage = ChannelRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest () -> DiscordHandler ())
-> ((ChannelId, ChannelId) -> ChannelRequest ())
-> (ChannelId, ChannelId)
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId) -> ChannelRequest ()
R.DeleteMessage
bulkDeleteMessage :: (ChannelId, [ChannelId]) -> DiscordHandler ()
bulkDeleteMessage = ChannelRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest () -> DiscordHandler ())
-> ((ChannelId, [ChannelId]) -> ChannelRequest ())
-> (ChannelId, [ChannelId])
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, [ChannelId]) -> ChannelRequest ()
R.BulkDeleteMessage
editChannelPermissions :: ChannelId
-> ChannelId -> ChannelPermissionsOpts -> DiscordHandler ()
editChannelPermissions = ((ChannelRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest () -> DiscordHandler ())
-> (ChannelPermissionsOpts -> ChannelRequest ())
-> ChannelPermissionsOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelPermissionsOpts -> ChannelRequest ())
-> ChannelPermissionsOpts -> DiscordHandler ())
-> (ChannelId -> ChannelPermissionsOpts -> ChannelRequest ())
-> ChannelId
-> ChannelPermissionsOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> ChannelPermissionsOpts -> ChannelRequest ())
-> ChannelId -> ChannelPermissionsOpts -> DiscordHandler ())
-> (ChannelId
-> ChannelId -> ChannelPermissionsOpts -> ChannelRequest ())
-> ChannelId
-> ChannelId
-> ChannelPermissionsOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId
-> ChannelId -> ChannelPermissionsOpts -> ChannelRequest ()
R.EditChannelPermissions
getChannelInvites :: ChannelId -> DiscordHandler Object
getChannelInvites = ChannelRequest Object -> DiscordHandler Object
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest Object -> DiscordHandler Object)
-> (ChannelId -> ChannelRequest Object)
-> ChannelId
-> DiscordHandler Object
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelRequest Object
R.GetChannelInvites
createChannelInvite :: ChannelId -> ChannelInviteOpts -> DiscordHandler Invite
createChannelInvite = (ChannelRequest Invite -> DiscordHandler Invite
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest Invite -> DiscordHandler Invite)
-> (ChannelInviteOpts -> ChannelRequest Invite)
-> ChannelInviteOpts
-> DiscordHandler Invite
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelInviteOpts -> ChannelRequest Invite)
-> ChannelInviteOpts -> DiscordHandler Invite)
-> (ChannelId -> ChannelInviteOpts -> ChannelRequest Invite)
-> ChannelId
-> ChannelInviteOpts
-> DiscordHandler Invite
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelInviteOpts -> ChannelRequest Invite
R.CreateChannelInvite
deleteChannelPermission :: ChannelId -> ChannelId -> DiscordHandler ()
deleteChannelPermission = (ChannelRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest () -> DiscordHandler ())
-> (ChannelId -> ChannelRequest ())
-> ChannelId
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> ChannelRequest ())
-> ChannelId -> DiscordHandler ())
-> (ChannelId -> ChannelId -> ChannelRequest ())
-> ChannelId
-> ChannelId
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> ChannelRequest ()
R.DeleteChannelPermission
triggerTypingIndicator :: ChannelId -> DiscordHandler ()
triggerTypingIndicator = ChannelRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest () -> DiscordHandler ())
-> (ChannelId -> ChannelRequest ())
-> ChannelId
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelRequest ()
R.TriggerTypingIndicator
getPinnedMessages :: ChannelId -> DiscordHandler [Message]
getPinnedMessages = ChannelRequest [Message] -> DiscordHandler [Message]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest [Message] -> DiscordHandler [Message])
-> (ChannelId -> ChannelRequest [Message])
-> ChannelId
-> DiscordHandler [Message]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelRequest [Message]
R.GetPinnedMessages
addPinnedMessage :: (ChannelId, ChannelId) -> DiscordHandler ()
addPinnedMessage = ChannelRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest () -> DiscordHandler ())
-> ((ChannelId, ChannelId) -> ChannelRequest ())
-> (ChannelId, ChannelId)
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId) -> ChannelRequest ()
R.AddPinnedMessage
deletePinnedMessage :: (ChannelId, ChannelId) -> DiscordHandler ()
deletePinnedMessage = ChannelRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest () -> DiscordHandler ())
-> ((ChannelId, ChannelId) -> ChannelRequest ())
-> (ChannelId, ChannelId)
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId) -> ChannelRequest ()
R.DeletePinnedMessage
groupDMAddRecipient :: ChannelId -> GroupDMAddRecipientOpts -> DiscordHandler ()
groupDMAddRecipient = (ChannelRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest () -> DiscordHandler ())
-> (GroupDMAddRecipientOpts -> ChannelRequest ())
-> GroupDMAddRecipientOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((GroupDMAddRecipientOpts -> ChannelRequest ())
-> GroupDMAddRecipientOpts -> DiscordHandler ())
-> (ChannelId -> GroupDMAddRecipientOpts -> ChannelRequest ())
-> ChannelId
-> GroupDMAddRecipientOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GroupDMAddRecipientOpts -> ChannelRequest ()
R.GroupDMAddRecipient
groupDMRemoveRecipient :: ChannelId -> ChannelId -> DiscordHandler ()
groupDMRemoveRecipient = (ChannelRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (ChannelRequest () -> DiscordHandler ())
-> (ChannelId -> ChannelRequest ())
-> ChannelId
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> ChannelRequest ())
-> ChannelId -> DiscordHandler ())
-> (ChannelId -> ChannelId -> ChannelRequest ())
-> ChannelId
-> ChannelId
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> ChannelRequest ()
R.GroupDMRemoveRecipient
listGuildEmojis :: ChannelId -> DiscordHandler [Emoji]
listGuildEmojis = EmojiRequest [Emoji] -> DiscordHandler [Emoji]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (EmojiRequest [Emoji] -> DiscordHandler [Emoji])
-> (ChannelId -> EmojiRequest [Emoji])
-> ChannelId
-> DiscordHandler [Emoji]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> EmojiRequest [Emoji]
R.ListGuildEmojis
getGuildEmoji :: ChannelId -> ChannelId -> DiscordHandler Emoji
getGuildEmoji = (EmojiRequest Emoji -> DiscordHandler Emoji
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (EmojiRequest Emoji -> DiscordHandler Emoji)
-> (ChannelId -> EmojiRequest Emoji)
-> ChannelId
-> DiscordHandler Emoji
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> EmojiRequest Emoji)
-> ChannelId -> DiscordHandler Emoji)
-> (ChannelId -> ChannelId -> EmojiRequest Emoji)
-> ChannelId
-> ChannelId
-> DiscordHandler Emoji
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> EmojiRequest Emoji
R.GetGuildEmoji
createGuildEmoji :: ChannelId -> Text -> ByteString -> DiscordHandler Emoji
createGuildEmoji ChannelId
g Text
t ByteString
b =
case ByteString -> Either Text EmojiImageParsed
R.parseEmojiImage ByteString
b of
Left Text
x -> CommandError -> DiscordHandler Emoji
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM (CommandError -> DiscordHandler Emoji)
-> CommandError -> DiscordHandler Emoji
forall a b. (a -> b) -> a -> b
$ Text -> CommandError
ProcessingError Text
x
Right EmojiImageParsed
x -> EmojiRequest Emoji
-> DiscordHandler (Either RestCallErrorCode Emoji)
forall a (r :: * -> *).
(FromJSON a, Request (r a)) =>
r a -> DiscordHandler (Either RestCallErrorCode a)
restCall (ChannelId -> Text -> EmojiImageParsed -> EmojiRequest Emoji
R.CreateGuildEmoji ChannelId
g Text
t EmojiImageParsed
x) DiscordHandler (Either RestCallErrorCode Emoji)
-> (Either RestCallErrorCode Emoji -> DiscordHandler Emoji)
-> DiscordHandler Emoji
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Either RestCallErrorCode Emoji -> DiscordHandler Emoji
forall a. Either RestCallErrorCode a -> DiscordHandler a
handleDiscordResult
modifyGuildEmoji :: ChannelId
-> ChannelId -> ModifyGuildEmojiOpts -> DiscordHandler Emoji
modifyGuildEmoji = ((EmojiRequest Emoji -> DiscordHandler Emoji
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (EmojiRequest Emoji -> DiscordHandler Emoji)
-> (ModifyGuildEmojiOpts -> EmojiRequest Emoji)
-> ModifyGuildEmojiOpts
-> DiscordHandler Emoji
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ModifyGuildEmojiOpts -> EmojiRequest Emoji)
-> ModifyGuildEmojiOpts -> DiscordHandler Emoji)
-> (ChannelId -> ModifyGuildEmojiOpts -> EmojiRequest Emoji)
-> ChannelId
-> ModifyGuildEmojiOpts
-> DiscordHandler Emoji
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> ModifyGuildEmojiOpts -> EmojiRequest Emoji)
-> ChannelId -> ModifyGuildEmojiOpts -> DiscordHandler Emoji)
-> (ChannelId
-> ChannelId -> ModifyGuildEmojiOpts -> EmojiRequest Emoji)
-> ChannelId
-> ChannelId
-> ModifyGuildEmojiOpts
-> DiscordHandler Emoji
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId
-> ChannelId -> ModifyGuildEmojiOpts -> EmojiRequest Emoji
R.ModifyGuildEmoji
deleteGuildEmoji :: ChannelId -> ChannelId -> DiscordHandler ()
deleteGuildEmoji = (EmojiRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (EmojiRequest () -> DiscordHandler ())
-> (ChannelId -> EmojiRequest ()) -> ChannelId -> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> EmojiRequest ()) -> ChannelId -> DiscordHandler ())
-> (ChannelId -> ChannelId -> EmojiRequest ())
-> ChannelId
-> ChannelId
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> EmojiRequest ()
R.DeleteGuildEmoji
createGuild :: CreateGuildOpts -> DiscordHandler Guild
createGuild = GuildRequest Guild -> DiscordHandler Guild
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest Guild -> DiscordHandler Guild)
-> (CreateGuildOpts -> GuildRequest Guild)
-> CreateGuildOpts
-> DiscordHandler Guild
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CreateGuildOpts -> GuildRequest Guild
R.CreateGuild
getGuild :: ChannelId -> DiscordHandler Guild
getGuild = GuildRequest Guild -> DiscordHandler Guild
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest Guild -> DiscordHandler Guild)
-> (ChannelId -> GuildRequest Guild)
-> ChannelId
-> DiscordHandler Guild
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildRequest Guild
R.GetGuild
modifyGuild :: ChannelId -> ModifyGuildOpts -> DiscordHandler Guild
modifyGuild = (GuildRequest Guild -> DiscordHandler Guild
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest Guild -> DiscordHandler Guild)
-> (ModifyGuildOpts -> GuildRequest Guild)
-> ModifyGuildOpts
-> DiscordHandler Guild
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ModifyGuildOpts -> GuildRequest Guild)
-> ModifyGuildOpts -> DiscordHandler Guild)
-> (ChannelId -> ModifyGuildOpts -> GuildRequest Guild)
-> ChannelId
-> ModifyGuildOpts
-> DiscordHandler Guild
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ModifyGuildOpts -> GuildRequest Guild
R.ModifyGuild
deleteGuild :: ChannelId -> DiscordHandler ()
deleteGuild = GuildRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest () -> DiscordHandler ())
-> (ChannelId -> GuildRequest ()) -> ChannelId -> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildRequest ()
R.DeleteGuild
getGuildChannels :: ChannelId -> DiscordHandler [Channel]
getGuildChannels = GuildRequest [Channel] -> DiscordHandler [Channel]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest [Channel] -> DiscordHandler [Channel])
-> (ChannelId -> GuildRequest [Channel])
-> ChannelId
-> DiscordHandler [Channel]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildRequest [Channel]
R.GetGuildChannels
createGuildChannel :: ChannelId
-> Text
-> [Overwrite]
-> CreateGuildChannelOpts
-> DiscordHandler Channel
createGuildChannel = (((GuildRequest Channel -> DiscordHandler Channel
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest Channel -> DiscordHandler Channel)
-> (CreateGuildChannelOpts -> GuildRequest Channel)
-> CreateGuildChannelOpts
-> DiscordHandler Channel
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((CreateGuildChannelOpts -> GuildRequest Channel)
-> CreateGuildChannelOpts -> DiscordHandler Channel)
-> ([Overwrite] -> CreateGuildChannelOpts -> GuildRequest Channel)
-> [Overwrite]
-> CreateGuildChannelOpts
-> DiscordHandler Channel
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) (([Overwrite] -> CreateGuildChannelOpts -> GuildRequest Channel)
-> [Overwrite] -> CreateGuildChannelOpts -> DiscordHandler Channel)
-> (Text
-> [Overwrite] -> CreateGuildChannelOpts -> GuildRequest Channel)
-> Text
-> [Overwrite]
-> CreateGuildChannelOpts
-> DiscordHandler Channel
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text
-> [Overwrite] -> CreateGuildChannelOpts -> GuildRequest Channel)
-> Text
-> [Overwrite]
-> CreateGuildChannelOpts
-> DiscordHandler Channel)
-> (ChannelId
-> Text
-> [Overwrite]
-> CreateGuildChannelOpts
-> GuildRequest Channel)
-> ChannelId
-> Text
-> [Overwrite]
-> CreateGuildChannelOpts
-> DiscordHandler Channel
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId
-> Text
-> [Overwrite]
-> CreateGuildChannelOpts
-> GuildRequest Channel
R.CreateGuildChannel
modifyGuildChannelPositions :: ChannelId -> [(ChannelId, Int)] -> DiscordHandler [Channel]
modifyGuildChannelPositions = (GuildRequest [Channel] -> DiscordHandler [Channel]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest [Channel] -> DiscordHandler [Channel])
-> ([(ChannelId, Int)] -> GuildRequest [Channel])
-> [(ChannelId, Int)]
-> DiscordHandler [Channel]
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) (([(ChannelId, Int)] -> GuildRequest [Channel])
-> [(ChannelId, Int)] -> DiscordHandler [Channel])
-> (ChannelId -> [(ChannelId, Int)] -> GuildRequest [Channel])
-> ChannelId
-> [(ChannelId, Int)]
-> DiscordHandler [Channel]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> [(ChannelId, Int)] -> GuildRequest [Channel]
R.ModifyGuildChannelPositions
getGuildMember :: ChannelId -> ChannelId -> DiscordHandler GuildMember
getGuildMember = (GuildRequest GuildMember -> DiscordHandler GuildMember
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest GuildMember -> DiscordHandler GuildMember)
-> (ChannelId -> GuildRequest GuildMember)
-> ChannelId
-> DiscordHandler GuildMember
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> GuildRequest GuildMember)
-> ChannelId -> DiscordHandler GuildMember)
-> (ChannelId -> ChannelId -> GuildRequest GuildMember)
-> ChannelId
-> ChannelId
-> DiscordHandler GuildMember
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> GuildRequest GuildMember
R.GetGuildMember
listGuildMembers :: ChannelId -> GuildMembersTiming -> DiscordHandler [GuildMember]
listGuildMembers = (GuildRequest [GuildMember] -> DiscordHandler [GuildMember]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest [GuildMember] -> DiscordHandler [GuildMember])
-> (GuildMembersTiming -> GuildRequest [GuildMember])
-> GuildMembersTiming
-> DiscordHandler [GuildMember]
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((GuildMembersTiming -> GuildRequest [GuildMember])
-> GuildMembersTiming -> DiscordHandler [GuildMember])
-> (ChannelId -> GuildMembersTiming -> GuildRequest [GuildMember])
-> ChannelId
-> GuildMembersTiming
-> DiscordHandler [GuildMember]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildMembersTiming -> GuildRequest [GuildMember]
R.ListGuildMembers
addGuildMember :: ChannelId -> ChannelId -> AddGuildMemberOpts -> DiscordHandler ()
addGuildMember = ((GuildRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest () -> DiscordHandler ())
-> (AddGuildMemberOpts -> GuildRequest ())
-> AddGuildMemberOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((AddGuildMemberOpts -> GuildRequest ())
-> AddGuildMemberOpts -> DiscordHandler ())
-> (ChannelId -> AddGuildMemberOpts -> GuildRequest ())
-> ChannelId
-> AddGuildMemberOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> AddGuildMemberOpts -> GuildRequest ())
-> ChannelId -> AddGuildMemberOpts -> DiscordHandler ())
-> (ChannelId
-> ChannelId -> AddGuildMemberOpts -> GuildRequest ())
-> ChannelId
-> ChannelId
-> AddGuildMemberOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> AddGuildMemberOpts -> GuildRequest ()
R.AddGuildMember
modifyGuildMember :: ChannelId
-> ChannelId -> ModifyGuildMemberOpts -> DiscordHandler ()
modifyGuildMember = ((GuildRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest () -> DiscordHandler ())
-> (ModifyGuildMemberOpts -> GuildRequest ())
-> ModifyGuildMemberOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ModifyGuildMemberOpts -> GuildRequest ())
-> ModifyGuildMemberOpts -> DiscordHandler ())
-> (ChannelId -> ModifyGuildMemberOpts -> GuildRequest ())
-> ChannelId
-> ModifyGuildMemberOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> ModifyGuildMemberOpts -> GuildRequest ())
-> ChannelId -> ModifyGuildMemberOpts -> DiscordHandler ())
-> (ChannelId
-> ChannelId -> ModifyGuildMemberOpts -> GuildRequest ())
-> ChannelId
-> ChannelId
-> ModifyGuildMemberOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> ModifyGuildMemberOpts -> GuildRequest ()
R.ModifyGuildMember
modifyCurrentUserNick :: ChannelId -> Text -> DiscordHandler ()
modifyCurrentUserNick = (GuildRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest () -> DiscordHandler ())
-> (Text -> GuildRequest ()) -> Text -> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> GuildRequest ()) -> Text -> DiscordHandler ())
-> (ChannelId -> Text -> GuildRequest ())
-> ChannelId
-> Text
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> Text -> GuildRequest ()
R.ModifyCurrentUserNick
addGuildMemberRole :: ChannelId -> ChannelId -> ChannelId -> DiscordHandler ()
addGuildMemberRole = ((GuildRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest () -> DiscordHandler ())
-> (ChannelId -> GuildRequest ()) -> ChannelId -> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> GuildRequest ()) -> ChannelId -> DiscordHandler ())
-> (ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId
-> ChannelId
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId -> ChannelId -> DiscordHandler ())
-> (ChannelId -> ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId
-> ChannelId
-> ChannelId
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> ChannelId -> GuildRequest ()
R.AddGuildMemberRole
removeGuildMemberRole :: ChannelId -> ChannelId -> ChannelId -> DiscordHandler ()
removeGuildMemberRole = ((GuildRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest () -> DiscordHandler ())
-> (ChannelId -> GuildRequest ()) -> ChannelId -> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> GuildRequest ()) -> ChannelId -> DiscordHandler ())
-> (ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId
-> ChannelId
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId -> ChannelId -> DiscordHandler ())
-> (ChannelId -> ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId
-> ChannelId
-> ChannelId
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> ChannelId -> GuildRequest ()
R.RemoveGuildMemberRole
removeGuildMember :: ChannelId -> ChannelId -> DiscordHandler ()
removeGuildMember = (GuildRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest () -> DiscordHandler ())
-> (ChannelId -> GuildRequest ()) -> ChannelId -> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> GuildRequest ()) -> ChannelId -> DiscordHandler ())
-> (ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId
-> ChannelId
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> GuildRequest ()
R.RemoveGuildMember
getGuildBans :: ChannelId -> DiscordHandler [GuildBan]
getGuildBans = GuildRequest [GuildBan] -> DiscordHandler [GuildBan]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest [GuildBan] -> DiscordHandler [GuildBan])
-> (ChannelId -> GuildRequest [GuildBan])
-> ChannelId
-> DiscordHandler [GuildBan]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildRequest [GuildBan]
R.GetGuildBans
getGuildBan :: ChannelId -> ChannelId -> DiscordHandler GuildBan
getGuildBan = (GuildRequest GuildBan -> DiscordHandler GuildBan
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest GuildBan -> DiscordHandler GuildBan)
-> (ChannelId -> GuildRequest GuildBan)
-> ChannelId
-> DiscordHandler GuildBan
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> GuildRequest GuildBan)
-> ChannelId -> DiscordHandler GuildBan)
-> (ChannelId -> ChannelId -> GuildRequest GuildBan)
-> ChannelId
-> ChannelId
-> DiscordHandler GuildBan
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> GuildRequest GuildBan
R.GetGuildBan
createGuildBan :: ChannelId -> ChannelId -> CreateGuildBanOpts -> DiscordHandler ()
createGuildBan = ((GuildRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest () -> DiscordHandler ())
-> (CreateGuildBanOpts -> GuildRequest ())
-> CreateGuildBanOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((CreateGuildBanOpts -> GuildRequest ())
-> CreateGuildBanOpts -> DiscordHandler ())
-> (ChannelId -> CreateGuildBanOpts -> GuildRequest ())
-> ChannelId
-> CreateGuildBanOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> CreateGuildBanOpts -> GuildRequest ())
-> ChannelId -> CreateGuildBanOpts -> DiscordHandler ())
-> (ChannelId
-> ChannelId -> CreateGuildBanOpts -> GuildRequest ())
-> ChannelId
-> ChannelId
-> CreateGuildBanOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> CreateGuildBanOpts -> GuildRequest ()
R.CreateGuildBan
removeGuildBan :: ChannelId -> ChannelId -> DiscordHandler ()
removeGuildBan = (GuildRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest () -> DiscordHandler ())
-> (ChannelId -> GuildRequest ()) -> ChannelId -> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> GuildRequest ()) -> ChannelId -> DiscordHandler ())
-> (ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId
-> ChannelId
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> GuildRequest ()
R.RemoveGuildBan
getGuildRoles :: ChannelId -> DiscordHandler [Role]
getGuildRoles = GuildRequest [Role] -> DiscordHandler [Role]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest [Role] -> DiscordHandler [Role])
-> (ChannelId -> GuildRequest [Role])
-> ChannelId
-> DiscordHandler [Role]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildRequest [Role]
R.GetGuildRoles
createGuildRole :: ChannelId -> ModifyGuildRoleOpts -> DiscordHandler Role
createGuildRole = (GuildRequest Role -> DiscordHandler Role
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest Role -> DiscordHandler Role)
-> (ModifyGuildRoleOpts -> GuildRequest Role)
-> ModifyGuildRoleOpts
-> DiscordHandler Role
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ModifyGuildRoleOpts -> GuildRequest Role)
-> ModifyGuildRoleOpts -> DiscordHandler Role)
-> (ChannelId -> ModifyGuildRoleOpts -> GuildRequest Role)
-> ChannelId
-> ModifyGuildRoleOpts
-> DiscordHandler Role
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ModifyGuildRoleOpts -> GuildRequest Role
R.CreateGuildRole
modifyGuildRolePositions :: ChannelId -> [(ChannelId, Integer)] -> DiscordHandler [Role]
modifyGuildRolePositions = (GuildRequest [Role] -> DiscordHandler [Role]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest [Role] -> DiscordHandler [Role])
-> ([(ChannelId, Integer)] -> GuildRequest [Role])
-> [(ChannelId, Integer)]
-> DiscordHandler [Role]
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) (([(ChannelId, Integer)] -> GuildRequest [Role])
-> [(ChannelId, Integer)] -> DiscordHandler [Role])
-> (ChannelId -> [(ChannelId, Integer)] -> GuildRequest [Role])
-> ChannelId
-> [(ChannelId, Integer)]
-> DiscordHandler [Role]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> [(ChannelId, Integer)] -> GuildRequest [Role]
R.ModifyGuildRolePositions
modifyGuildRole :: ChannelId
-> ChannelId -> ModifyGuildRoleOpts -> DiscordHandler Role
modifyGuildRole = ((GuildRequest Role -> DiscordHandler Role
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest Role -> DiscordHandler Role)
-> (ModifyGuildRoleOpts -> GuildRequest Role)
-> ModifyGuildRoleOpts
-> DiscordHandler Role
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ModifyGuildRoleOpts -> GuildRequest Role)
-> ModifyGuildRoleOpts -> DiscordHandler Role)
-> (ChannelId -> ModifyGuildRoleOpts -> GuildRequest Role)
-> ChannelId
-> ModifyGuildRoleOpts
-> DiscordHandler Role
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> ModifyGuildRoleOpts -> GuildRequest Role)
-> ChannelId -> ModifyGuildRoleOpts -> DiscordHandler Role)
-> (ChannelId
-> ChannelId -> ModifyGuildRoleOpts -> GuildRequest Role)
-> ChannelId
-> ChannelId
-> ModifyGuildRoleOpts
-> DiscordHandler Role
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> ModifyGuildRoleOpts -> GuildRequest Role
R.ModifyGuildRole
deleteGuildRole :: ChannelId -> ChannelId -> DiscordHandler ()
deleteGuildRole = (GuildRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest () -> DiscordHandler ())
-> (ChannelId -> GuildRequest ()) -> ChannelId -> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> GuildRequest ()) -> ChannelId -> DiscordHandler ())
-> (ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId
-> ChannelId
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> GuildRequest ()
R.DeleteGuildRole
getGuildPruneCount :: ChannelId -> Integer -> DiscordHandler Object
getGuildPruneCount = (GuildRequest Object -> DiscordHandler Object
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest Object -> DiscordHandler Object)
-> (Integer -> GuildRequest Object)
-> Integer
-> DiscordHandler Object
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Integer -> GuildRequest Object)
-> Integer -> DiscordHandler Object)
-> (ChannelId -> Integer -> GuildRequest Object)
-> ChannelId
-> Integer
-> DiscordHandler Object
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> Integer -> GuildRequest Object
R.GetGuildPruneCount
beginGuildPrune :: ChannelId -> Integer -> DiscordHandler Object
beginGuildPrune = (GuildRequest Object -> DiscordHandler Object
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest Object -> DiscordHandler Object)
-> (Integer -> GuildRequest Object)
-> Integer
-> DiscordHandler Object
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Integer -> GuildRequest Object)
-> Integer -> DiscordHandler Object)
-> (ChannelId -> Integer -> GuildRequest Object)
-> ChannelId
-> Integer
-> DiscordHandler Object
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> Integer -> GuildRequest Object
R.BeginGuildPrune
getGuildVoiceRegions :: ChannelId -> DiscordHandler [VoiceRegion]
getGuildVoiceRegions = GuildRequest [VoiceRegion] -> DiscordHandler [VoiceRegion]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest [VoiceRegion] -> DiscordHandler [VoiceRegion])
-> (ChannelId -> GuildRequest [VoiceRegion])
-> ChannelId
-> DiscordHandler [VoiceRegion]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildRequest [VoiceRegion]
R.GetGuildVoiceRegions
getGuildInvites :: ChannelId -> DiscordHandler [Invite]
getGuildInvites = GuildRequest [Invite] -> DiscordHandler [Invite]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest [Invite] -> DiscordHandler [Invite])
-> (ChannelId -> GuildRequest [Invite])
-> ChannelId
-> DiscordHandler [Invite]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildRequest [Invite]
R.GetGuildInvites
getGuildIntegrations :: ChannelId -> DiscordHandler [Integration]
getGuildIntegrations = GuildRequest [Integration] -> DiscordHandler [Integration]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest [Integration] -> DiscordHandler [Integration])
-> (ChannelId -> GuildRequest [Integration])
-> ChannelId
-> DiscordHandler [Integration]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildRequest [Integration]
R.GetGuildIntegrations
createGuildIntegration :: ChannelId
-> ChannelId -> CreateGuildIntegrationOpts -> DiscordHandler ()
createGuildIntegration = ((GuildRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest () -> DiscordHandler ())
-> (CreateGuildIntegrationOpts -> GuildRequest ())
-> CreateGuildIntegrationOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((CreateGuildIntegrationOpts -> GuildRequest ())
-> CreateGuildIntegrationOpts -> DiscordHandler ())
-> (ChannelId -> CreateGuildIntegrationOpts -> GuildRequest ())
-> ChannelId
-> CreateGuildIntegrationOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> CreateGuildIntegrationOpts -> GuildRequest ())
-> ChannelId -> CreateGuildIntegrationOpts -> DiscordHandler ())
-> (ChannelId
-> ChannelId -> CreateGuildIntegrationOpts -> GuildRequest ())
-> ChannelId
-> ChannelId
-> CreateGuildIntegrationOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId
-> ChannelId -> CreateGuildIntegrationOpts -> GuildRequest ()
R.CreateGuildIntegration
modifyGuildIntegration :: ChannelId
-> ChannelId -> ModifyGuildIntegrationOpts -> DiscordHandler ()
modifyGuildIntegration = ((GuildRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest () -> DiscordHandler ())
-> (ModifyGuildIntegrationOpts -> GuildRequest ())
-> ModifyGuildIntegrationOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ModifyGuildIntegrationOpts -> GuildRequest ())
-> ModifyGuildIntegrationOpts -> DiscordHandler ())
-> (ChannelId -> ModifyGuildIntegrationOpts -> GuildRequest ())
-> ChannelId
-> ModifyGuildIntegrationOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> ModifyGuildIntegrationOpts -> GuildRequest ())
-> ChannelId -> ModifyGuildIntegrationOpts -> DiscordHandler ())
-> (ChannelId
-> ChannelId -> ModifyGuildIntegrationOpts -> GuildRequest ())
-> ChannelId
-> ChannelId
-> ModifyGuildIntegrationOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId
-> ChannelId -> ModifyGuildIntegrationOpts -> GuildRequest ()
R.ModifyGuildIntegration
deleteGuildIntegration :: ChannelId -> ChannelId -> DiscordHandler ()
deleteGuildIntegration = (GuildRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest () -> DiscordHandler ())
-> (ChannelId -> GuildRequest ()) -> ChannelId -> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> GuildRequest ()) -> ChannelId -> DiscordHandler ())
-> (ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId
-> ChannelId
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> GuildRequest ()
R.DeleteGuildIntegration
syncGuildIntegration :: ChannelId -> ChannelId -> DiscordHandler ()
syncGuildIntegration = (GuildRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest () -> DiscordHandler ())
-> (ChannelId -> GuildRequest ()) -> ChannelId -> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> GuildRequest ()) -> ChannelId -> DiscordHandler ())
-> (ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId
-> ChannelId
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> GuildRequest ()
R.SyncGuildIntegration
getGuildEmbed :: ChannelId -> DiscordHandler GuildEmbed
getGuildEmbed = GuildRequest GuildEmbed -> DiscordHandler GuildEmbed
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest GuildEmbed -> DiscordHandler GuildEmbed)
-> (ChannelId -> GuildRequest GuildEmbed)
-> ChannelId
-> DiscordHandler GuildEmbed
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildRequest GuildEmbed
R.GetGuildEmbed
modifyGuildEmbed :: ChannelId -> GuildEmbed -> DiscordHandler GuildEmbed
modifyGuildEmbed = (GuildRequest GuildEmbed -> DiscordHandler GuildEmbed
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest GuildEmbed -> DiscordHandler GuildEmbed)
-> (GuildEmbed -> GuildRequest GuildEmbed)
-> GuildEmbed
-> DiscordHandler GuildEmbed
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((GuildEmbed -> GuildRequest GuildEmbed)
-> GuildEmbed -> DiscordHandler GuildEmbed)
-> (ChannelId -> GuildEmbed -> GuildRequest GuildEmbed)
-> ChannelId
-> GuildEmbed
-> DiscordHandler GuildEmbed
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildEmbed -> GuildRequest GuildEmbed
R.ModifyGuildEmbed
getGuildVanityURL :: ChannelId -> DiscordHandler Text
getGuildVanityURL = GuildRequest Text -> DiscordHandler Text
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (GuildRequest Text -> DiscordHandler Text)
-> (ChannelId -> GuildRequest Text)
-> ChannelId
-> DiscordHandler Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildRequest Text
R.GetGuildVanityURL
getInvite :: Text -> DiscordHandler Invite
getInvite = InviteRequest Invite -> DiscordHandler Invite
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (InviteRequest Invite -> DiscordHandler Invite)
-> (Text -> InviteRequest Invite) -> Text -> DiscordHandler Invite
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> InviteRequest Invite
R.GetInvite
deleteInvite :: Text -> DiscordHandler Invite
deleteInvite = InviteRequest Invite -> DiscordHandler Invite
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (InviteRequest Invite -> DiscordHandler Invite)
-> (Text -> InviteRequest Invite) -> Text -> DiscordHandler Invite
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> InviteRequest Invite
R.DeleteInvite
getCurrentUser :: DiscordHandler User
getCurrentUser = UserRequest User -> DiscordHandler User
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle UserRequest User
R.GetCurrentUser
getUser :: ChannelId -> DiscordHandler User
getUser = UserRequest User -> DiscordHandler User
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (UserRequest User -> DiscordHandler User)
-> (ChannelId -> UserRequest User)
-> ChannelId
-> DiscordHandler User
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> UserRequest User
R.GetUser
modifyCurrentUser :: Text -> CurrentUserAvatar -> DiscordHandler User
modifyCurrentUser = (UserRequest User -> DiscordHandler User
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (UserRequest User -> DiscordHandler User)
-> (CurrentUserAvatar -> UserRequest User)
-> CurrentUserAvatar
-> DiscordHandler User
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((CurrentUserAvatar -> UserRequest User)
-> CurrentUserAvatar -> DiscordHandler User)
-> (Text -> CurrentUserAvatar -> UserRequest User)
-> Text
-> CurrentUserAvatar
-> DiscordHandler User
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> CurrentUserAvatar -> UserRequest User
R.ModifyCurrentUser
getCurrentUserGuilds :: DiscordHandler [PartialGuild]
getCurrentUserGuilds = UserRequest [PartialGuild] -> DiscordHandler [PartialGuild]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle UserRequest [PartialGuild]
R.GetCurrentUserGuilds
leaveGuild :: ChannelId -> DiscordHandler ()
leaveGuild = UserRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (UserRequest () -> DiscordHandler ())
-> (ChannelId -> UserRequest ()) -> ChannelId -> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> UserRequest ()
R.LeaveGuild
getUserDMs :: DiscordHandler [Channel]
getUserDMs = UserRequest [Channel] -> DiscordHandler [Channel]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle UserRequest [Channel]
R.GetUserDMs
createDM :: ChannelId -> DiscordHandler Channel
createDM = UserRequest Channel -> DiscordHandler Channel
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (UserRequest Channel -> DiscordHandler Channel)
-> (ChannelId -> UserRequest Channel)
-> ChannelId
-> DiscordHandler Channel
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> UserRequest Channel
R.CreateDM
getUserConnections :: DiscordHandler [ConnectionObject]
getUserConnections = UserRequest [ConnectionObject] -> DiscordHandler [ConnectionObject]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle UserRequest [ConnectionObject]
R.GetUserConnections
listVoiceRegions :: DiscordHandler [VoiceRegion]
listVoiceRegions = VoiceRequest [VoiceRegion] -> DiscordHandler [VoiceRegion]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle VoiceRequest [VoiceRegion]
R.ListVoiceRegions
createWebhook :: ChannelId -> CreateWebhookOpts -> DiscordHandler Webhook
createWebhook = (WebhookRequest Webhook -> DiscordHandler Webhook
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (WebhookRequest Webhook -> DiscordHandler Webhook)
-> (CreateWebhookOpts -> WebhookRequest Webhook)
-> CreateWebhookOpts
-> DiscordHandler Webhook
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((CreateWebhookOpts -> WebhookRequest Webhook)
-> CreateWebhookOpts -> DiscordHandler Webhook)
-> (ChannelId -> CreateWebhookOpts -> WebhookRequest Webhook)
-> ChannelId
-> CreateWebhookOpts
-> DiscordHandler Webhook
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> CreateWebhookOpts -> WebhookRequest Webhook
R.CreateWebhook
getChannelWebhooks :: ChannelId -> DiscordHandler [Webhook]
getChannelWebhooks = WebhookRequest [Webhook] -> DiscordHandler [Webhook]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (WebhookRequest [Webhook] -> DiscordHandler [Webhook])
-> (ChannelId -> WebhookRequest [Webhook])
-> ChannelId
-> DiscordHandler [Webhook]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> WebhookRequest [Webhook]
R.GetChannelWebhooks
getGuildWebhooks :: ChannelId -> DiscordHandler [Webhook]
getGuildWebhooks = WebhookRequest [Webhook] -> DiscordHandler [Webhook]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (WebhookRequest [Webhook] -> DiscordHandler [Webhook])
-> (ChannelId -> WebhookRequest [Webhook])
-> ChannelId
-> DiscordHandler [Webhook]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> WebhookRequest [Webhook]
R.GetGuildWebhooks
getWebhook :: ChannelId -> DiscordHandler Webhook
getWebhook = WebhookRequest Webhook -> DiscordHandler Webhook
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (WebhookRequest Webhook -> DiscordHandler Webhook)
-> (ChannelId -> WebhookRequest Webhook)
-> ChannelId
-> DiscordHandler Webhook
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> WebhookRequest Webhook
R.GetWebhook
getWebhookWithToken :: ChannelId -> Text -> DiscordHandler Webhook
getWebhookWithToken = (WebhookRequest Webhook -> DiscordHandler Webhook
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (WebhookRequest Webhook -> DiscordHandler Webhook)
-> (Text -> WebhookRequest Webhook)
-> Text
-> DiscordHandler Webhook
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> WebhookRequest Webhook)
-> Text -> DiscordHandler Webhook)
-> (ChannelId -> Text -> WebhookRequest Webhook)
-> ChannelId
-> Text
-> DiscordHandler Webhook
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> Text -> WebhookRequest Webhook
R.GetWebhookWithToken
modifyWebhook :: ChannelId -> ModifyWebhookOpts -> DiscordHandler Webhook
modifyWebhook = (WebhookRequest Webhook -> DiscordHandler Webhook
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (WebhookRequest Webhook -> DiscordHandler Webhook)
-> (ModifyWebhookOpts -> WebhookRequest Webhook)
-> ModifyWebhookOpts
-> DiscordHandler Webhook
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ModifyWebhookOpts -> WebhookRequest Webhook)
-> ModifyWebhookOpts -> DiscordHandler Webhook)
-> (ChannelId -> ModifyWebhookOpts -> WebhookRequest Webhook)
-> ChannelId
-> ModifyWebhookOpts
-> DiscordHandler Webhook
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ModifyWebhookOpts -> WebhookRequest Webhook
R.ModifyWebhook
modifyWebhookWithToken :: ChannelId -> Text -> ModifyWebhookOpts -> DiscordHandler Webhook
modifyWebhookWithToken = ((WebhookRequest Webhook -> DiscordHandler Webhook
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (WebhookRequest Webhook -> DiscordHandler Webhook)
-> (ModifyWebhookOpts -> WebhookRequest Webhook)
-> ModifyWebhookOpts
-> DiscordHandler Webhook
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ModifyWebhookOpts -> WebhookRequest Webhook)
-> ModifyWebhookOpts -> DiscordHandler Webhook)
-> (Text -> ModifyWebhookOpts -> WebhookRequest Webhook)
-> Text
-> ModifyWebhookOpts
-> DiscordHandler Webhook
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> ModifyWebhookOpts -> WebhookRequest Webhook)
-> Text -> ModifyWebhookOpts -> DiscordHandler Webhook)
-> (ChannelId
-> Text -> ModifyWebhookOpts -> WebhookRequest Webhook)
-> ChannelId
-> Text
-> ModifyWebhookOpts
-> DiscordHandler Webhook
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> Text -> ModifyWebhookOpts -> WebhookRequest Webhook
R.ModifyWebhookWithToken
deleteWebhook :: ChannelId -> DiscordHandler ()
deleteWebhook = WebhookRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (WebhookRequest () -> DiscordHandler ())
-> (ChannelId -> WebhookRequest ())
-> ChannelId
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> WebhookRequest ()
R.DeleteWebhook
deleteWebhookWithToken :: ChannelId -> Text -> DiscordHandler ()
deleteWebhookWithToken = (WebhookRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (WebhookRequest () -> DiscordHandler ())
-> (Text -> WebhookRequest ()) -> Text -> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> WebhookRequest ()) -> Text -> DiscordHandler ())
-> (ChannelId -> Text -> WebhookRequest ())
-> ChannelId
-> Text
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> Text -> WebhookRequest ()
R.DeleteWebhookWithToken
executeWebhookWithToken :: ChannelId
-> Text -> ExecuteWebhookWithTokenOpts -> DiscordHandler ()
executeWebhookWithToken = ((WebhookRequest () -> DiscordHandler ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> DiscordHandler a
restCallAndHandle (WebhookRequest () -> DiscordHandler ())
-> (ExecuteWebhookWithTokenOpts -> WebhookRequest ())
-> ExecuteWebhookWithTokenOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ExecuteWebhookWithTokenOpts -> WebhookRequest ())
-> ExecuteWebhookWithTokenOpts -> DiscordHandler ())
-> (Text -> ExecuteWebhookWithTokenOpts -> WebhookRequest ())
-> Text
-> ExecuteWebhookWithTokenOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> ExecuteWebhookWithTokenOpts -> WebhookRequest ())
-> Text -> ExecuteWebhookWithTokenOpts -> DiscordHandler ())
-> (ChannelId
-> Text -> ExecuteWebhookWithTokenOpts -> WebhookRequest ())
-> ChannelId
-> Text
-> ExecuteWebhookWithTokenOpts
-> DiscordHandler ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId
-> Text -> ExecuteWebhookWithTokenOpts -> WebhookRequest ()
R.ExecuteWebhookWithToken
respond :: Message -> Text -> DiscordHandler ()
respond Message
m Text
t = DiscordHandler Message -> DiscordHandler ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (DiscordHandler Message -> DiscordHandler ())
-> DiscordHandler Message -> DiscordHandler ()
forall a b. (a -> b) -> a -> b
$ ChannelId -> Text -> DiscordHandler Message
forall (m :: * -> *).
MonadDiscord m =>
ChannelId -> Text -> m Message
createMessage (Message -> ChannelId
messageChannel Message
m) Text
t
restCallAndHandle :: (Request (r a), FromJSON a) => r a -> DiscordHandler a
restCallAndHandle :: r a -> DiscordHandler a
restCallAndHandle r a
req = r a -> DiscordHandler (Either RestCallErrorCode a)
forall a (r :: * -> *).
(FromJSON a, Request (r a)) =>
r a -> DiscordHandler (Either RestCallErrorCode a)
restCall r a
req DiscordHandler (Either RestCallErrorCode a)
-> (Either RestCallErrorCode a -> DiscordHandler a)
-> DiscordHandler a
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Either RestCallErrorCode a -> DiscordHandler a
forall a. Either RestCallErrorCode a -> DiscordHandler a
handleDiscordResult
handleDiscordResult :: Either RestCallErrorCode a -> DiscordHandler a
handleDiscordResult :: Either RestCallErrorCode a -> DiscordHandler a
handleDiscordResult Either RestCallErrorCode a
result =
case Either RestCallErrorCode a
result of
Left RestCallErrorCode
e -> CommandError -> DiscordHandler a
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM (CommandError -> DiscordHandler a)
-> CommandError -> DiscordHandler a
forall a b. (a -> b) -> a -> b
$ RestCallErrorCode -> CommandError
DiscordError RestCallErrorCode
e
Right a
x -> a -> DiscordHandler a
forall (f :: * -> *) a. Applicative f => a -> f a
pure a
x
instance MonadDiscord (ReaderT Auth IO) where
getChannel :: ChannelId -> ReaderT Auth IO Channel
getChannel = ChannelRequest Channel -> ReaderT Auth IO Channel
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest Channel -> ReaderT Auth IO Channel)
-> (ChannelId -> ChannelRequest Channel)
-> ChannelId
-> ReaderT Auth IO Channel
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelRequest Channel
R.GetChannel
modifyChannel :: ChannelId -> ModifyChannelOpts -> ReaderT Auth IO Channel
modifyChannel = (ChannelRequest Channel -> ReaderT Auth IO Channel
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest Channel -> ReaderT Auth IO Channel)
-> (ModifyChannelOpts -> ChannelRequest Channel)
-> ModifyChannelOpts
-> ReaderT Auth IO Channel
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ModifyChannelOpts -> ChannelRequest Channel)
-> ModifyChannelOpts -> ReaderT Auth IO Channel)
-> (ChannelId -> ModifyChannelOpts -> ChannelRequest Channel)
-> ChannelId
-> ModifyChannelOpts
-> ReaderT Auth IO Channel
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ModifyChannelOpts -> ChannelRequest Channel
R.ModifyChannel
deleteChannel :: ChannelId -> ReaderT Auth IO Channel
deleteChannel = ChannelRequest Channel -> ReaderT Auth IO Channel
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest Channel -> ReaderT Auth IO Channel)
-> (ChannelId -> ChannelRequest Channel)
-> ChannelId
-> ReaderT Auth IO Channel
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelRequest Channel
R.DeleteChannel
getChannelMessages :: ChannelId -> (Int, MessageTiming) -> ReaderT Auth IO [Message]
getChannelMessages = (ChannelRequest [Message] -> ReaderT Auth IO [Message]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest [Message] -> ReaderT Auth IO [Message])
-> ((Int, MessageTiming) -> ChannelRequest [Message])
-> (Int, MessageTiming)
-> ReaderT Auth IO [Message]
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) (((Int, MessageTiming) -> ChannelRequest [Message])
-> (Int, MessageTiming) -> ReaderT Auth IO [Message])
-> (ChannelId -> (Int, MessageTiming) -> ChannelRequest [Message])
-> ChannelId
-> (Int, MessageTiming)
-> ReaderT Auth IO [Message]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> (Int, MessageTiming) -> ChannelRequest [Message]
R.GetChannelMessages
getChannelMessage :: (ChannelId, ChannelId) -> ReaderT Auth IO Message
getChannelMessage = ChannelRequest Message -> ReaderT Auth IO Message
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest Message -> ReaderT Auth IO Message)
-> ((ChannelId, ChannelId) -> ChannelRequest Message)
-> (ChannelId, ChannelId)
-> ReaderT Auth IO Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId) -> ChannelRequest Message
R.GetChannelMessage
createMessage :: ChannelId -> Text -> ReaderT Auth IO Message
createMessage = (ChannelRequest Message -> ReaderT Auth IO Message
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest Message -> ReaderT Auth IO Message)
-> (Text -> ChannelRequest Message)
-> Text
-> ReaderT Auth IO Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> ChannelRequest Message)
-> Text -> ReaderT Auth IO Message)
-> (ChannelId -> Text -> ChannelRequest Message)
-> ChannelId
-> Text
-> ReaderT Auth IO Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> Text -> ChannelRequest Message
R.CreateMessage
createMessageEmbed :: ChannelId -> Text -> CreateEmbed -> ReaderT Auth IO Message
createMessageEmbed = ((ChannelRequest Message -> ReaderT Auth IO Message
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest Message -> ReaderT Auth IO Message)
-> (CreateEmbed -> ChannelRequest Message)
-> CreateEmbed
-> ReaderT Auth IO Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((CreateEmbed -> ChannelRequest Message)
-> CreateEmbed -> ReaderT Auth IO Message)
-> (Text -> CreateEmbed -> ChannelRequest Message)
-> Text
-> CreateEmbed
-> ReaderT Auth IO Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> CreateEmbed -> ChannelRequest Message)
-> Text -> CreateEmbed -> ReaderT Auth IO Message)
-> (ChannelId -> Text -> CreateEmbed -> ChannelRequest Message)
-> ChannelId
-> Text
-> CreateEmbed
-> ReaderT Auth IO Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> Text -> CreateEmbed -> ChannelRequest Message
R.CreateMessageEmbed
createMessageUploadFile :: ChannelId -> Text -> ByteString -> ReaderT Auth IO Message
createMessageUploadFile = ((ChannelRequest Message -> ReaderT Auth IO Message
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest Message -> ReaderT Auth IO Message)
-> (ByteString -> ChannelRequest Message)
-> ByteString
-> ReaderT Auth IO Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ByteString -> ChannelRequest Message)
-> ByteString -> ReaderT Auth IO Message)
-> (Text -> ByteString -> ChannelRequest Message)
-> Text
-> ByteString
-> ReaderT Auth IO Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> ByteString -> ChannelRequest Message)
-> Text -> ByteString -> ReaderT Auth IO Message)
-> (ChannelId -> Text -> ByteString -> ChannelRequest Message)
-> ChannelId
-> Text
-> ByteString
-> ReaderT Auth IO Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> Text -> ByteString -> ChannelRequest Message
R.CreateMessageUploadFile
createMessageDetailed :: ChannelId -> MessageDetailedOpts -> ReaderT Auth IO Message
createMessageDetailed = (ChannelRequest Message -> ReaderT Auth IO Message
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest Message -> ReaderT Auth IO Message)
-> (MessageDetailedOpts -> ChannelRequest Message)
-> MessageDetailedOpts
-> ReaderT Auth IO Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((MessageDetailedOpts -> ChannelRequest Message)
-> MessageDetailedOpts -> ReaderT Auth IO Message)
-> (ChannelId -> MessageDetailedOpts -> ChannelRequest Message)
-> ChannelId
-> MessageDetailedOpts
-> ReaderT Auth IO Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> MessageDetailedOpts -> ChannelRequest Message
R.CreateMessageDetailed
createReaction :: (ChannelId, ChannelId) -> Text -> ReaderT Auth IO ()
createReaction = (ChannelRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest () -> ReaderT Auth IO ())
-> (Text -> ChannelRequest ()) -> Text -> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> ChannelRequest ()) -> Text -> ReaderT Auth IO ())
-> ((ChannelId, ChannelId) -> Text -> ChannelRequest ())
-> (ChannelId, ChannelId)
-> Text
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId) -> Text -> ChannelRequest ()
R.CreateReaction
deleteOwnReaction :: (ChannelId, ChannelId) -> Text -> ReaderT Auth IO ()
deleteOwnReaction = (ChannelRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest () -> ReaderT Auth IO ())
-> (Text -> ChannelRequest ()) -> Text -> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> ChannelRequest ()) -> Text -> ReaderT Auth IO ())
-> ((ChannelId, ChannelId) -> Text -> ChannelRequest ())
-> (ChannelId, ChannelId)
-> Text
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId) -> Text -> ChannelRequest ()
R.DeleteOwnReaction
deleteUserReaction :: (ChannelId, ChannelId) -> ChannelId -> Text -> ReaderT Auth IO ()
deleteUserReaction = ((ChannelRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest () -> ReaderT Auth IO ())
-> (Text -> ChannelRequest ()) -> Text -> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> ChannelRequest ()) -> Text -> ReaderT Auth IO ())
-> (ChannelId -> Text -> ChannelRequest ())
-> ChannelId
-> Text
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> Text -> ChannelRequest ())
-> ChannelId -> Text -> ReaderT Auth IO ())
-> ((ChannelId, ChannelId)
-> ChannelId -> Text -> ChannelRequest ())
-> (ChannelId, ChannelId)
-> ChannelId
-> Text
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId) -> ChannelId -> Text -> ChannelRequest ()
R.DeleteUserReaction
deleteSingleReaction :: (ChannelId, ChannelId) -> Text -> ReaderT Auth IO ()
deleteSingleReaction = (ChannelRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest () -> ReaderT Auth IO ())
-> (Text -> ChannelRequest ()) -> Text -> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> ChannelRequest ()) -> Text -> ReaderT Auth IO ())
-> ((ChannelId, ChannelId) -> Text -> ChannelRequest ())
-> (ChannelId, ChannelId)
-> Text
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId) -> Text -> ChannelRequest ()
R.DeleteSingleReaction
getReactions :: (ChannelId, ChannelId)
-> Text -> (Int, ReactionTiming) -> ReaderT Auth IO [User]
getReactions = ((ChannelRequest [User] -> ReaderT Auth IO [User]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest [User] -> ReaderT Auth IO [User])
-> ((Int, ReactionTiming) -> ChannelRequest [User])
-> (Int, ReactionTiming)
-> ReaderT Auth IO [User]
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) (((Int, ReactionTiming) -> ChannelRequest [User])
-> (Int, ReactionTiming) -> ReaderT Auth IO [User])
-> (Text -> (Int, ReactionTiming) -> ChannelRequest [User])
-> Text
-> (Int, ReactionTiming)
-> ReaderT Auth IO [User]
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> (Int, ReactionTiming) -> ChannelRequest [User])
-> Text -> (Int, ReactionTiming) -> ReaderT Auth IO [User])
-> ((ChannelId, ChannelId)
-> Text -> (Int, ReactionTiming) -> ChannelRequest [User])
-> (ChannelId, ChannelId)
-> Text
-> (Int, ReactionTiming)
-> ReaderT Auth IO [User]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId)
-> Text -> (Int, ReactionTiming) -> ChannelRequest [User]
R.GetReactions
deleteAllReactions :: (ChannelId, ChannelId) -> ReaderT Auth IO ()
deleteAllReactions = ChannelRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest () -> ReaderT Auth IO ())
-> ((ChannelId, ChannelId) -> ChannelRequest ())
-> (ChannelId, ChannelId)
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId) -> ChannelRequest ()
R.DeleteAllReactions
editMessage :: (ChannelId, ChannelId)
-> Text -> Maybe CreateEmbed -> ReaderT Auth IO Message
editMessage = ((ChannelRequest Message -> ReaderT Auth IO Message
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest Message -> ReaderT Auth IO Message)
-> (Maybe CreateEmbed -> ChannelRequest Message)
-> Maybe CreateEmbed
-> ReaderT Auth IO Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Maybe CreateEmbed -> ChannelRequest Message)
-> Maybe CreateEmbed -> ReaderT Auth IO Message)
-> (Text -> Maybe CreateEmbed -> ChannelRequest Message)
-> Text
-> Maybe CreateEmbed
-> ReaderT Auth IO Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> Maybe CreateEmbed -> ChannelRequest Message)
-> Text -> Maybe CreateEmbed -> ReaderT Auth IO Message)
-> ((ChannelId, ChannelId)
-> Text -> Maybe CreateEmbed -> ChannelRequest Message)
-> (ChannelId, ChannelId)
-> Text
-> Maybe CreateEmbed
-> ReaderT Auth IO Message
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId)
-> Text -> Maybe CreateEmbed -> ChannelRequest Message
R.EditMessage
deleteMessage :: (ChannelId, ChannelId) -> ReaderT Auth IO ()
deleteMessage = ChannelRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest () -> ReaderT Auth IO ())
-> ((ChannelId, ChannelId) -> ChannelRequest ())
-> (ChannelId, ChannelId)
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId) -> ChannelRequest ()
R.DeleteMessage
bulkDeleteMessage :: (ChannelId, [ChannelId]) -> ReaderT Auth IO ()
bulkDeleteMessage = ChannelRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest () -> ReaderT Auth IO ())
-> ((ChannelId, [ChannelId]) -> ChannelRequest ())
-> (ChannelId, [ChannelId])
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, [ChannelId]) -> ChannelRequest ()
R.BulkDeleteMessage
editChannelPermissions :: ChannelId
-> ChannelId -> ChannelPermissionsOpts -> ReaderT Auth IO ()
editChannelPermissions = ((ChannelRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest () -> ReaderT Auth IO ())
-> (ChannelPermissionsOpts -> ChannelRequest ())
-> ChannelPermissionsOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelPermissionsOpts -> ChannelRequest ())
-> ChannelPermissionsOpts -> ReaderT Auth IO ())
-> (ChannelId -> ChannelPermissionsOpts -> ChannelRequest ())
-> ChannelId
-> ChannelPermissionsOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> ChannelPermissionsOpts -> ChannelRequest ())
-> ChannelId -> ChannelPermissionsOpts -> ReaderT Auth IO ())
-> (ChannelId
-> ChannelId -> ChannelPermissionsOpts -> ChannelRequest ())
-> ChannelId
-> ChannelId
-> ChannelPermissionsOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId
-> ChannelId -> ChannelPermissionsOpts -> ChannelRequest ()
R.EditChannelPermissions
getChannelInvites :: ChannelId -> ReaderT Auth IO Object
getChannelInvites = ChannelRequest Object -> ReaderT Auth IO Object
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest Object -> ReaderT Auth IO Object)
-> (ChannelId -> ChannelRequest Object)
-> ChannelId
-> ReaderT Auth IO Object
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelRequest Object
R.GetChannelInvites
createChannelInvite :: ChannelId -> ChannelInviteOpts -> ReaderT Auth IO Invite
createChannelInvite = (ChannelRequest Invite -> ReaderT Auth IO Invite
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest Invite -> ReaderT Auth IO Invite)
-> (ChannelInviteOpts -> ChannelRequest Invite)
-> ChannelInviteOpts
-> ReaderT Auth IO Invite
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelInviteOpts -> ChannelRequest Invite)
-> ChannelInviteOpts -> ReaderT Auth IO Invite)
-> (ChannelId -> ChannelInviteOpts -> ChannelRequest Invite)
-> ChannelId
-> ChannelInviteOpts
-> ReaderT Auth IO Invite
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelInviteOpts -> ChannelRequest Invite
R.CreateChannelInvite
deleteChannelPermission :: ChannelId -> ChannelId -> ReaderT Auth IO ()
deleteChannelPermission = (ChannelRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest () -> ReaderT Auth IO ())
-> (ChannelId -> ChannelRequest ())
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> ChannelRequest ())
-> ChannelId -> ReaderT Auth IO ())
-> (ChannelId -> ChannelId -> ChannelRequest ())
-> ChannelId
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> ChannelRequest ()
R.DeleteChannelPermission
triggerTypingIndicator :: ChannelId -> ReaderT Auth IO ()
triggerTypingIndicator = ChannelRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest () -> ReaderT Auth IO ())
-> (ChannelId -> ChannelRequest ())
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelRequest ()
R.TriggerTypingIndicator
getPinnedMessages :: ChannelId -> ReaderT Auth IO [Message]
getPinnedMessages = ChannelRequest [Message] -> ReaderT Auth IO [Message]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest [Message] -> ReaderT Auth IO [Message])
-> (ChannelId -> ChannelRequest [Message])
-> ChannelId
-> ReaderT Auth IO [Message]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelRequest [Message]
R.GetPinnedMessages
addPinnedMessage :: (ChannelId, ChannelId) -> ReaderT Auth IO ()
addPinnedMessage = ChannelRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest () -> ReaderT Auth IO ())
-> ((ChannelId, ChannelId) -> ChannelRequest ())
-> (ChannelId, ChannelId)
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId) -> ChannelRequest ()
R.AddPinnedMessage
deletePinnedMessage :: (ChannelId, ChannelId) -> ReaderT Auth IO ()
deletePinnedMessage = ChannelRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest () -> ReaderT Auth IO ())
-> ((ChannelId, ChannelId) -> ChannelRequest ())
-> (ChannelId, ChannelId)
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ChannelId, ChannelId) -> ChannelRequest ()
R.DeletePinnedMessage
groupDMAddRecipient :: ChannelId -> GroupDMAddRecipientOpts -> ReaderT Auth IO ()
groupDMAddRecipient = (ChannelRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest () -> ReaderT Auth IO ())
-> (GroupDMAddRecipientOpts -> ChannelRequest ())
-> GroupDMAddRecipientOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((GroupDMAddRecipientOpts -> ChannelRequest ())
-> GroupDMAddRecipientOpts -> ReaderT Auth IO ())
-> (ChannelId -> GroupDMAddRecipientOpts -> ChannelRequest ())
-> ChannelId
-> GroupDMAddRecipientOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GroupDMAddRecipientOpts -> ChannelRequest ()
R.GroupDMAddRecipient
groupDMRemoveRecipient :: ChannelId -> ChannelId -> ReaderT Auth IO ()
groupDMRemoveRecipient = (ChannelRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (ChannelRequest () -> ReaderT Auth IO ())
-> (ChannelId -> ChannelRequest ())
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> ChannelRequest ())
-> ChannelId -> ReaderT Auth IO ())
-> (ChannelId -> ChannelId -> ChannelRequest ())
-> ChannelId
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> ChannelRequest ()
R.GroupDMRemoveRecipient
listGuildEmojis :: ChannelId -> ReaderT Auth IO [Emoji]
listGuildEmojis = EmojiRequest [Emoji] -> ReaderT Auth IO [Emoji]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (EmojiRequest [Emoji] -> ReaderT Auth IO [Emoji])
-> (ChannelId -> EmojiRequest [Emoji])
-> ChannelId
-> ReaderT Auth IO [Emoji]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> EmojiRequest [Emoji]
R.ListGuildEmojis
getGuildEmoji :: ChannelId -> ChannelId -> ReaderT Auth IO Emoji
getGuildEmoji = (EmojiRequest Emoji -> ReaderT Auth IO Emoji
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (EmojiRequest Emoji -> ReaderT Auth IO Emoji)
-> (ChannelId -> EmojiRequest Emoji)
-> ChannelId
-> ReaderT Auth IO Emoji
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> EmojiRequest Emoji)
-> ChannelId -> ReaderT Auth IO Emoji)
-> (ChannelId -> ChannelId -> EmojiRequest Emoji)
-> ChannelId
-> ChannelId
-> ReaderT Auth IO Emoji
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> EmojiRequest Emoji
R.GetGuildEmoji
createGuildEmoji :: ChannelId -> Text -> ByteString -> ReaderT Auth IO Emoji
createGuildEmoji ChannelId
g Text
t ByteString
b =
case ByteString -> Either Text EmojiImageParsed
R.parseEmojiImage ByteString
b of
Left Text
x -> CommandError -> ReaderT Auth IO Emoji
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM (CommandError -> ReaderT Auth IO Emoji)
-> CommandError -> ReaderT Auth IO Emoji
forall a b. (a -> b) -> a -> b
$ Text -> CommandError
ProcessingError Text
x
Right EmojiImageParsed
x -> EmojiRequest Emoji -> ReaderT Auth IO Emoji
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (EmojiRequest Emoji -> ReaderT Auth IO Emoji)
-> EmojiRequest Emoji -> ReaderT Auth IO Emoji
forall a b. (a -> b) -> a -> b
$ ChannelId -> Text -> EmojiImageParsed -> EmojiRequest Emoji
R.CreateGuildEmoji ChannelId
g Text
t EmojiImageParsed
x
modifyGuildEmoji :: ChannelId
-> ChannelId -> ModifyGuildEmojiOpts -> ReaderT Auth IO Emoji
modifyGuildEmoji = ((EmojiRequest Emoji -> ReaderT Auth IO Emoji
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (EmojiRequest Emoji -> ReaderT Auth IO Emoji)
-> (ModifyGuildEmojiOpts -> EmojiRequest Emoji)
-> ModifyGuildEmojiOpts
-> ReaderT Auth IO Emoji
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ModifyGuildEmojiOpts -> EmojiRequest Emoji)
-> ModifyGuildEmojiOpts -> ReaderT Auth IO Emoji)
-> (ChannelId -> ModifyGuildEmojiOpts -> EmojiRequest Emoji)
-> ChannelId
-> ModifyGuildEmojiOpts
-> ReaderT Auth IO Emoji
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> ModifyGuildEmojiOpts -> EmojiRequest Emoji)
-> ChannelId -> ModifyGuildEmojiOpts -> ReaderT Auth IO Emoji)
-> (ChannelId
-> ChannelId -> ModifyGuildEmojiOpts -> EmojiRequest Emoji)
-> ChannelId
-> ChannelId
-> ModifyGuildEmojiOpts
-> ReaderT Auth IO Emoji
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId
-> ChannelId -> ModifyGuildEmojiOpts -> EmojiRequest Emoji
R.ModifyGuildEmoji
deleteGuildEmoji :: ChannelId -> ChannelId -> ReaderT Auth IO ()
deleteGuildEmoji = (EmojiRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (EmojiRequest () -> ReaderT Auth IO ())
-> (ChannelId -> EmojiRequest ())
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> EmojiRequest ()) -> ChannelId -> ReaderT Auth IO ())
-> (ChannelId -> ChannelId -> EmojiRequest ())
-> ChannelId
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> EmojiRequest ()
R.DeleteGuildEmoji
createGuild :: CreateGuildOpts -> ReaderT Auth IO Guild
createGuild = GuildRequest Guild -> ReaderT Auth IO Guild
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest Guild -> ReaderT Auth IO Guild)
-> (CreateGuildOpts -> GuildRequest Guild)
-> CreateGuildOpts
-> ReaderT Auth IO Guild
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CreateGuildOpts -> GuildRequest Guild
R.CreateGuild
getGuild :: ChannelId -> ReaderT Auth IO Guild
getGuild = GuildRequest Guild -> ReaderT Auth IO Guild
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest Guild -> ReaderT Auth IO Guild)
-> (ChannelId -> GuildRequest Guild)
-> ChannelId
-> ReaderT Auth IO Guild
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildRequest Guild
R.GetGuild
modifyGuild :: ChannelId -> ModifyGuildOpts -> ReaderT Auth IO Guild
modifyGuild = (GuildRequest Guild -> ReaderT Auth IO Guild
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest Guild -> ReaderT Auth IO Guild)
-> (ModifyGuildOpts -> GuildRequest Guild)
-> ModifyGuildOpts
-> ReaderT Auth IO Guild
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ModifyGuildOpts -> GuildRequest Guild)
-> ModifyGuildOpts -> ReaderT Auth IO Guild)
-> (ChannelId -> ModifyGuildOpts -> GuildRequest Guild)
-> ChannelId
-> ModifyGuildOpts
-> ReaderT Auth IO Guild
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ModifyGuildOpts -> GuildRequest Guild
R.ModifyGuild
deleteGuild :: ChannelId -> ReaderT Auth IO ()
deleteGuild = GuildRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest () -> ReaderT Auth IO ())
-> (ChannelId -> GuildRequest ())
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildRequest ()
R.DeleteGuild
getGuildChannels :: ChannelId -> ReaderT Auth IO [Channel]
getGuildChannels = GuildRequest [Channel] -> ReaderT Auth IO [Channel]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest [Channel] -> ReaderT Auth IO [Channel])
-> (ChannelId -> GuildRequest [Channel])
-> ChannelId
-> ReaderT Auth IO [Channel]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildRequest [Channel]
R.GetGuildChannels
createGuildChannel :: ChannelId
-> Text
-> [Overwrite]
-> CreateGuildChannelOpts
-> ReaderT Auth IO Channel
createGuildChannel = (((GuildRequest Channel -> ReaderT Auth IO Channel
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest Channel -> ReaderT Auth IO Channel)
-> (CreateGuildChannelOpts -> GuildRequest Channel)
-> CreateGuildChannelOpts
-> ReaderT Auth IO Channel
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((CreateGuildChannelOpts -> GuildRequest Channel)
-> CreateGuildChannelOpts -> ReaderT Auth IO Channel)
-> ([Overwrite] -> CreateGuildChannelOpts -> GuildRequest Channel)
-> [Overwrite]
-> CreateGuildChannelOpts
-> ReaderT Auth IO Channel
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) (([Overwrite] -> CreateGuildChannelOpts -> GuildRequest Channel)
-> [Overwrite]
-> CreateGuildChannelOpts
-> ReaderT Auth IO Channel)
-> (Text
-> [Overwrite] -> CreateGuildChannelOpts -> GuildRequest Channel)
-> Text
-> [Overwrite]
-> CreateGuildChannelOpts
-> ReaderT Auth IO Channel
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text
-> [Overwrite] -> CreateGuildChannelOpts -> GuildRequest Channel)
-> Text
-> [Overwrite]
-> CreateGuildChannelOpts
-> ReaderT Auth IO Channel)
-> (ChannelId
-> Text
-> [Overwrite]
-> CreateGuildChannelOpts
-> GuildRequest Channel)
-> ChannelId
-> Text
-> [Overwrite]
-> CreateGuildChannelOpts
-> ReaderT Auth IO Channel
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId
-> Text
-> [Overwrite]
-> CreateGuildChannelOpts
-> GuildRequest Channel
R.CreateGuildChannel
modifyGuildChannelPositions :: ChannelId -> [(ChannelId, Int)] -> ReaderT Auth IO [Channel]
modifyGuildChannelPositions = (GuildRequest [Channel] -> ReaderT Auth IO [Channel]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest [Channel] -> ReaderT Auth IO [Channel])
-> ([(ChannelId, Int)] -> GuildRequest [Channel])
-> [(ChannelId, Int)]
-> ReaderT Auth IO [Channel]
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) (([(ChannelId, Int)] -> GuildRequest [Channel])
-> [(ChannelId, Int)] -> ReaderT Auth IO [Channel])
-> (ChannelId -> [(ChannelId, Int)] -> GuildRequest [Channel])
-> ChannelId
-> [(ChannelId, Int)]
-> ReaderT Auth IO [Channel]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> [(ChannelId, Int)] -> GuildRequest [Channel]
R.ModifyGuildChannelPositions
getGuildMember :: ChannelId -> ChannelId -> ReaderT Auth IO GuildMember
getGuildMember = (GuildRequest GuildMember -> ReaderT Auth IO GuildMember
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest GuildMember -> ReaderT Auth IO GuildMember)
-> (ChannelId -> GuildRequest GuildMember)
-> ChannelId
-> ReaderT Auth IO GuildMember
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> GuildRequest GuildMember)
-> ChannelId -> ReaderT Auth IO GuildMember)
-> (ChannelId -> ChannelId -> GuildRequest GuildMember)
-> ChannelId
-> ChannelId
-> ReaderT Auth IO GuildMember
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> GuildRequest GuildMember
R.GetGuildMember
listGuildMembers :: ChannelId -> GuildMembersTiming -> ReaderT Auth IO [GuildMember]
listGuildMembers = (GuildRequest [GuildMember] -> ReaderT Auth IO [GuildMember]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest [GuildMember] -> ReaderT Auth IO [GuildMember])
-> (GuildMembersTiming -> GuildRequest [GuildMember])
-> GuildMembersTiming
-> ReaderT Auth IO [GuildMember]
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((GuildMembersTiming -> GuildRequest [GuildMember])
-> GuildMembersTiming -> ReaderT Auth IO [GuildMember])
-> (ChannelId -> GuildMembersTiming -> GuildRequest [GuildMember])
-> ChannelId
-> GuildMembersTiming
-> ReaderT Auth IO [GuildMember]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildMembersTiming -> GuildRequest [GuildMember]
R.ListGuildMembers
addGuildMember :: ChannelId -> ChannelId -> AddGuildMemberOpts -> ReaderT Auth IO ()
addGuildMember = ((GuildRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest () -> ReaderT Auth IO ())
-> (AddGuildMemberOpts -> GuildRequest ())
-> AddGuildMemberOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((AddGuildMemberOpts -> GuildRequest ())
-> AddGuildMemberOpts -> ReaderT Auth IO ())
-> (ChannelId -> AddGuildMemberOpts -> GuildRequest ())
-> ChannelId
-> AddGuildMemberOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> AddGuildMemberOpts -> GuildRequest ())
-> ChannelId -> AddGuildMemberOpts -> ReaderT Auth IO ())
-> (ChannelId
-> ChannelId -> AddGuildMemberOpts -> GuildRequest ())
-> ChannelId
-> ChannelId
-> AddGuildMemberOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> AddGuildMemberOpts -> GuildRequest ()
R.AddGuildMember
modifyGuildMember :: ChannelId
-> ChannelId -> ModifyGuildMemberOpts -> ReaderT Auth IO ()
modifyGuildMember = ((GuildRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest () -> ReaderT Auth IO ())
-> (ModifyGuildMemberOpts -> GuildRequest ())
-> ModifyGuildMemberOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ModifyGuildMemberOpts -> GuildRequest ())
-> ModifyGuildMemberOpts -> ReaderT Auth IO ())
-> (ChannelId -> ModifyGuildMemberOpts -> GuildRequest ())
-> ChannelId
-> ModifyGuildMemberOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> ModifyGuildMemberOpts -> GuildRequest ())
-> ChannelId -> ModifyGuildMemberOpts -> ReaderT Auth IO ())
-> (ChannelId
-> ChannelId -> ModifyGuildMemberOpts -> GuildRequest ())
-> ChannelId
-> ChannelId
-> ModifyGuildMemberOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> ModifyGuildMemberOpts -> GuildRequest ()
R.ModifyGuildMember
modifyCurrentUserNick :: ChannelId -> Text -> ReaderT Auth IO ()
modifyCurrentUserNick = (GuildRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest () -> ReaderT Auth IO ())
-> (Text -> GuildRequest ()) -> Text -> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> GuildRequest ()) -> Text -> ReaderT Auth IO ())
-> (ChannelId -> Text -> GuildRequest ())
-> ChannelId
-> Text
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> Text -> GuildRequest ()
R.ModifyCurrentUserNick
addGuildMemberRole :: ChannelId -> ChannelId -> ChannelId -> ReaderT Auth IO ()
addGuildMemberRole = ((GuildRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest () -> ReaderT Auth IO ())
-> (ChannelId -> GuildRequest ())
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> GuildRequest ()) -> ChannelId -> ReaderT Auth IO ())
-> (ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId -> ChannelId -> ReaderT Auth IO ())
-> (ChannelId -> ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId
-> ChannelId
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> ChannelId -> GuildRequest ()
R.AddGuildMemberRole
removeGuildMemberRole :: ChannelId -> ChannelId -> ChannelId -> ReaderT Auth IO ()
removeGuildMemberRole = ((GuildRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest () -> ReaderT Auth IO ())
-> (ChannelId -> GuildRequest ())
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> GuildRequest ()) -> ChannelId -> ReaderT Auth IO ())
-> (ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId -> ChannelId -> ReaderT Auth IO ())
-> (ChannelId -> ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId
-> ChannelId
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> ChannelId -> GuildRequest ()
R.RemoveGuildMemberRole
removeGuildMember :: ChannelId -> ChannelId -> ReaderT Auth IO ()
removeGuildMember = (GuildRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest () -> ReaderT Auth IO ())
-> (ChannelId -> GuildRequest ())
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> GuildRequest ()) -> ChannelId -> ReaderT Auth IO ())
-> (ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> GuildRequest ()
R.RemoveGuildMember
getGuildBans :: ChannelId -> ReaderT Auth IO [GuildBan]
getGuildBans = GuildRequest [GuildBan] -> ReaderT Auth IO [GuildBan]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest [GuildBan] -> ReaderT Auth IO [GuildBan])
-> (ChannelId -> GuildRequest [GuildBan])
-> ChannelId
-> ReaderT Auth IO [GuildBan]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildRequest [GuildBan]
R.GetGuildBans
getGuildBan :: ChannelId -> ChannelId -> ReaderT Auth IO GuildBan
getGuildBan = (GuildRequest GuildBan -> ReaderT Auth IO GuildBan
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest GuildBan -> ReaderT Auth IO GuildBan)
-> (ChannelId -> GuildRequest GuildBan)
-> ChannelId
-> ReaderT Auth IO GuildBan
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> GuildRequest GuildBan)
-> ChannelId -> ReaderT Auth IO GuildBan)
-> (ChannelId -> ChannelId -> GuildRequest GuildBan)
-> ChannelId
-> ChannelId
-> ReaderT Auth IO GuildBan
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> GuildRequest GuildBan
R.GetGuildBan
createGuildBan :: ChannelId -> ChannelId -> CreateGuildBanOpts -> ReaderT Auth IO ()
createGuildBan = ((GuildRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest () -> ReaderT Auth IO ())
-> (CreateGuildBanOpts -> GuildRequest ())
-> CreateGuildBanOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((CreateGuildBanOpts -> GuildRequest ())
-> CreateGuildBanOpts -> ReaderT Auth IO ())
-> (ChannelId -> CreateGuildBanOpts -> GuildRequest ())
-> ChannelId
-> CreateGuildBanOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> CreateGuildBanOpts -> GuildRequest ())
-> ChannelId -> CreateGuildBanOpts -> ReaderT Auth IO ())
-> (ChannelId
-> ChannelId -> CreateGuildBanOpts -> GuildRequest ())
-> ChannelId
-> ChannelId
-> CreateGuildBanOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> CreateGuildBanOpts -> GuildRequest ()
R.CreateGuildBan
removeGuildBan :: ChannelId -> ChannelId -> ReaderT Auth IO ()
removeGuildBan = (GuildRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest () -> ReaderT Auth IO ())
-> (ChannelId -> GuildRequest ())
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> GuildRequest ()) -> ChannelId -> ReaderT Auth IO ())
-> (ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> GuildRequest ()
R.RemoveGuildBan
getGuildRoles :: ChannelId -> ReaderT Auth IO [Role]
getGuildRoles = GuildRequest [Role] -> ReaderT Auth IO [Role]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest [Role] -> ReaderT Auth IO [Role])
-> (ChannelId -> GuildRequest [Role])
-> ChannelId
-> ReaderT Auth IO [Role]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildRequest [Role]
R.GetGuildRoles
createGuildRole :: ChannelId -> ModifyGuildRoleOpts -> ReaderT Auth IO Role
createGuildRole = (GuildRequest Role -> ReaderT Auth IO Role
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest Role -> ReaderT Auth IO Role)
-> (ModifyGuildRoleOpts -> GuildRequest Role)
-> ModifyGuildRoleOpts
-> ReaderT Auth IO Role
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ModifyGuildRoleOpts -> GuildRequest Role)
-> ModifyGuildRoleOpts -> ReaderT Auth IO Role)
-> (ChannelId -> ModifyGuildRoleOpts -> GuildRequest Role)
-> ChannelId
-> ModifyGuildRoleOpts
-> ReaderT Auth IO Role
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ModifyGuildRoleOpts -> GuildRequest Role
R.CreateGuildRole
modifyGuildRolePositions :: ChannelId -> [(ChannelId, Integer)] -> ReaderT Auth IO [Role]
modifyGuildRolePositions = (GuildRequest [Role] -> ReaderT Auth IO [Role]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest [Role] -> ReaderT Auth IO [Role])
-> ([(ChannelId, Integer)] -> GuildRequest [Role])
-> [(ChannelId, Integer)]
-> ReaderT Auth IO [Role]
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) (([(ChannelId, Integer)] -> GuildRequest [Role])
-> [(ChannelId, Integer)] -> ReaderT Auth IO [Role])
-> (ChannelId -> [(ChannelId, Integer)] -> GuildRequest [Role])
-> ChannelId
-> [(ChannelId, Integer)]
-> ReaderT Auth IO [Role]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> [(ChannelId, Integer)] -> GuildRequest [Role]
R.ModifyGuildRolePositions
modifyGuildRole :: ChannelId
-> ChannelId -> ModifyGuildRoleOpts -> ReaderT Auth IO Role
modifyGuildRole = ((GuildRequest Role -> ReaderT Auth IO Role
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest Role -> ReaderT Auth IO Role)
-> (ModifyGuildRoleOpts -> GuildRequest Role)
-> ModifyGuildRoleOpts
-> ReaderT Auth IO Role
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ModifyGuildRoleOpts -> GuildRequest Role)
-> ModifyGuildRoleOpts -> ReaderT Auth IO Role)
-> (ChannelId -> ModifyGuildRoleOpts -> GuildRequest Role)
-> ChannelId
-> ModifyGuildRoleOpts
-> ReaderT Auth IO Role
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> ModifyGuildRoleOpts -> GuildRequest Role)
-> ChannelId -> ModifyGuildRoleOpts -> ReaderT Auth IO Role)
-> (ChannelId
-> ChannelId -> ModifyGuildRoleOpts -> GuildRequest Role)
-> ChannelId
-> ChannelId
-> ModifyGuildRoleOpts
-> ReaderT Auth IO Role
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> ModifyGuildRoleOpts -> GuildRequest Role
R.ModifyGuildRole
deleteGuildRole :: ChannelId -> ChannelId -> ReaderT Auth IO ()
deleteGuildRole = (GuildRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest () -> ReaderT Auth IO ())
-> (ChannelId -> GuildRequest ())
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> GuildRequest ()) -> ChannelId -> ReaderT Auth IO ())
-> (ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> GuildRequest ()
R.DeleteGuildRole
getGuildPruneCount :: ChannelId -> Integer -> ReaderT Auth IO Object
getGuildPruneCount = (GuildRequest Object -> ReaderT Auth IO Object
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest Object -> ReaderT Auth IO Object)
-> (Integer -> GuildRequest Object)
-> Integer
-> ReaderT Auth IO Object
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Integer -> GuildRequest Object)
-> Integer -> ReaderT Auth IO Object)
-> (ChannelId -> Integer -> GuildRequest Object)
-> ChannelId
-> Integer
-> ReaderT Auth IO Object
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> Integer -> GuildRequest Object
R.GetGuildPruneCount
beginGuildPrune :: ChannelId -> Integer -> ReaderT Auth IO Object
beginGuildPrune = (GuildRequest Object -> ReaderT Auth IO Object
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest Object -> ReaderT Auth IO Object)
-> (Integer -> GuildRequest Object)
-> Integer
-> ReaderT Auth IO Object
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Integer -> GuildRequest Object)
-> Integer -> ReaderT Auth IO Object)
-> (ChannelId -> Integer -> GuildRequest Object)
-> ChannelId
-> Integer
-> ReaderT Auth IO Object
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> Integer -> GuildRequest Object
R.BeginGuildPrune
getGuildVoiceRegions :: ChannelId -> ReaderT Auth IO [VoiceRegion]
getGuildVoiceRegions = GuildRequest [VoiceRegion] -> ReaderT Auth IO [VoiceRegion]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest [VoiceRegion] -> ReaderT Auth IO [VoiceRegion])
-> (ChannelId -> GuildRequest [VoiceRegion])
-> ChannelId
-> ReaderT Auth IO [VoiceRegion]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildRequest [VoiceRegion]
R.GetGuildVoiceRegions
getGuildInvites :: ChannelId -> ReaderT Auth IO [Invite]
getGuildInvites = GuildRequest [Invite] -> ReaderT Auth IO [Invite]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest [Invite] -> ReaderT Auth IO [Invite])
-> (ChannelId -> GuildRequest [Invite])
-> ChannelId
-> ReaderT Auth IO [Invite]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildRequest [Invite]
R.GetGuildInvites
getGuildIntegrations :: ChannelId -> ReaderT Auth IO [Integration]
getGuildIntegrations = GuildRequest [Integration] -> ReaderT Auth IO [Integration]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest [Integration] -> ReaderT Auth IO [Integration])
-> (ChannelId -> GuildRequest [Integration])
-> ChannelId
-> ReaderT Auth IO [Integration]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildRequest [Integration]
R.GetGuildIntegrations
createGuildIntegration :: ChannelId
-> ChannelId -> CreateGuildIntegrationOpts -> ReaderT Auth IO ()
createGuildIntegration = ((GuildRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest () -> ReaderT Auth IO ())
-> (CreateGuildIntegrationOpts -> GuildRequest ())
-> CreateGuildIntegrationOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((CreateGuildIntegrationOpts -> GuildRequest ())
-> CreateGuildIntegrationOpts -> ReaderT Auth IO ())
-> (ChannelId -> CreateGuildIntegrationOpts -> GuildRequest ())
-> ChannelId
-> CreateGuildIntegrationOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> CreateGuildIntegrationOpts -> GuildRequest ())
-> ChannelId -> CreateGuildIntegrationOpts -> ReaderT Auth IO ())
-> (ChannelId
-> ChannelId -> CreateGuildIntegrationOpts -> GuildRequest ())
-> ChannelId
-> ChannelId
-> CreateGuildIntegrationOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId
-> ChannelId -> CreateGuildIntegrationOpts -> GuildRequest ()
R.CreateGuildIntegration
modifyGuildIntegration :: ChannelId
-> ChannelId -> ModifyGuildIntegrationOpts -> ReaderT Auth IO ()
modifyGuildIntegration = ((GuildRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest () -> ReaderT Auth IO ())
-> (ModifyGuildIntegrationOpts -> GuildRequest ())
-> ModifyGuildIntegrationOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ModifyGuildIntegrationOpts -> GuildRequest ())
-> ModifyGuildIntegrationOpts -> ReaderT Auth IO ())
-> (ChannelId -> ModifyGuildIntegrationOpts -> GuildRequest ())
-> ChannelId
-> ModifyGuildIntegrationOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> ModifyGuildIntegrationOpts -> GuildRequest ())
-> ChannelId -> ModifyGuildIntegrationOpts -> ReaderT Auth IO ())
-> (ChannelId
-> ChannelId -> ModifyGuildIntegrationOpts -> GuildRequest ())
-> ChannelId
-> ChannelId
-> ModifyGuildIntegrationOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId
-> ChannelId -> ModifyGuildIntegrationOpts -> GuildRequest ()
R.ModifyGuildIntegration
deleteGuildIntegration :: ChannelId -> ChannelId -> ReaderT Auth IO ()
deleteGuildIntegration = (GuildRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest () -> ReaderT Auth IO ())
-> (ChannelId -> GuildRequest ())
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> GuildRequest ()) -> ChannelId -> ReaderT Auth IO ())
-> (ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> GuildRequest ()
R.DeleteGuildIntegration
syncGuildIntegration :: ChannelId -> ChannelId -> ReaderT Auth IO ()
syncGuildIntegration = (GuildRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest () -> ReaderT Auth IO ())
-> (ChannelId -> GuildRequest ())
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ChannelId -> GuildRequest ()) -> ChannelId -> ReaderT Auth IO ())
-> (ChannelId -> ChannelId -> GuildRequest ())
-> ChannelId
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ChannelId -> GuildRequest ()
R.SyncGuildIntegration
getGuildEmbed :: ChannelId -> ReaderT Auth IO GuildEmbed
getGuildEmbed = GuildRequest GuildEmbed -> ReaderT Auth IO GuildEmbed
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest GuildEmbed -> ReaderT Auth IO GuildEmbed)
-> (ChannelId -> GuildRequest GuildEmbed)
-> ChannelId
-> ReaderT Auth IO GuildEmbed
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildRequest GuildEmbed
R.GetGuildEmbed
modifyGuildEmbed :: ChannelId -> GuildEmbed -> ReaderT Auth IO GuildEmbed
modifyGuildEmbed = (GuildRequest GuildEmbed -> ReaderT Auth IO GuildEmbed
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest GuildEmbed -> ReaderT Auth IO GuildEmbed)
-> (GuildEmbed -> GuildRequest GuildEmbed)
-> GuildEmbed
-> ReaderT Auth IO GuildEmbed
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((GuildEmbed -> GuildRequest GuildEmbed)
-> GuildEmbed -> ReaderT Auth IO GuildEmbed)
-> (ChannelId -> GuildEmbed -> GuildRequest GuildEmbed)
-> ChannelId
-> GuildEmbed
-> ReaderT Auth IO GuildEmbed
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildEmbed -> GuildRequest GuildEmbed
R.ModifyGuildEmbed
getGuildVanityURL :: ChannelId -> ReaderT Auth IO Text
getGuildVanityURL = GuildRequest Text -> ReaderT Auth IO Text
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (GuildRequest Text -> ReaderT Auth IO Text)
-> (ChannelId -> GuildRequest Text)
-> ChannelId
-> ReaderT Auth IO Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> GuildRequest Text
R.GetGuildVanityURL
getInvite :: Text -> ReaderT Auth IO Invite
getInvite = InviteRequest Invite -> ReaderT Auth IO Invite
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (InviteRequest Invite -> ReaderT Auth IO Invite)
-> (Text -> InviteRequest Invite) -> Text -> ReaderT Auth IO Invite
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> InviteRequest Invite
R.GetInvite
deleteInvite :: Text -> ReaderT Auth IO Invite
deleteInvite = InviteRequest Invite -> ReaderT Auth IO Invite
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (InviteRequest Invite -> ReaderT Auth IO Invite)
-> (Text -> InviteRequest Invite) -> Text -> ReaderT Auth IO Invite
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> InviteRequest Invite
R.DeleteInvite
getCurrentUser :: ReaderT Auth IO User
getCurrentUser = UserRequest User -> ReaderT Auth IO User
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO UserRequest User
R.GetCurrentUser
getUser :: ChannelId -> ReaderT Auth IO User
getUser = UserRequest User -> ReaderT Auth IO User
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (UserRequest User -> ReaderT Auth IO User)
-> (ChannelId -> UserRequest User)
-> ChannelId
-> ReaderT Auth IO User
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> UserRequest User
R.GetUser
modifyCurrentUser :: Text -> CurrentUserAvatar -> ReaderT Auth IO User
modifyCurrentUser = (UserRequest User -> ReaderT Auth IO User
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (UserRequest User -> ReaderT Auth IO User)
-> (CurrentUserAvatar -> UserRequest User)
-> CurrentUserAvatar
-> ReaderT Auth IO User
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((CurrentUserAvatar -> UserRequest User)
-> CurrentUserAvatar -> ReaderT Auth IO User)
-> (Text -> CurrentUserAvatar -> UserRequest User)
-> Text
-> CurrentUserAvatar
-> ReaderT Auth IO User
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> CurrentUserAvatar -> UserRequest User
R.ModifyCurrentUser
getCurrentUserGuilds :: ReaderT Auth IO [PartialGuild]
getCurrentUserGuilds = UserRequest [PartialGuild] -> ReaderT Auth IO [PartialGuild]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO UserRequest [PartialGuild]
R.GetCurrentUserGuilds
leaveGuild :: ChannelId -> ReaderT Auth IO ()
leaveGuild = UserRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (UserRequest () -> ReaderT Auth IO ())
-> (ChannelId -> UserRequest ()) -> ChannelId -> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> UserRequest ()
R.LeaveGuild
getUserDMs :: ReaderT Auth IO [Channel]
getUserDMs = UserRequest [Channel] -> ReaderT Auth IO [Channel]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO UserRequest [Channel]
R.GetUserDMs
createDM :: ChannelId -> ReaderT Auth IO Channel
createDM = UserRequest Channel -> ReaderT Auth IO Channel
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (UserRequest Channel -> ReaderT Auth IO Channel)
-> (ChannelId -> UserRequest Channel)
-> ChannelId
-> ReaderT Auth IO Channel
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> UserRequest Channel
R.CreateDM
getUserConnections :: ReaderT Auth IO [ConnectionObject]
getUserConnections = UserRequest [ConnectionObject]
-> ReaderT Auth IO [ConnectionObject]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO UserRequest [ConnectionObject]
R.GetUserConnections
listVoiceRegions :: ReaderT Auth IO [VoiceRegion]
listVoiceRegions = VoiceRequest [VoiceRegion] -> ReaderT Auth IO [VoiceRegion]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO VoiceRequest [VoiceRegion]
R.ListVoiceRegions
createWebhook :: ChannelId -> CreateWebhookOpts -> ReaderT Auth IO Webhook
createWebhook = (WebhookRequest Webhook -> ReaderT Auth IO Webhook
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (WebhookRequest Webhook -> ReaderT Auth IO Webhook)
-> (CreateWebhookOpts -> WebhookRequest Webhook)
-> CreateWebhookOpts
-> ReaderT Auth IO Webhook
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((CreateWebhookOpts -> WebhookRequest Webhook)
-> CreateWebhookOpts -> ReaderT Auth IO Webhook)
-> (ChannelId -> CreateWebhookOpts -> WebhookRequest Webhook)
-> ChannelId
-> CreateWebhookOpts
-> ReaderT Auth IO Webhook
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> CreateWebhookOpts -> WebhookRequest Webhook
R.CreateWebhook
getChannelWebhooks :: ChannelId -> ReaderT Auth IO [Webhook]
getChannelWebhooks = WebhookRequest [Webhook] -> ReaderT Auth IO [Webhook]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (WebhookRequest [Webhook] -> ReaderT Auth IO [Webhook])
-> (ChannelId -> WebhookRequest [Webhook])
-> ChannelId
-> ReaderT Auth IO [Webhook]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> WebhookRequest [Webhook]
R.GetChannelWebhooks
getGuildWebhooks :: ChannelId -> ReaderT Auth IO [Webhook]
getGuildWebhooks = WebhookRequest [Webhook] -> ReaderT Auth IO [Webhook]
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (WebhookRequest [Webhook] -> ReaderT Auth IO [Webhook])
-> (ChannelId -> WebhookRequest [Webhook])
-> ChannelId
-> ReaderT Auth IO [Webhook]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> WebhookRequest [Webhook]
R.GetGuildWebhooks
getWebhook :: ChannelId -> ReaderT Auth IO Webhook
getWebhook = WebhookRequest Webhook -> ReaderT Auth IO Webhook
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (WebhookRequest Webhook -> ReaderT Auth IO Webhook)
-> (ChannelId -> WebhookRequest Webhook)
-> ChannelId
-> ReaderT Auth IO Webhook
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> WebhookRequest Webhook
R.GetWebhook
getWebhookWithToken :: ChannelId -> Text -> ReaderT Auth IO Webhook
getWebhookWithToken = (WebhookRequest Webhook -> ReaderT Auth IO Webhook
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (WebhookRequest Webhook -> ReaderT Auth IO Webhook)
-> (Text -> WebhookRequest Webhook)
-> Text
-> ReaderT Auth IO Webhook
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> WebhookRequest Webhook)
-> Text -> ReaderT Auth IO Webhook)
-> (ChannelId -> Text -> WebhookRequest Webhook)
-> ChannelId
-> Text
-> ReaderT Auth IO Webhook
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> Text -> WebhookRequest Webhook
R.GetWebhookWithToken
modifyWebhook :: ChannelId -> ModifyWebhookOpts -> ReaderT Auth IO Webhook
modifyWebhook = (WebhookRequest Webhook -> ReaderT Auth IO Webhook
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (WebhookRequest Webhook -> ReaderT Auth IO Webhook)
-> (ModifyWebhookOpts -> WebhookRequest Webhook)
-> ModifyWebhookOpts
-> ReaderT Auth IO Webhook
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ModifyWebhookOpts -> WebhookRequest Webhook)
-> ModifyWebhookOpts -> ReaderT Auth IO Webhook)
-> (ChannelId -> ModifyWebhookOpts -> WebhookRequest Webhook)
-> ChannelId
-> ModifyWebhookOpts
-> ReaderT Auth IO Webhook
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> ModifyWebhookOpts -> WebhookRequest Webhook
R.ModifyWebhook
modifyWebhookWithToken :: ChannelId -> Text -> ModifyWebhookOpts -> ReaderT Auth IO Webhook
modifyWebhookWithToken = ((WebhookRequest Webhook -> ReaderT Auth IO Webhook
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (WebhookRequest Webhook -> ReaderT Auth IO Webhook)
-> (ModifyWebhookOpts -> WebhookRequest Webhook)
-> ModifyWebhookOpts
-> ReaderT Auth IO Webhook
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ModifyWebhookOpts -> WebhookRequest Webhook)
-> ModifyWebhookOpts -> ReaderT Auth IO Webhook)
-> (Text -> ModifyWebhookOpts -> WebhookRequest Webhook)
-> Text
-> ModifyWebhookOpts
-> ReaderT Auth IO Webhook
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> ModifyWebhookOpts -> WebhookRequest Webhook)
-> Text -> ModifyWebhookOpts -> ReaderT Auth IO Webhook)
-> (ChannelId
-> Text -> ModifyWebhookOpts -> WebhookRequest Webhook)
-> ChannelId
-> Text
-> ModifyWebhookOpts
-> ReaderT Auth IO Webhook
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> Text -> ModifyWebhookOpts -> WebhookRequest Webhook
R.ModifyWebhookWithToken
deleteWebhook :: ChannelId -> ReaderT Auth IO ()
deleteWebhook = WebhookRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (WebhookRequest () -> ReaderT Auth IO ())
-> (ChannelId -> WebhookRequest ())
-> ChannelId
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> WebhookRequest ()
R.DeleteWebhook
deleteWebhookWithToken :: ChannelId -> Text -> ReaderT Auth IO ()
deleteWebhookWithToken = (WebhookRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (WebhookRequest () -> ReaderT Auth IO ())
-> (Text -> WebhookRequest ()) -> Text -> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> WebhookRequest ()) -> Text -> ReaderT Auth IO ())
-> (ChannelId -> Text -> WebhookRequest ())
-> ChannelId
-> Text
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId -> Text -> WebhookRequest ()
R.DeleteWebhookWithToken
executeWebhookWithToken :: ChannelId
-> Text -> ExecuteWebhookWithTokenOpts -> ReaderT Auth IO ()
executeWebhookWithToken = ((WebhookRequest () -> ReaderT Auth IO ()
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO (WebhookRequest () -> ReaderT Auth IO ())
-> (ExecuteWebhookWithTokenOpts -> WebhookRequest ())
-> ExecuteWebhookWithTokenOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((ExecuteWebhookWithTokenOpts -> WebhookRequest ())
-> ExecuteWebhookWithTokenOpts -> ReaderT Auth IO ())
-> (Text -> ExecuteWebhookWithTokenOpts -> WebhookRequest ())
-> Text
-> ExecuteWebhookWithTokenOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
.) ((Text -> ExecuteWebhookWithTokenOpts -> WebhookRequest ())
-> Text -> ExecuteWebhookWithTokenOpts -> ReaderT Auth IO ())
-> (ChannelId
-> Text -> ExecuteWebhookWithTokenOpts -> WebhookRequest ())
-> ChannelId
-> Text
-> ExecuteWebhookWithTokenOpts
-> ReaderT Auth IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ChannelId
-> Text -> ExecuteWebhookWithTokenOpts -> WebhookRequest ()
R.ExecuteWebhookWithToken
respond :: Message -> Text -> ReaderT Auth IO ()
respond Message
m Text
t = ReaderT Auth IO Message -> ReaderT Auth IO ()
forall (f :: * -> *) a. Functor f => f a -> f ()
void (ReaderT Auth IO Message -> ReaderT Auth IO ())
-> ReaderT Auth IO Message -> ReaderT Auth IO ()
forall a b. (a -> b) -> a -> b
$ ChannelId -> Text -> ReaderT Auth IO Message
forall (m :: * -> *).
MonadDiscord m =>
ChannelId -> Text -> m Message
createMessage (Message -> ChannelId
messageChannel Message
m) Text
t
data RequestResponse
= ResponseTryAgain
| ResponseByteString BL.ByteString
| ResponseErrorCode Int B.ByteString B.ByteString
deriving (Int -> RequestResponse -> ShowS
[RequestResponse] -> ShowS
RequestResponse -> String
(Int -> RequestResponse -> ShowS)
-> (RequestResponse -> String)
-> ([RequestResponse] -> ShowS)
-> Show RequestResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RequestResponse] -> ShowS
$cshowList :: [RequestResponse] -> ShowS
show :: RequestResponse -> String
$cshow :: RequestResponse -> String
showsPrec :: Int -> RequestResponse -> ShowS
$cshowsPrec :: Int -> RequestResponse -> ShowS
Show)
callRestIO
:: (Request (r a), FromJSON a)
=> r a
-> ReaderT Auth IO a
callRestIO :: r a -> ReaderT Auth IO a
callRestIO r a
req = do
Auth
auth <- ReaderT Auth IO Auth
forall r (m :: * -> *). MonadReader r m => m r
ask
let action :: RestIO LbsResponse
action = Auth -> JsonRequest -> RestIO LbsResponse
compileRequest Auth
auth (r a -> JsonRequest
forall a. Request a => a -> JsonRequest
jsonRequest r a
req)
LbsResponse
resp <- IO LbsResponse -> ReaderT Auth IO LbsResponse
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO LbsResponse -> ReaderT Auth IO LbsResponse)
-> IO LbsResponse -> ReaderT Auth IO LbsResponse
forall a b. (a -> b) -> a -> b
$ RestIO LbsResponse -> IO LbsResponse
forall a. RestIO a -> IO a
restIOtoIO RestIO LbsResponse
action
let body :: HttpResponseBody LbsResponse
body = LbsResponse -> HttpResponseBody LbsResponse
forall response.
HttpResponse response =>
response -> HttpResponseBody response
Req.responseBody LbsResponse
resp
code :: Int
code = LbsResponse -> Int
forall response. HttpResponse response => response -> Int
Req.responseStatusCode LbsResponse
resp
status :: Text
status = ByteString -> Text
TE.decodeUtf8 (ByteString -> Text) -> ByteString -> Text
forall a b. (a -> b) -> a -> b
$ LbsResponse -> ByteString
forall response. HttpResponse response => response -> ByteString
Req.responseStatusMessage LbsResponse
resp
case () of
()
_ | Int
code Int -> [Int] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
`elem` [Int
429, Int
500, Int
502] -> do
IO () -> ReaderT Auth IO ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> ReaderT Auth IO ()) -> IO () -> ReaderT Auth IO ()
forall a b. (a -> b) -> a -> b
$ Int -> IO ()
threadDelay (Int
10 Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
10Int -> Int -> Int
forall a b. (Num a, Integral b) => a -> b -> a
^(Int
6 :: Int))
r a -> ReaderT Auth IO a
forall (r :: * -> *) a.
(Request (r a), FromJSON a) =>
r a -> ReaderT Auth IO a
callRestIO r a
req
()
_ | Int
code Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= Int
200 Bool -> Bool -> Bool
&& Int
code Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
<= Int
299 -> do
let parsableBody :: ByteString
parsableBody = if ByteString
body ByteString -> ByteString -> Bool
forall a. Eq a => a -> a -> Bool
== ByteString
"" then ByteString
"[]" else ByteString
body
case ByteString -> Either String a
forall a. FromJSON a => ByteString -> Either String a
eitherDecode ByteString
parsableBody of
Right a
o -> a -> ReaderT Auth IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure a
o
Left String
er -> do
let formaterr :: Text
formaterr = String -> Text
T.pack (String -> Text) -> String -> Text
forall a b. (a -> b) -> a -> b
$ String
"Response could not be parsed " String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
er
CommandError -> ReaderT Auth IO a
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM (CommandError -> ReaderT Auth IO a)
-> CommandError -> ReaderT Auth IO a
forall a b. (a -> b) -> a -> b
$ RestCallErrorCode -> CommandError
DiscordError (RestCallErrorCode -> CommandError)
-> RestCallErrorCode -> CommandError
forall a b. (a -> b) -> a -> b
$ Int -> Text -> Text -> RestCallErrorCode
RestCallErrorCode Int
code Text
"err" Text
formaterr
()
_ | Bool
otherwise -> do
CommandError -> ReaderT Auth IO a
forall (m :: * -> *) e a. (MonadThrow m, Exception e) => e -> m a
throwM (CommandError -> ReaderT Auth IO a)
-> CommandError -> ReaderT Auth IO a
forall a b. (a -> b) -> a -> b
$ RestCallErrorCode -> CommandError
DiscordError (RestCallErrorCode -> CommandError)
-> RestCallErrorCode -> CommandError
forall a b. (a -> b) -> a -> b
$ Int -> Text -> Text -> RestCallErrorCode
RestCallErrorCode Int
code Text
status (ByteString -> Text
TE.decodeUtf8 (ByteString -> Text) -> ByteString -> Text
forall a b. (a -> b) -> a -> b
$ ByteString -> ByteString
BL.toStrict ByteString
body)
compileRequest :: Auth -> JsonRequest -> RestIO Req.LbsResponse
compileRequest :: Auth -> JsonRequest -> RestIO LbsResponse
compileRequest Auth
auth JsonRequest
request =
let
authopt :: Option 'Https
authopt = Auth -> Option 'Https
authHeader Auth
auth Option 'Https -> Option 'Https -> Option 'Https
forall a. Semigroup a => a -> a -> a
<> ByteString -> ByteString -> Option 'Https
forall (scheme :: Scheme).
ByteString -> ByteString -> Option scheme
Req.header ByteString
"X-RateLimit-Precision" ByteString
"millisecond"
in
case JsonRequest
request of
(Delete Url 'Https
url Option 'Https
opts) ->
DELETE
-> Url 'Https
-> NoReqBody
-> Proxy LbsResponse
-> Option 'Https
-> RestIO LbsResponse
forall (m :: * -> *) method body response (scheme :: Scheme).
(MonadHttp m, HttpMethod method, HttpBody body,
HttpResponse response,
HttpBodyAllowed (AllowsBody method) (ProvidesBody body)) =>
method
-> Url scheme
-> body
-> Proxy response
-> Option scheme
-> m response
Req.req DELETE
Req.DELETE Url 'Https
url NoReqBody
Req.NoReqBody Proxy LbsResponse
Req.lbsResponse (Option 'Https
authopt Option 'Https -> Option 'Https -> Option 'Https
forall a. Semigroup a => a -> a -> a
<> Option 'Https
opts)
(Get Url 'Https
url Option 'Https
opts) ->
GET
-> Url 'Https
-> NoReqBody
-> Proxy LbsResponse
-> Option 'Https
-> RestIO LbsResponse
forall (m :: * -> *) method body response (scheme :: Scheme).
(MonadHttp m, HttpMethod method, HttpBody body,
HttpResponse response,
HttpBodyAllowed (AllowsBody method) (ProvidesBody body)) =>
method
-> Url scheme
-> body
-> Proxy response
-> Option scheme
-> m response
Req.req GET
Req.GET Url 'Https
url NoReqBody
Req.NoReqBody Proxy LbsResponse
Req.lbsResponse (Option 'Https
authopt Option 'Https -> Option 'Https -> Option 'Https
forall a. Semigroup a => a -> a -> a
<> Option 'Https
opts)
(Put Url 'Https
url a
body Option 'Https
opts) ->
PUT
-> Url 'Https
-> a
-> Proxy LbsResponse
-> Option 'Https
-> RestIO LbsResponse
forall (m :: * -> *) method body response (scheme :: Scheme).
(MonadHttp m, HttpMethod method, HttpBody body,
HttpResponse response,
HttpBodyAllowed (AllowsBody method) (ProvidesBody body)) =>
method
-> Url scheme
-> body
-> Proxy response
-> Option scheme
-> m response
Req.req PUT
Req.PUT Url 'Https
url a
body Proxy LbsResponse
Req.lbsResponse (Option 'Https
authopt Option 'Https -> Option 'Https -> Option 'Https
forall a. Semigroup a => a -> a -> a
<> Option 'Https
opts)
(Patch Url 'Https
url RestIO a
body Option 'Https
opts) -> do
a
b <- RestIO a
body
PATCH
-> Url 'Https
-> a
-> Proxy LbsResponse
-> Option 'Https
-> RestIO LbsResponse
forall (m :: * -> *) method body response (scheme :: Scheme).
(MonadHttp m, HttpMethod method, HttpBody body,
HttpResponse response,
HttpBodyAllowed (AllowsBody method) (ProvidesBody body)) =>
method
-> Url scheme
-> body
-> Proxy response
-> Option scheme
-> m response
Req.req PATCH
Req.PATCH Url 'Https
url a
b Proxy LbsResponse
Req.lbsResponse (Option 'Https
authopt Option 'Https -> Option 'Https -> Option 'Https
forall a. Semigroup a => a -> a -> a
<> Option 'Https
opts)
(Post Url 'Https
url RestIO a
body Option 'Https
opts) -> do
a
b <- RestIO a
body
POST
-> Url 'Https
-> a
-> Proxy LbsResponse
-> Option 'Https
-> RestIO LbsResponse
forall (m :: * -> *) method body response (scheme :: Scheme).
(MonadHttp m, HttpMethod method, HttpBody body,
HttpResponse response,
HttpBodyAllowed (AllowsBody method) (ProvidesBody body)) =>
method
-> Url scheme
-> body
-> Proxy response
-> Option scheme
-> m response
Req.req POST
Req.POST Url 'Https
url a
b Proxy LbsResponse
Req.lbsResponse (Option 'Https
authopt Option 'Https -> Option 'Https -> Option 'Https
forall a. Semigroup a => a -> a -> a
<> Option 'Https
opts)