packages feed

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 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