calamity 0.1.24.2 → 0.1.25.0
raw patch · 6 files changed
+137/−55 lines, 6 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Calamity.HTTP.Guild: [$sel:channelID:ModifyGuildMemberData] :: ModifyGuildMemberData -> Maybe (Snowflake VoiceChannel)
- Calamity.HTTP.Guild: [$sel:color:ModifyGuildRoleData] :: ModifyGuildRoleData -> Maybe (Colour Double)
- Calamity.HTTP.Guild: [$sel:deaf:ModifyGuildMemberData] :: ModifyGuildMemberData -> Maybe Bool
- Calamity.HTTP.Guild: [$sel:hoist:ModifyGuildRoleData] :: ModifyGuildRoleData -> Maybe Bool
- Calamity.HTTP.Guild: [$sel:mentionable:ModifyGuildRoleData] :: ModifyGuildRoleData -> Maybe Bool
- Calamity.HTTP.Guild: [$sel:mute:ModifyGuildMemberData] :: ModifyGuildMemberData -> Maybe Bool
- Calamity.HTTP.Guild: [$sel:name:ModifyGuildRoleData] :: ModifyGuildRoleData -> Maybe Text
- Calamity.HTTP.Guild: [$sel:nick:ModifyGuildMemberData] :: ModifyGuildMemberData -> Maybe Text
- Calamity.HTTP.Guild: [$sel:permissions:ModifyGuildRoleData] :: ModifyGuildRoleData -> Maybe Permissions
- Calamity.HTTP.Guild: [$sel:roles:ModifyGuildMemberData] :: ModifyGuildMemberData -> Maybe [Snowflake Role]
- Calamity.HTTP.Guild: data ModifyGuildMemberData
- Calamity.HTTP.Guild: data ModifyGuildRoleData
- Calamity.HTTP.Guild: instance Data.Default.Class.Default Calamity.HTTP.Guild.ModifyGuildMemberData
- Calamity.HTTP.Guild: instance Data.Default.Class.Default Calamity.HTTP.Guild.ModifyGuildRoleData
+ Calamity.HTTP.Channel: EditMessageData :: Object -> EditMessageData
+ Calamity.HTTP.Channel: editMessageAllowedMentions :: Maybe AllowedMentions -> EditMessageData
+ Calamity.HTTP.Channel: editMessageContent :: Maybe Text -> EditMessageData
+ Calamity.HTTP.Channel: editMessageEmbed :: Maybe Embed -> EditMessageData
+ Calamity.HTTP.Channel: editMessageFlags :: Maybe Word64 -> EditMessageData
+ Calamity.HTTP.Channel: instance Data.Aeson.Types.ToJSON.ToJSON Calamity.HTTP.Channel.EditMessageData
+ Calamity.HTTP.Channel: instance GHC.Base.Monoid Calamity.HTTP.Channel.EditMessageData
+ Calamity.HTTP.Channel: instance GHC.Base.Semigroup Calamity.HTTP.Channel.EditMessageData
+ Calamity.HTTP.Channel: instance GHC.Generics.Generic Calamity.HTTP.Channel.EditMessageData
+ Calamity.HTTP.Channel: instance GHC.Show.Show Calamity.HTTP.Channel.EditMessageData
+ Calamity.HTTP.Channel: newtype EditMessageData
+ Calamity.HTTP.Guild: instance GHC.Base.Monoid Calamity.HTTP.Guild.ModifyGuildMemberData
+ Calamity.HTTP.Guild: instance GHC.Base.Monoid Calamity.HTTP.Guild.ModifyGuildRoleData
+ Calamity.HTTP.Guild: instance GHC.Base.Semigroup Calamity.HTTP.Guild.ModifyGuildMemberData
+ Calamity.HTTP.Guild: instance GHC.Base.Semigroup Calamity.HTTP.Guild.ModifyGuildRoleData
+ Calamity.HTTP.Guild: modifyGuildMemberChannelID :: Maybe (Snowflake VoiceChannel) -> ModifyGuildMemberData
+ Calamity.HTTP.Guild: modifyGuildMemberDeaf :: Maybe Bool -> ModifyGuildMemberData
+ Calamity.HTTP.Guild: modifyGuildMemberMute :: Maybe Bool -> ModifyGuildMemberData
+ Calamity.HTTP.Guild: modifyGuildMemberNick :: Maybe Text -> ModifyGuildMemberData
+ Calamity.HTTP.Guild: modifyGuildMemberRoles :: Maybe [Snowflake Role] -> ModifyGuildMemberData
+ Calamity.HTTP.Guild: modifyGuildRoleColour :: Maybe (Colour Double) -> ModifyGuildRoleData
+ Calamity.HTTP.Guild: modifyGuildRoleHoist :: Maybe Bool -> ModifyGuildRoleData
+ Calamity.HTTP.Guild: modifyGuildRoleMentionable :: Maybe Bool -> ModifyGuildRoleData
+ Calamity.HTTP.Guild: modifyGuildRoleName :: Maybe Text -> ModifyGuildRoleData
+ Calamity.HTTP.Guild: modifyGuildRolePermissions :: Maybe Permissions -> ModifyGuildRoleData
+ Calamity.HTTP.Guild: newtype ModifyGuildMemberData
+ Calamity.HTTP.Guild: newtype ModifyGuildRoleData
- Calamity.Cache.Eff: delDM :: forall r_a9NXx. MemberWithError CacheEff r_a9NXx => Snowflake DMChannel -> Sem r_a9NXx ()
+ Calamity.Cache.Eff: delDM :: forall r_a9mAK. MemberWithError CacheEff r_a9mAK => Snowflake DMChannel -> Sem r_a9mAK ()
- Calamity.Cache.Eff: delGuild :: forall r_a9NXq. MemberWithError CacheEff r_a9NXq => Snowflake Guild -> Sem r_a9NXq ()
+ Calamity.Cache.Eff: delGuild :: forall r_a9mAD. MemberWithError CacheEff r_a9mAD => Snowflake Guild -> Sem r_a9mAD ()
- Calamity.Cache.Eff: delMessage :: forall r_a9NXS. MemberWithError CacheEff r_a9NXS => Snowflake Message -> Sem r_a9NXS ()
+ Calamity.Cache.Eff: delMessage :: forall r_a9mB5. MemberWithError CacheEff r_a9mB5 => Snowflake Message -> Sem r_a9mB5 ()
- Calamity.Cache.Eff: delUnavailableGuild :: forall r_a9NXL. MemberWithError CacheEff r_a9NXL => Snowflake Guild -> Sem r_a9NXL ()
+ Calamity.Cache.Eff: delUnavailableGuild :: forall r_a9mAY. MemberWithError CacheEff r_a9mAY => Snowflake Guild -> Sem r_a9mAY ()
- Calamity.Cache.Eff: delUser :: forall r_a9NXE. MemberWithError CacheEff r_a9NXE => Snowflake User -> Sem r_a9NXE ()
+ Calamity.Cache.Eff: delUser :: forall r_a9mAR. MemberWithError CacheEff r_a9mAR => Snowflake User -> Sem r_a9mAR ()
- Calamity.Cache.Eff: getBotUser :: forall r_a9NXi. MemberWithError CacheEff r_a9NXi => Sem r_a9NXi (Maybe User)
+ Calamity.Cache.Eff: getBotUser :: forall r_a9mAv. MemberWithError CacheEff r_a9mAv => Sem r_a9mAv (Maybe User)
- Calamity.Cache.Eff: getDM :: forall r_a9NXu. MemberWithError CacheEff r_a9NXu => Snowflake DMChannel -> Sem r_a9NXu (Maybe DMChannel)
+ Calamity.Cache.Eff: getDM :: forall r_a9mAH. MemberWithError CacheEff r_a9mAH => Snowflake DMChannel -> Sem r_a9mAH (Maybe DMChannel)
- Calamity.Cache.Eff: getDMs :: forall r_a9NXw. MemberWithError CacheEff r_a9NXw => Sem r_a9NXw [DMChannel]
+ Calamity.Cache.Eff: getDMs :: forall r_a9mAJ. MemberWithError CacheEff r_a9mAJ => Sem r_a9mAJ [DMChannel]
- Calamity.Cache.Eff: getGuild :: forall r_a9NXl. MemberWithError CacheEff r_a9NXl => Snowflake Guild -> Sem r_a9NXl (Maybe Guild)
+ Calamity.Cache.Eff: getGuild :: forall r_a9mAy. MemberWithError CacheEff r_a9mAy => Snowflake Guild -> Sem r_a9mAy (Maybe Guild)
- Calamity.Cache.Eff: getGuildChannel :: forall r_a9NXn. MemberWithError CacheEff r_a9NXn => Snowflake GuildChannel -> Sem r_a9NXn (Maybe GuildChannel)
+ Calamity.Cache.Eff: getGuildChannel :: forall r_a9mAA. MemberWithError CacheEff r_a9mAA => Snowflake GuildChannel -> Sem r_a9mAA (Maybe GuildChannel)
- Calamity.Cache.Eff: getGuilds :: forall r_a9NXp. MemberWithError CacheEff r_a9NXp => Sem r_a9NXp [Guild]
+ Calamity.Cache.Eff: getGuilds :: forall r_a9mAC. MemberWithError CacheEff r_a9mAC => Sem r_a9mAC [Guild]
- Calamity.Cache.Eff: getMessage :: forall r_a9NXP. MemberWithError CacheEff r_a9NXP => Snowflake Message -> Sem r_a9NXP (Maybe Message)
+ Calamity.Cache.Eff: getMessage :: forall r_a9mB2. MemberWithError CacheEff r_a9mB2 => Snowflake Message -> Sem r_a9mB2 (Maybe Message)
- Calamity.Cache.Eff: getMessages :: forall r_a9NXR. MemberWithError CacheEff r_a9NXR => Sem r_a9NXR [Message]
+ Calamity.Cache.Eff: getMessages :: forall r_a9mB4. MemberWithError CacheEff r_a9mB4 => Sem r_a9mB4 [Message]
- Calamity.Cache.Eff: getUnavailableGuilds :: forall r_a9NXK. MemberWithError CacheEff r_a9NXK => Sem r_a9NXK [Snowflake Guild]
+ Calamity.Cache.Eff: getUnavailableGuilds :: forall r_a9mAX. MemberWithError CacheEff r_a9mAX => Sem r_a9mAX [Snowflake Guild]
- Calamity.Cache.Eff: getUser :: forall r_a9NXB. MemberWithError CacheEff r_a9NXB => Snowflake User -> Sem r_a9NXB (Maybe User)
+ Calamity.Cache.Eff: getUser :: forall r_a9mAO. MemberWithError CacheEff r_a9mAO => Snowflake User -> Sem r_a9mAO (Maybe User)
- Calamity.Cache.Eff: getUsers :: forall r_a9NXD. MemberWithError CacheEff r_a9NXD => Sem r_a9NXD [User]
+ Calamity.Cache.Eff: getUsers :: forall r_a9mAQ. MemberWithError CacheEff r_a9mAQ => Sem r_a9mAQ [User]
- Calamity.Cache.Eff: isUnavailableGuild :: forall r_a9NXI. MemberWithError CacheEff r_a9NXI => Snowflake Guild -> Sem r_a9NXI Bool
+ Calamity.Cache.Eff: isUnavailableGuild :: forall r_a9mAV. MemberWithError CacheEff r_a9mAV => Snowflake Guild -> Sem r_a9mAV Bool
- Calamity.Cache.Eff: setBotUser :: forall r_a9NXg. MemberWithError CacheEff r_a9NXg => User -> Sem r_a9NXg ()
+ Calamity.Cache.Eff: setBotUser :: forall r_a9mAt. MemberWithError CacheEff r_a9mAt => User -> Sem r_a9mAt ()
- Calamity.Cache.Eff: setDM :: forall r_a9NXs. MemberWithError CacheEff r_a9NXs => DMChannel -> Sem r_a9NXs ()
+ Calamity.Cache.Eff: setDM :: forall r_a9mAF. MemberWithError CacheEff r_a9mAF => DMChannel -> Sem r_a9mAF ()
- Calamity.Cache.Eff: setGuild :: forall r_a9NXj. MemberWithError CacheEff r_a9NXj => Guild -> Sem r_a9NXj ()
+ Calamity.Cache.Eff: setGuild :: forall r_a9mAw. MemberWithError CacheEff r_a9mAw => Guild -> Sem r_a9mAw ()
- Calamity.Cache.Eff: setMessage :: forall r_a9NXN. MemberWithError CacheEff r_a9NXN => Message -> Sem r_a9NXN ()
+ Calamity.Cache.Eff: setMessage :: forall r_a9mB0. MemberWithError CacheEff r_a9mB0 => Message -> Sem r_a9mB0 ()
- Calamity.Cache.Eff: setUnavailableGuild :: forall r_a9NXG. MemberWithError CacheEff r_a9NXG => Snowflake Guild -> Sem r_a9NXG ()
+ Calamity.Cache.Eff: setUnavailableGuild :: forall r_a9mAT. MemberWithError CacheEff r_a9mAT => Snowflake Guild -> Sem r_a9mAT ()
- Calamity.Cache.Eff: setUser :: forall r_a9NXz. MemberWithError CacheEff r_a9NXz => User -> Sem r_a9NXz ()
+ Calamity.Cache.Eff: setUser :: forall r_a9mAM. MemberWithError CacheEff r_a9mAM => User -> Sem r_a9mAM ()
- Calamity.Commands.ParsePrefix: parsePrefix :: forall r_a7hVK. MemberWithError ParsePrefix r_a7hVK => Message -> Sem r_a7hVK (Maybe (Text, Text))
+ Calamity.Commands.ParsePrefix: parsePrefix :: forall r_a6Xg8. MemberWithError ParsePrefix r_a6Xg8 => Message -> Sem r_a6Xg8 (Maybe (Text, Text))
- Calamity.HTTP.Channel: [EditMessage] :: (HasID Channel c, HasID Message m) => c -> m -> Maybe Text -> Maybe Embed -> ChannelRequest Message
+ Calamity.HTTP.Channel: [EditMessage] :: (HasID Channel c, HasID Message m) => c -> m -> EditMessageData -> ChannelRequest Message
- Calamity.HTTP.Guild: ModifyGuildMemberData :: Maybe Text -> Maybe [Snowflake Role] -> Maybe Bool -> Maybe Bool -> Maybe (Snowflake VoiceChannel) -> ModifyGuildMemberData
+ Calamity.HTTP.Guild: ModifyGuildMemberData :: Object -> ModifyGuildMemberData
- Calamity.HTTP.Guild: ModifyGuildRoleData :: Maybe Text -> Maybe Permissions -> Maybe (Colour Double) -> Maybe Bool -> Maybe Bool -> ModifyGuildRoleData
+ Calamity.HTTP.Guild: ModifyGuildRoleData :: Object -> ModifyGuildRoleData
- Calamity.Internal.LocalWriter: llisten :: forall o_aFhR r_aFxR a_XFhR. MemberWithError (LocalWriter o_aFhR) r_aFxR => Sem r_aFxR a_XFhR -> Sem r_aFxR (o_aFhR, a_XFhR)
+ Calamity.Internal.LocalWriter: llisten :: forall o_arAN r_arIk a_XrAN. MemberWithError (LocalWriter o_arAN) r_arIk => Sem r_arIk a_XrAN -> Sem r_arIk (o_arAN, a_XrAN)
- Calamity.Internal.LocalWriter: ltell :: forall o_aFhN r_aFxP. MemberWithError (LocalWriter o_aFhN) r_aFxP => o_aFhN -> Sem r_aFxP ()
+ Calamity.Internal.LocalWriter: ltell :: forall o_arAJ r_arIi. MemberWithError (LocalWriter o_arAJ) r_arIi => o_arAJ -> Sem r_arIi ()
- Calamity.Metrics.Eff: addCounter :: forall r_aLeS. MemberWithError MetricEff r_aLeS => Int -> Counter -> Sem r_aLeS Int
+ Calamity.Metrics.Eff: addCounter :: forall r_avdP. MemberWithError MetricEff r_avdP => Int -> Counter -> Sem r_avdP Int
- Calamity.Metrics.Eff: modifyGauge :: forall r_aLeV. MemberWithError MetricEff r_aLeV => (Double -> Double) -> Gauge -> Sem r_aLeV Double
+ Calamity.Metrics.Eff: modifyGauge :: forall r_avdS. MemberWithError MetricEff r_avdS => (Double -> Double) -> Gauge -> Sem r_avdS Double
- Calamity.Metrics.Eff: observeHistogram :: forall r_aLeY. MemberWithError MetricEff r_aLeY => Double -> Histogram -> Sem r_aLeY HistogramSample
+ Calamity.Metrics.Eff: observeHistogram :: forall r_avdV. MemberWithError MetricEff r_avdV => Double -> Histogram -> Sem r_avdV HistogramSample
- Calamity.Metrics.Eff: registerCounter :: forall r_aLeI. MemberWithError MetricEff r_aLeI => Text -> [(Text, Text)] -> Sem r_aLeI Counter
+ Calamity.Metrics.Eff: registerCounter :: forall r_avdF. MemberWithError MetricEff r_avdF => Text -> [(Text, Text)] -> Sem r_avdF Counter
- Calamity.Metrics.Eff: registerGauge :: forall r_aLeL. MemberWithError MetricEff r_aLeL => Text -> [(Text, Text)] -> Sem r_aLeL Gauge
+ Calamity.Metrics.Eff: registerGauge :: forall r_avdI. MemberWithError MetricEff r_avdI => Text -> [(Text, Text)] -> Sem r_avdI Gauge
- Calamity.Metrics.Eff: registerHistogram :: forall r_aLeO. MemberWithError MetricEff r_aLeO => Text -> [(Text, Text)] -> [Double] -> Sem r_aLeO Histogram
+ Calamity.Metrics.Eff: registerHistogram :: forall r_avdL. MemberWithError MetricEff r_avdL => Text -> [(Text, Text)] -> [Double] -> Sem r_avdL Histogram
Files
- ChangeLog.md +10/−3
- calamity.cabal +2/−2
- src/Calamity/Commands/CommandUtils.hs +1/−1
- src/Calamity/Commands/Dsl.hs +2/−2
- src/Calamity/HTTP/Channel.hs +45/−13
- src/Calamity/HTTP/Guild.hs +77/−34
ChangeLog.md view
@@ -1,5 +1,12 @@ # Changelog for Calamity +## 0.1.25.0+++ Changed how `ModifyGuildMemberData`, and `ModifyGuildRoleData` are implemented+ to allow for the parameters to be optional and nullable.++ Changed `EditMessage` to use `EditMessageData` instead of `Maybe Text -> Maybe+ Embed`, allowing for the parameters to be optional and nullable.+ ## 0.1.24.2 + Add event handlers for voice state update events: `'VoiceStateUpdateEvt`@@ -76,15 +83,15 @@ * Add raw message events: `RawMessageUpdateEvt`, `RawMessageDeleteEvt`, `RawMessageDeleteBulkEvt`, `RawMessageReactionAddEvt`, `RawMessageReactionRemoveEvt`, `RawMessageReactionRemoveAllEvt`.- + * Fixed bulk message deletes firing a message delete per deleted message, instead of a bulk message delete event (I'm not sure how I did that).- + * Add `animated` field to `Partial Emoji`s. * Make show instances for `Partial Emoji` and `RawEmoji` show to their discord representation.- + ## 0.1.17.2 *2020-07-04*
calamity.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: a5c065a71cfed945f41be7a4a6f14517749ae7e80ebeb56e60944a845ef100a4+-- hash: 71d166a4c21a7ffb9bf5da8669b3c29f3ba92c9447240a50efd0fad4c1804208 name: calamity-version: 0.1.24.2+version: 0.1.25.0 synopsis: A library for writing discord bots in haskell description: Please see the README on GitHub at <https://github.com/nitros12/calamity#readme> category: Network, Web
src/Calamity/Commands/CommandUtils.hs view
@@ -82,7 +82,7 @@ -- -- @ -- 'buildCommand' @\'['Named' "user" ('Snowflake' 'User'), 'Named' "reason" ('KleeneStarConcat' 'S.Text')]--- "ban" 'Nothing' [] ('const' "Ban a user") $ \ctx uid r -> case (ctx 'Control.Lens.^.' #guild) of+-- "ban" 'Nothing' [] ('const' "Ban a user") $ \\ctx uid r -> case (ctx 'Control.Lens.^.' #guild) of -- 'Just' guild -> do -- 'Control.Monad.void' . 'Calamity.HTTP.invoke' $ 'Calamity.HTTP.Guild.CreateGuildBan' guild uid ('Calamity.HTTP.Guild.CreateGuildBanData' 'Nothing' $ 'Just' r) -- 'Control.Monad.void' $ 'Calamity.Types.Tellable.tell' ctx ("Banned user `" '<>' 'TextShow.showt' uid '<>' "` with reason: " '<>' r)
src/Calamity/Commands/Dsl.hs view
@@ -58,7 +58,7 @@ -- -- @ -- 'hide' '$' do--- 'command' \@'[] "test" \ctx -> 'pure' ()+-- 'command' \@'[] "test" \\ctx -> 'pure' () -- @ -- -- In the above block, any command declared inside 'hide' will have it's@@ -78,7 +78,7 @@ -- 'Calamity.Client.runBotIO' ('Calamity.BotToken' token) -- $ 'Calamity.Commands.Utils.addCommands' $ do -- 'Calamity.Commands.Help.helpCommand'--- 'Calamity.Commands.Dsl.command' \@'[] "test" \ctx ->+-- 'Calamity.Commands.Dsl.command' \@'[] "test" \\ctx -> -- 'Control.Monad.void' $ 'Calamity.Types.Tellable.tell' \@'L.Text' ctx "hi" -- @ --
src/Calamity/HTTP/Channel.hs view
@@ -1,14 +1,19 @@ -- | Channel endpoints module Calamity.HTTP.Channel (- ChannelRequest (..),- CreateMessageOptions (..),- ChannelUpdate (..),- AllowedMentionType (..),- AllowedMentions (..),- ChannelMessagesQuery (..),- GetReactionsOptions (..),- CreateChannelInviteOptions (..),- GroupDMAddRecipientOptions (..),+ ChannelRequest (..),+ CreateMessageOptions (..),+ EditMessageData (..),+ editMessageContent,+ editMessageEmbed,+ editMessageFlags,+ editMessageAllowedMentions,+ ChannelUpdate (..),+ AllowedMentionType (..),+ AllowedMentions (..),+ ChannelMessagesQuery (..),+ GetReactionsOptions (..),+ CreateChannelInviteOptions (..),+ GroupDMAddRecipientOptions (..), ) where import Calamity.HTTP.Internal.Request@@ -23,12 +28,14 @@ import Data.ByteString.Lazy (ByteString) import Data.Default.Class import Data.Generics.Product.Subtype (upcast)+import qualified Data.HashMap.Strict as H import Data.Text (Text) import qualified Data.Text as S+import Data.Word import GHC.Generics+import Network.HTTP.Client.MultipartFormData import Network.HTTP.Req import Network.Mime-import Network.HTTP.Client.MultipartFormData import TextShow data CreateMessageOptions = CreateMessageOptions@@ -76,6 +83,31 @@ deriving (Show, Generic) deriving (ToJSON) via CalamityJSON CreateMessageJson +-- | Parameters to the Edit Message endpoint.+--+-- Use the provided methods (@editMessageX@) to create a value with the+-- field set, use the Semigroup instance to union the values.+--+-- ==== Examples+--+-- >>> encode $ editMessageContent (Just "test") <> editMessageFlags Nothing+-- "{\"nick\":\"test\",\"deaf\":null}"+newtype EditMessageData = EditMessageData Object+ deriving (Show, Generic)+ deriving newtype (ToJSON, Semigroup, Monoid)++editMessageContent :: Maybe Text -> EditMessageData+editMessageContent v = EditMessageData $ H.fromList [("content", toJSON v)]++editMessageEmbed :: Maybe Embed -> EditMessageData+editMessageEmbed v = EditMessageData $ H.fromList [("embed", toJSON v)]++editMessageFlags :: Maybe Word64 -> EditMessageData+editMessageFlags v = EditMessageData $ H.fromList [("flags", toJSON v)]++editMessageAllowedMentions :: Maybe AllowedMentions -> EditMessageData+editMessageAllowedMentions v = EditMessageData $ H.fromList [("allowed_mentions", toJSON v)]+ data ChannelUpdate = ChannelUpdate { name :: Maybe Text , position :: Maybe Int@@ -132,7 +164,7 @@ data ChannelRequest a where CreateMessage :: (HasID Channel c) => c -> CreateMessageOptions -> ChannelRequest Message GetMessage :: (HasID Channel c, HasID Message m) => c -> m -> ChannelRequest Message- EditMessage :: (HasID Channel c, HasID Message m) => c -> m -> Maybe Text -> Maybe Embed -> ChannelRequest Message+ EditMessage :: (HasID Channel c, HasID Message m) => c -> m -> EditMessageData -> ChannelRequest Message DeleteMessage :: (HasID Channel c, HasID Message m) => c -> m -> ChannelRequest () BulkDeleteMessages :: (HasID Channel c, HasID Message m) => c -> [m] -> ChannelRequest () GetChannel :: (HasID Channel c) => c -> ChannelRequest Channel@@ -203,7 +235,7 @@ baseRoute cid // S "messages" // ID @Message // S "reactions" & giveID mid & buildRoute- route (EditMessage (getID -> cid) (getID @Message -> mid) _ _) =+ route (EditMessage (getID -> cid) (getID @Message -> mid) _) = baseRoute cid // S "messages" // ID @Message & giveID mid & buildRoute@@ -284,7 +316,7 @@ <> "limit" =:? (showt <$> limit) ) action (DeleteAllReactions _ _) = deleteWith- action (EditMessage _ _ content embed) = patchWith' (ReqBodyJson $ object ["content" .= content, "embed" .= embed])+ action (EditMessage _ _ o) = patchWith' (ReqBodyJson o) action (DeleteMessage _ _) = deleteWith action (BulkDeleteMessages _ (map (getID @Message) -> ids)) = postWith' (ReqBodyJson $ object ["messages" .= ids]) action (GetChannelInvites _) = getWith
src/Calamity/HTTP/Guild.hs view
@@ -1,16 +1,26 @@ -- | Guild endpoints module Calamity.HTTP.Guild (- GuildRequest (..),- CreateGuildData (..),- ModifyGuildData (..),- ChannelCreateData (..),- ChannelPosition (..),- ListMembersOptions (..),- AddGuildMemberData (..),- ModifyGuildMemberData (..),- CreateGuildBanData (..),- ModifyGuildRoleData (..),- ModifyGuildRolePositionsData (..),+ GuildRequest (..),+ CreateGuildData (..),+ ModifyGuildData (..),+ ChannelCreateData (..),+ ChannelPosition (..),+ ListMembersOptions (..),+ AddGuildMemberData (..),+ ModifyGuildMemberData (..),+ modifyGuildMemberNick,+ modifyGuildMemberRoles,+ modifyGuildMemberMute,+ modifyGuildMemberDeaf,+ modifyGuildMemberChannelID,+ CreateGuildBanData (..),+ ModifyGuildRoleData (..),+ modifyGuildRoleName,+ modifyGuildRolePermissions,+ modifyGuildRoleColour,+ modifyGuildRoleHoist,+ modifyGuildRoleMentionable,+ ModifyGuildRolePositionsData (..), ) where import Calamity.HTTP.Internal.Request@@ -23,19 +33,15 @@ import Calamity.Types.Model.User import Calamity.Types.Model.Voice import Calamity.Types.Snowflake- import Control.Lens hiding ((.=))- import Data.Aeson import Data.Aeson.Lens import Data.Colour (Colour) import Data.Default.Class+import qualified Data.HashMap.Strict as H import Data.Text (Text)- import GHC.Generics- import Network.HTTP.Req- import TextShow data CreateGuildData = CreateGuildData@@ -106,31 +112,68 @@ deriving (Show, Generic) deriving (ToJSON) via CalamityJSON AddGuildMemberData -data ModifyGuildMemberData = ModifyGuildMemberData- { nick :: Maybe Text- , roles :: Maybe [Snowflake Role]- , mute :: Maybe Bool- , deaf :: Maybe Bool- , channelID :: Maybe (Snowflake VoiceChannel)- }- deriving (Show, Generic, Default)- deriving (ToJSON) via CalamityJSON ModifyGuildMemberData+-- | Parameters to the Modify Guild Member endpoint.+--+-- Use the provided methods (@modifyGuildMemberX@) to create a value with the+-- field set, use the Semigroup instance to union the values.+--+-- ==== Examples+--+-- >>> encode $ modifyGuildMemberNick (Just "test") <> modifyGuildMemberDeaf Nothing+-- "{\"nick\":\"test\",\"deaf\":null}"+newtype ModifyGuildMemberData = ModifyGuildMemberData Object+ deriving (Show, Generic)+ deriving newtype (ToJSON, Semigroup, Monoid) +modifyGuildMemberNick :: Maybe Text -> ModifyGuildMemberData+modifyGuildMemberNick v = ModifyGuildMemberData $ H.fromList [("nick", toJSON v)]++modifyGuildMemberRoles :: Maybe [Snowflake Role] -> ModifyGuildMemberData+modifyGuildMemberRoles v = ModifyGuildMemberData $ H.fromList [("roles", toJSON v)]++modifyGuildMemberMute :: Maybe Bool -> ModifyGuildMemberData+modifyGuildMemberMute v = ModifyGuildMemberData $ H.fromList [("mute", toJSON v)]++modifyGuildMemberDeaf :: Maybe Bool -> ModifyGuildMemberData+modifyGuildMemberDeaf v = ModifyGuildMemberData $ H.fromList [("deaf", toJSON v)]++modifyGuildMemberChannelID :: Maybe (Snowflake VoiceChannel) -> ModifyGuildMemberData+modifyGuildMemberChannelID v = ModifyGuildMemberData $ H.fromList [("channel_id", toJSON v)]+ data CreateGuildBanData = CreateGuildBanData { deleteMessageDays :: Maybe Integer , reason :: Maybe Text } deriving (Show, Generic, Default) -data ModifyGuildRoleData = ModifyGuildRoleData- { name :: Maybe Text- , permissions :: Maybe Permissions- , color :: Maybe (Colour Double)- , hoist :: Maybe Bool- , mentionable :: Maybe Bool- }- deriving (Show, Generic, Default)- deriving (ToJSON) via CalamityJSON ModifyGuildRoleData+-- | Parameters to the Modify Guild Role endpoint.+--+-- Use the provided methods (@modifyGuildRoleX@) to create a value with the+-- field set, use the Semigroup instance to union the values.+--+-- ==== Examples+--+-- >>> encode $ modifyGuildRoleName (Just "test") <> modifyGuildRolePermissions Nothing+-- "{\"name\":\"test\",\"permissions\":null}"+newtype ModifyGuildRoleData = ModifyGuildRoleData Object+ deriving (Show, Generic)+ deriving newtype (ToJSON, Semigroup, Monoid)+++modifyGuildRoleName :: Maybe Text -> ModifyGuildRoleData+modifyGuildRoleName v = ModifyGuildRoleData $ H.fromList [("name", toJSON v)]++modifyGuildRolePermissions :: Maybe Permissions -> ModifyGuildRoleData+modifyGuildRolePermissions v = ModifyGuildRoleData $ H.fromList [("permissions", toJSON v)]++modifyGuildRoleColour :: Maybe (Colour Double) -> ModifyGuildRoleData+modifyGuildRoleColour v = ModifyGuildRoleData $ H.fromList [("colour", toJSON v)]++modifyGuildRoleHoist :: Maybe Bool -> ModifyGuildRoleData+modifyGuildRoleHoist v = ModifyGuildRoleData $ H.fromList [("hoist", toJSON v)]++modifyGuildRoleMentionable :: Maybe Bool -> ModifyGuildRoleData+modifyGuildRoleMentionable v = ModifyGuildRoleData $ H.fromList [("mentionable", toJSON v)] data ModifyGuildRolePositionsData = ModifyGuildRolePositionsData { id :: Snowflake Role