calamity 0.1.4.2 → 0.1.4.3
raw patch · 9 files changed
+182/−16 lines, 9 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Calamity.HTTP.Channel: instance Data.Default.Class.Default Calamity.HTTP.Channel.CreateChannelInviteOptions
+ Calamity.HTTP.Channel: instance Data.Default.Class.Default Calamity.HTTP.Channel.GetReactionsOptions
+ Calamity.HTTP.Channel: instance GHC.Generics.Generic Calamity.HTTP.Channel.GetReactionsOptions
+ Calamity.HTTP.Guild: instance Data.Default.Class.Default Calamity.HTTP.Guild.CreateGuildBanData
+ Calamity.HTTP.Guild: instance Data.Default.Class.Default Calamity.HTTP.Guild.ListMembersOptions
+ Calamity.HTTP.Guild: instance Data.Default.Class.Default Calamity.HTTP.Guild.ModifyGuildData
+ 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.Invite: [DeleteInvite] :: Text -> InviteRequest ()
+ Calamity.HTTP.Invite: [GetInvite] :: Text -> InviteRequest Invite
+ Calamity.HTTP.Invite: data InviteRequest a
+ Calamity.HTTP.Invite: instance Calamity.HTTP.Internal.Request.Request (Calamity.HTTP.Invite.InviteRequest a) a
+ Calamity.HTTP.User: GetCurrentUserGuildsOptions :: Maybe (Snowflake Guild) -> Maybe (Snowflake Guild) -> Maybe Integer -> GetCurrentUserGuildsOptions
+ Calamity.HTTP.User: ModifyUserData :: Maybe Text -> Maybe Text -> ModifyUserData
+ Calamity.HTTP.User: [$sel:after:GetCurrentUserGuildsOptions] :: GetCurrentUserGuildsOptions -> Maybe (Snowflake Guild)
+ Calamity.HTTP.User: [$sel:avatar:ModifyUserData] :: ModifyUserData -> Maybe Text
+ Calamity.HTTP.User: [$sel:before:GetCurrentUserGuildsOptions] :: GetCurrentUserGuildsOptions -> Maybe (Snowflake Guild)
+ Calamity.HTTP.User: [$sel:limit:GetCurrentUserGuildsOptions] :: GetCurrentUserGuildsOptions -> Maybe Integer
+ Calamity.HTTP.User: [$sel:username:ModifyUserData] :: ModifyUserData -> Maybe Text
+ Calamity.HTTP.User: [CreateDM] :: HasID User u => u -> UserRequest DMChannel
+ Calamity.HTTP.User: [GetCurrentUserGuilds] :: GetCurrentUserGuildsOptions -> UserRequest [Partial Guild]
+ Calamity.HTTP.User: [GetCurrentUser] :: UserRequest User
+ Calamity.HTTP.User: [GetUser] :: HasID User u => u -> UserRequest User
+ Calamity.HTTP.User: [LeaveGuild] :: HasID Guild g => g -> UserRequest ()
+ Calamity.HTTP.User: [ModifyCurrentUser] :: ModifyUserData -> UserRequest User
+ Calamity.HTTP.User: data GetCurrentUserGuildsOptions
+ Calamity.HTTP.User: data ModifyUserData
+ Calamity.HTTP.User: data UserRequest a
+ Calamity.HTTP.User: instance Calamity.HTTP.Internal.Request.Request (Calamity.HTTP.User.UserRequest a) a
+ Calamity.HTTP.User: instance Data.Aeson.Types.ToJSON.ToJSON Calamity.HTTP.User.ModifyUserData
+ Calamity.HTTP.User: instance Data.Default.Class.Default Calamity.HTTP.User.GetCurrentUserGuildsOptions
+ Calamity.HTTP.User: instance Data.Default.Class.Default Calamity.HTTP.User.ModifyUserData
+ Calamity.HTTP.User: instance GHC.Generics.Generic Calamity.HTTP.User.GetCurrentUserGuildsOptions
+ Calamity.HTTP.User: instance GHC.Generics.Generic Calamity.HTTP.User.ModifyUserData
+ Calamity.HTTP.User: instance GHC.Show.Show Calamity.HTTP.User.GetCurrentUserGuildsOptions
+ Calamity.HTTP.User: instance GHC.Show.Show Calamity.HTTP.User.ModifyUserData
+ Calamity.Types.Model.Channel.Webhook: Webhook :: Snowflake Webhook -> Integer -> Maybe (Snowflake Guild) -> Maybe (Snowflake Channel) -> Maybe (Snowflake User) -> Text -> Text -> Maybe Text -> Webhook
+ Calamity.Types.Model.Channel.Webhook: [$sel:avatar:Webhook] :: Webhook -> Text
+ Calamity.Types.Model.Channel.Webhook: [$sel:channelID:Webhook] :: Webhook -> Maybe (Snowflake Channel)
+ Calamity.Types.Model.Channel.Webhook: [$sel:guildID:Webhook] :: Webhook -> Maybe (Snowflake Guild)
+ Calamity.Types.Model.Channel.Webhook: [$sel:id:Webhook] :: Webhook -> Snowflake Webhook
+ Calamity.Types.Model.Channel.Webhook: [$sel:name:Webhook] :: Webhook -> Text
+ Calamity.Types.Model.Channel.Webhook: [$sel:token:Webhook] :: Webhook -> Maybe Text
+ Calamity.Types.Model.Channel.Webhook: [$sel:type_:Webhook] :: Webhook -> Integer
+ Calamity.Types.Model.Channel.Webhook: [$sel:user:Webhook] :: Webhook -> Maybe (Snowflake User)
+ Calamity.Types.Model.Channel.Webhook: data Webhook
+ Calamity.Types.Model.Channel.Webhook: instance Calamity.Types.Snowflake.HasID Calamity.Types.Model.Channel.Webhook.Webhook Calamity.Types.Model.Channel.Webhook.Webhook
+ Calamity.Types.Model.Channel.Webhook: instance Data.Aeson.Types.FromJSON.FromJSON Calamity.Types.Model.Channel.Webhook.Webhook
+ Calamity.Types.Model.Channel.Webhook: instance GHC.Classes.Eq Calamity.Types.Model.Channel.Webhook.Webhook
+ Calamity.Types.Model.Channel.Webhook: instance GHC.Generics.Generic Calamity.Types.Model.Channel.Webhook.Webhook
+ Calamity.Types.Model.Channel.Webhook: instance GHC.Show.Show Calamity.Types.Model.Channel.Webhook.Webhook
+ Calamity.Types.Model.Channel.Webhook: instance TextShow.Classes.TextShow Calamity.Types.Model.Channel.Webhook.Webhook
- Calamity.Cache.Eff: delDM :: forall r_a8WsO. MemberWithError CacheEff r_a8WsO => Snowflake DMChannel -> Sem r_a8WsO ()
+ Calamity.Cache.Eff: delDM :: forall r_a94Or. MemberWithError CacheEff r_a94Or => Snowflake DMChannel -> Sem r_a94Or ()
- Calamity.Cache.Eff: delGuild :: forall r_a8WsH. MemberWithError CacheEff r_a8WsH => Snowflake Guild -> Sem r_a8WsH ()
+ Calamity.Cache.Eff: delGuild :: forall r_a94Ok. MemberWithError CacheEff r_a94Ok => Snowflake Guild -> Sem r_a94Ok ()
- Calamity.Cache.Eff: delMessage :: forall r_a8Wt9. MemberWithError CacheEff r_a8Wt9 => Snowflake Message -> Sem r_a8Wt9 ()
+ Calamity.Cache.Eff: delMessage :: forall r_a94OM. MemberWithError CacheEff r_a94OM => Snowflake Message -> Sem r_a94OM ()
- Calamity.Cache.Eff: delUnavailableGuild :: forall r_a8Wt2. MemberWithError CacheEff r_a8Wt2 => Snowflake Guild -> Sem r_a8Wt2 ()
+ Calamity.Cache.Eff: delUnavailableGuild :: forall r_a94OF. MemberWithError CacheEff r_a94OF => Snowflake Guild -> Sem r_a94OF ()
- Calamity.Cache.Eff: delUser :: forall r_a8WsV. MemberWithError CacheEff r_a8WsV => Snowflake User -> Sem r_a8WsV ()
+ Calamity.Cache.Eff: delUser :: forall r_a94Oy. MemberWithError CacheEff r_a94Oy => Snowflake User -> Sem r_a94Oy ()
- Calamity.Cache.Eff: getBotUser :: forall r_a8WsB. MemberWithError CacheEff r_a8WsB => Sem r_a8WsB (Maybe User)
+ Calamity.Cache.Eff: getBotUser :: forall r_a94Oe. MemberWithError CacheEff r_a94Oe => Sem r_a94Oe (Maybe User)
- Calamity.Cache.Eff: getDM :: forall r_a8WsL. MemberWithError CacheEff r_a8WsL => Snowflake DMChannel -> Sem r_a8WsL (Maybe DMChannel)
+ Calamity.Cache.Eff: getDM :: forall r_a94Oo. MemberWithError CacheEff r_a94Oo => Snowflake DMChannel -> Sem r_a94Oo (Maybe DMChannel)
- Calamity.Cache.Eff: getDMs :: forall r_a8WsN. MemberWithError CacheEff r_a8WsN => Sem r_a8WsN [DMChannel]
+ Calamity.Cache.Eff: getDMs :: forall r_a94Oq. MemberWithError CacheEff r_a94Oq => Sem r_a94Oq [DMChannel]
- Calamity.Cache.Eff: getGuild :: forall r_a8WsE. MemberWithError CacheEff r_a8WsE => Snowflake Guild -> Sem r_a8WsE (Maybe Guild)
+ Calamity.Cache.Eff: getGuild :: forall r_a94Oh. MemberWithError CacheEff r_a94Oh => Snowflake Guild -> Sem r_a94Oh (Maybe Guild)
- Calamity.Cache.Eff: getGuilds :: forall r_a8WsG. MemberWithError CacheEff r_a8WsG => Sem r_a8WsG [Guild]
+ Calamity.Cache.Eff: getGuilds :: forall r_a94Oj. MemberWithError CacheEff r_a94Oj => Sem r_a94Oj [Guild]
- Calamity.Cache.Eff: getMessage :: forall r_a8Wt6. MemberWithError CacheEff r_a8Wt6 => Snowflake Message -> Sem r_a8Wt6 (Maybe Message)
+ Calamity.Cache.Eff: getMessage :: forall r_a94OJ. MemberWithError CacheEff r_a94OJ => Snowflake Message -> Sem r_a94OJ (Maybe Message)
- Calamity.Cache.Eff: getMessages :: forall r_a8Wt8. MemberWithError CacheEff r_a8Wt8 => Sem r_a8Wt8 [Message]
+ Calamity.Cache.Eff: getMessages :: forall r_a94OL. MemberWithError CacheEff r_a94OL => Sem r_a94OL [Message]
- Calamity.Cache.Eff: getUnavailableGuilds :: forall r_a8Wt1. MemberWithError CacheEff r_a8Wt1 => Sem r_a8Wt1 [Snowflake Guild]
+ Calamity.Cache.Eff: getUnavailableGuilds :: forall r_a94OE. MemberWithError CacheEff r_a94OE => Sem r_a94OE [Snowflake Guild]
- Calamity.Cache.Eff: getUser :: forall r_a8WsS. MemberWithError CacheEff r_a8WsS => Snowflake User -> Sem r_a8WsS (Maybe User)
+ Calamity.Cache.Eff: getUser :: forall r_a94Ov. MemberWithError CacheEff r_a94Ov => Snowflake User -> Sem r_a94Ov (Maybe User)
- Calamity.Cache.Eff: getUsers :: forall r_a8WsU. MemberWithError CacheEff r_a8WsU => Sem r_a8WsU [User]
+ Calamity.Cache.Eff: getUsers :: forall r_a94Ox. MemberWithError CacheEff r_a94Ox => Sem r_a94Ox [User]
- Calamity.Cache.Eff: isUnavailableGuild :: forall r_a8WsZ. MemberWithError CacheEff r_a8WsZ => Snowflake Guild -> Sem r_a8WsZ Bool
+ Calamity.Cache.Eff: isUnavailableGuild :: forall r_a94OC. MemberWithError CacheEff r_a94OC => Snowflake Guild -> Sem r_a94OC Bool
- Calamity.Cache.Eff: setBotUser :: forall r_a8Wsz. MemberWithError CacheEff r_a8Wsz => User -> Sem r_a8Wsz ()
+ Calamity.Cache.Eff: setBotUser :: forall r_a94Oc. MemberWithError CacheEff r_a94Oc => User -> Sem r_a94Oc ()
- Calamity.Cache.Eff: setDM :: forall r_a8WsJ. MemberWithError CacheEff r_a8WsJ => DMChannel -> Sem r_a8WsJ ()
+ Calamity.Cache.Eff: setDM :: forall r_a94Om. MemberWithError CacheEff r_a94Om => DMChannel -> Sem r_a94Om ()
- Calamity.Cache.Eff: setGuild :: forall r_a8WsC. MemberWithError CacheEff r_a8WsC => Guild -> Sem r_a8WsC ()
+ Calamity.Cache.Eff: setGuild :: forall r_a94Of. MemberWithError CacheEff r_a94Of => Guild -> Sem r_a94Of ()
- Calamity.Cache.Eff: setMessage :: forall r_a8Wt4. MemberWithError CacheEff r_a8Wt4 => Message -> Sem r_a8Wt4 ()
+ Calamity.Cache.Eff: setMessage :: forall r_a94OH. MemberWithError CacheEff r_a94OH => Message -> Sem r_a94OH ()
- Calamity.Cache.Eff: setUnavailableGuild :: forall r_a8WsX. MemberWithError CacheEff r_a8WsX => Snowflake Guild -> Sem r_a8WsX ()
+ Calamity.Cache.Eff: setUnavailableGuild :: forall r_a94OA. MemberWithError CacheEff r_a94OA => Snowflake Guild -> Sem r_a94OA ()
- Calamity.Cache.Eff: setUser :: forall r_a8WsQ. MemberWithError CacheEff r_a8WsQ => User -> Sem r_a8WsQ ()
+ Calamity.Cache.Eff: setUser :: forall r_a94Ot. MemberWithError CacheEff r_a94Ot => User -> Sem r_a94Ot ()
Files
- calamity.cabal +5/−2
- src/Calamity/Client/Client.hs +20/−4
- src/Calamity/HTTP.hs +5/−1
- src/Calamity/HTTP/Channel.hs +3/−4
- src/Calamity/HTTP/Guild.hs +6/−5
- src/Calamity/HTTP/Invite.hs +31/−0
- src/Calamity/HTTP/User.hs +78/−0
- src/Calamity/Types/Model/Channel.hs +2/−0
- src/Calamity/Types/Model/Channel/Webhook.hs +32/−0
calamity.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 25550840a8f69674317309aa4d238d683405902e21b6caa6045ebc08f359593d+-- hash: be510d66d49f55eee979f88e81ccd03d77fc73990d6f0cbc83c7242e64ddeec7 name: calamity-version: 0.1.4.2+version: 0.1.4.3 synopsis: A library for writing discord bots description: Please see the README on GitHub at <https://github.com/nitros12/calamity#readme> category: Network, Web@@ -52,7 +52,9 @@ Calamity.HTTP.Internal.Request Calamity.HTTP.Internal.Route Calamity.HTTP.Internal.Types+ Calamity.HTTP.Invite Calamity.HTTP.MiscRoutes+ Calamity.HTTP.User Calamity.Internal.AesonThings Calamity.Internal.BoundedStore Calamity.Internal.SnowflakeMap@@ -76,6 +78,7 @@ Calamity.Types.Model.Channel.Guild.Voice Calamity.Types.Model.Channel.Message Calamity.Types.Model.Channel.Reaction+ Calamity.Types.Model.Channel.Webhook Calamity.Types.Model.Guild Calamity.Types.Model.Guild.Ban Calamity.Types.Model.Guild.Emoji
src/Calamity/Client/Client.hs view
@@ -1,3 +1,5 @@+{-# OPTIONS_GHC -Wno-name-shadowing #-}+ -- | The client module Calamity.Client.Client ( Client(..)@@ -30,7 +32,6 @@ import Data.Dynamic import Data.Foldable import Data.Maybe-import Data.Time.Clock import Data.Time.Clock.POSIX import Data.Traversable import qualified Data.TypeRepMap as TM@@ -156,7 +157,7 @@ => EventHandlers -> DispatchData -> P.Sem (P.Fail ': r) [P.Sem r ()]-handleEvent' eh evt@(Ready rd@ReadyData { user, guilds }) = do+handleEvent' eh evt@(Ready rd@ReadyData {}) = do updateCache evt pure $ map ($ rd) (unwrapEvent @"ready" eh) @@ -400,7 +401,7 @@ updateCache (GuildMemberUpdate GuildMemberUpdateData { guildID, roles, user, nick }) = do setUser user- updateGuild guildID (#members . at (getID user) . _Just %~ (#roles .~ roles) . (#nick .~ nick))+ updateGuild guildID (#members . ix (getID user) %~ (#roles .~ roles) . (#nick .~ nick)) updateCache (GuildMembersChunk GuildMembersChunkData { members }) = traverse_ (updateCache . GuildMemberAdd) members@@ -439,4 +440,19 @@ updateCache (UserUpdate user) = setBotUser user -updateCache _data' = pure () -- TODO+-- we don't handle group channels currently+updateCache (ChannelCreate (GroupChannel' _)) = pure ()+updateCache (ChannelUpdate (GroupChannel' _)) = pure ()+updateCache (ChannelDelete (GroupChannel' _)) = pure ()++-- these don't modify state+updateCache (GuildBanAdd _) = pure ()+updateCache (GuildBanRemove _) = pure ()+updateCache (GuildIntegrationsUpdate _) = pure ()+updateCache (TypingStart _) = pure ()+updateCache (ChannelPinsUpdate _) = pure ()+updateCache (WebhooksUpdate _) = pure ()++-- we don't handle voice state currently+updateCache (VoiceStateUpdate _) = pure ()+updateCache (VoiceServerUpdate _) = pure ()
src/Calamity/HTTP.hs view
@@ -4,10 +4,14 @@ , module Calamity.HTTP.Channel , module Calamity.HTTP.Emoji , module Calamity.HTTP.Guild- , module Calamity.HTTP.MiscRoutes ) where+ , module Calamity.HTTP.Invite+ , module Calamity.HTTP.MiscRoutes+ , module Calamity.HTTP.User ) where import Calamity.HTTP.Channel import Calamity.HTTP.Emoji import Calamity.HTTP.Guild import Calamity.HTTP.Internal.Request ( invokeRequest )+import Calamity.HTTP.Invite import Calamity.HTTP.MiscRoutes+import Calamity.HTTP.User
src/Calamity/HTTP/Channel.hs view
@@ -40,8 +40,7 @@ , permissionOverwrites :: Maybe [Overwrite] , parentID :: Maybe (Snowflake Channel) }- deriving ( Generic, Show )- deriving anyclass ( Default )+ deriving ( Generic, Show, Default ) deriving ( ToJSON ) via CalamityJSON ChannelUpdate data ChannelMessagesQuery@@ -65,7 +64,7 @@ , after :: Maybe (Snowflake User) , limit :: Maybe Integer }- deriving ( Show )+ deriving ( Show, Generic, Default ) data CreateChannelInviteOptions = CreateChannelInviteOptions { maxAge :: Maybe Int@@ -73,7 +72,7 @@ , temporary :: Maybe Bool , unique :: Maybe Bool }- deriving ( Show, Generic )+ deriving ( Show, Generic, Default ) deriving ( ToJSON ) via CalamityJSON CreateChannelInviteOptions data GroupDMAddRecipientOptions = GroupDMAddRecipientOptions
src/Calamity/HTTP/Guild.hs view
@@ -25,6 +25,7 @@ import Control.Lens hiding ( (.=) ) import Data.Aeson+import Data.Default.Class import Data.Maybe import Data.Text ( Text ) @@ -61,7 +62,7 @@ , banner :: Maybe Text , systemChannelID :: Maybe (Snowflake GuildChannel) }- deriving ( Show, Generic )+ deriving ( Show, Generic, Default ) deriving ( ToJSON ) via CalamityJSON ModifyGuildData data ChannelCreateData = ChannelCreateData@@ -90,7 +91,7 @@ { limit :: Maybe Integer , after :: Maybe (Snowflake User) }- deriving ( Show, Generic )+ deriving ( Show, Generic, Default ) data AddGuildMemberData = AddGuildMemberData { accessToken :: Text@@ -109,14 +110,14 @@ , deaf :: Maybe Bool , channelID :: Maybe (Snowflake VoiceChannel) }- deriving ( Show, Generic )+ deriving ( Show, Generic, Default ) deriving ( ToJSON ) via CalamityJSON ModifyGuildMemberData data CreateGuildBanData = CreateGuildBanData { deleteMessageDays :: Maybe Integer , reason :: Maybe Text }- deriving ( Show, Generic )+ deriving ( Show, Generic, Default ) data ModifyGuildRoleData = ModifyGuildRoleData { name :: Maybe Text@@ -125,7 +126,7 @@ , hoist :: Maybe Bool , mentionable :: Maybe Bool }- deriving ( Show, Generic )+ deriving ( Show, Generic, Default ) deriving ( ToJSON ) via CalamityJSON ModifyGuildRoleData data ModifyGuildRolePositionsData = ModifyGuildRolePositionsData
+ src/Calamity/HTTP/Invite.hs view
@@ -0,0 +1,31 @@+-- | Invite endpoints+module Calamity.HTTP.Invite+ ( InviteRequest(..) ) where++import Calamity.HTTP.Internal.Request+import Calamity.HTTP.Internal.Route+import Calamity.Types.Model.Guild++import Control.Lens hiding ( (.=) )++import Data.Text ( Text )++import Network.Wreq++import TextShow++data InviteRequest a where+ GetInvite :: Text -> InviteRequest Invite+ DeleteInvite :: Text -> InviteRequest ()++baseRoute :: RouteBuilder _+baseRoute = mkRouteBuilder // S "invites"++instance Request (InviteRequest a) a where+ toRoute (GetInvite c) = baseRoute // S c+ & buildRoute+ toRoute (DeleteInvite c) = baseRoute // S c+ & buildRoute++ toAction (GetInvite _) = getWithP (param "with_counts" .~ [showt True])+ toAction (DeleteInvite _) = deleteWith
+ src/Calamity/HTTP/User.hs view
@@ -0,0 +1,78 @@+-- | User endpoints+module Calamity.HTTP.User+ ( UserRequest(..)+ , ModifyUserData(..)+ , GetCurrentUserGuildsOptions(..) ) where++import Calamity.HTTP.Internal.Request+import Calamity.HTTP.Internal.Route+import Calamity.Internal.AesonThings+import Calamity.Types.Model.Channel+import Calamity.Types.Model.Guild+import Calamity.Types.Model.User+import Calamity.Types.Snowflake++import Control.Arrow+import Control.Lens hiding ( (.=) )++import Data.Aeson+import Data.Default.Class+import Data.Maybe+import Data.Text ( Text )++import GHC.Generics++import Network.Wreq++import TextShow++data ModifyUserData = ModifyUserData+ { username :: Maybe Text+ -- | The avatar field should be in discord's image data format: https://discordapp.com/developers/docs/reference#image-data+ , avatar :: Maybe Text+ }+ deriving ( Show, Generic, Default )+ deriving ( ToJSON ) via CalamityJSON ModifyUserData++data GetCurrentUserGuildsOptions = GetCurrentUserGuildsOptions+ { before :: Maybe (Snowflake Guild)+ , after :: Maybe (Snowflake Guild)+ , limit :: Maybe Integer+ }+ deriving ( Show, Generic, Default )++data UserRequest a where+ GetCurrentUser :: UserRequest User+ GetUser :: HasID User u => u -> UserRequest User+ ModifyCurrentUser :: ModifyUserData -> UserRequest User+ GetCurrentUserGuilds :: GetCurrentUserGuildsOptions -> UserRequest [Partial Guild]+ LeaveGuild :: HasID Guild g => g -> UserRequest ()+ CreateDM :: HasID User u => u -> UserRequest DMChannel++baseRoute :: RouteBuilder _+baseRoute = mkRouteBuilder // S "users" // S "@me"++instance Request (UserRequest a) a where+ toRoute GetCurrentUser = baseRoute+ & buildRoute+ toRoute (GetUser (getID @User -> uid)) = mkRouteBuilder // S "users" // ID @User+ & giveID uid+ & buildRoute+ toRoute (ModifyCurrentUser _) = baseRoute+ & buildRoute+ toRoute (GetCurrentUserGuilds _) = baseRoute // S "guilds"+ & buildRoute+ toRoute (LeaveGuild (getID @Guild -> gid)) = baseRoute // S "guilds" // ID @Guild+ & giveID gid+ & buildRoute+ toRoute (CreateDM _) = baseRoute // S "channels"+ & buildRoute++ toAction GetCurrentUser = getWith+ toAction (GetUser _) = getWith+ toAction (ModifyCurrentUser o) = patchWith' (toJSON o)+ toAction (GetCurrentUserGuilds GetCurrentUserGuildsOptions { before, after, limit }) = getWithP+ (param "before" .~ maybeToList (showt <$> before) >>> param "after" .~ maybeToList (showt <$> after) >>> param+ "limit" .~ maybeToList (showt <$> limit))+ toAction (LeaveGuild _) = deleteWith+ toAction (CreateDM (getID @User -> uid)) = postWith' (object ["recipient_id" .= uid])
src/Calamity/Types/Model/Channel.hs view
@@ -7,6 +7,7 @@ , module Calamity.Types.Model.Channel.Guild , module Calamity.Types.Model.Channel.Attachment , module Calamity.Types.Model.Channel.Reaction+ , module Calamity.Types.Model.Channel.Webhook , module Calamity.Types.Model.Channel.Embed , module Calamity.Types.Model.Channel.ChannelType , module Calamity.Types.Model.Channel.Message ) where@@ -20,6 +21,7 @@ import Calamity.Types.Model.Channel.Guild import {-# SOURCE #-} Calamity.Types.Model.Channel.Message hiding ( UpdatedMessage ) import Calamity.Types.Model.Channel.Reaction+import Calamity.Types.Model.Channel.Webhook import Calamity.Types.Partial import Calamity.Types.Snowflake
+ src/Calamity/Types/Model/Channel/Webhook.hs view
@@ -0,0 +1,32 @@+-- | Channel webhooks+module Calamity.Types.Model.Channel.Webhook+ ( Webhook(..) ) where++import Calamity.Internal.AesonThings+import {-# SOURCE #-} Calamity.Types.Model.Channel+import {-# SOURCE #-} Calamity.Types.Model.Guild.Guild+import Calamity.Types.Model.User+import Calamity.Types.Snowflake++import Data.Aeson+import Data.Text.Lazy ( Text )++import GHC.Generics++import TextShow+import qualified TextShow.Generic as TSG++data Webhook = Webhook+ { id :: Snowflake Webhook+ , type_ :: Integer+ , guildID :: Maybe (Snowflake Guild)+ , channelID :: Maybe (Snowflake Channel)+ , user :: Maybe (Snowflake User)+ , name :: Text+ , avatar :: Text+ , token :: Maybe Text+ }+ deriving ( Eq, Show, Generic )+ deriving ( TextShow ) via TSG.FromGeneric Webhook+ deriving ( FromJSON ) via WithSpecialCases '["user" `ExtractField` "id"] Webhook+ deriving ( HasID Webhook ) via HasIDField "id" Webhook