calamity 0.1.14.6 → 0.1.14.7
raw patch · 6 files changed
+109/−49 lines, 6 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Calamity.Commands.Parser: instance (GHC.Base.Monoid (Calamity.Commands.Parser.ParserResult a), Calamity.Commands.Parser.Parser a r) => Calamity.Commands.Parser.Parser (Calamity.Commands.Parser.KleenePlusConcat a) r
- Calamity.HTTP.AuditLog: instance Data.Aeson.Types.ToJSON.ToJSON Calamity.HTTP.AuditLog.GetAuditLogOptions
+ Calamity.Commands.Parser: instance (GHC.Base.Semigroup (Calamity.Commands.Parser.ParserResult a), Calamity.Commands.Parser.Parser a r) => Calamity.Commands.Parser.Parser (Calamity.Commands.Parser.KleenePlusConcat a) r
+ Calamity.Types.Model.Guild.AuditLog: instance GHC.Enum.Enum Calamity.Types.Model.Guild.AuditLog.AuditLogAction
- Calamity.Cache.Eff: delDM :: forall r_a9wF3. MemberWithError CacheEff r_a9wF3 => Snowflake DMChannel -> Sem r_a9wF3 ()
+ Calamity.Cache.Eff: delDM :: forall r_a9wXn. MemberWithError CacheEff r_a9wXn => Snowflake DMChannel -> Sem r_a9wXn ()
- Calamity.Cache.Eff: delGuild :: forall r_a9wEW. MemberWithError CacheEff r_a9wEW => Snowflake Guild -> Sem r_a9wEW ()
+ Calamity.Cache.Eff: delGuild :: forall r_a9wXg. MemberWithError CacheEff r_a9wXg => Snowflake Guild -> Sem r_a9wXg ()
- Calamity.Cache.Eff: delMessage :: forall r_a9wFo. MemberWithError CacheEff r_a9wFo => Snowflake Message -> Sem r_a9wFo ()
+ Calamity.Cache.Eff: delMessage :: forall r_a9wXI. MemberWithError CacheEff r_a9wXI => Snowflake Message -> Sem r_a9wXI ()
- Calamity.Cache.Eff: delUnavailableGuild :: forall r_a9wFh. MemberWithError CacheEff r_a9wFh => Snowflake Guild -> Sem r_a9wFh ()
+ Calamity.Cache.Eff: delUnavailableGuild :: forall r_a9wXB. MemberWithError CacheEff r_a9wXB => Snowflake Guild -> Sem r_a9wXB ()
- Calamity.Cache.Eff: delUser :: forall r_a9wFa. MemberWithError CacheEff r_a9wFa => Snowflake User -> Sem r_a9wFa ()
+ Calamity.Cache.Eff: delUser :: forall r_a9wXu. MemberWithError CacheEff r_a9wXu => Snowflake User -> Sem r_a9wXu ()
- Calamity.Cache.Eff: getBotUser :: forall r_a9wEO. MemberWithError CacheEff r_a9wEO => Sem r_a9wEO (Maybe User)
+ Calamity.Cache.Eff: getBotUser :: forall r_a9wX8. MemberWithError CacheEff r_a9wX8 => Sem r_a9wX8 (Maybe User)
- Calamity.Cache.Eff: getDM :: forall r_a9wF0. MemberWithError CacheEff r_a9wF0 => Snowflake DMChannel -> Sem r_a9wF0 (Maybe DMChannel)
+ Calamity.Cache.Eff: getDM :: forall r_a9wXk. MemberWithError CacheEff r_a9wXk => Snowflake DMChannel -> Sem r_a9wXk (Maybe DMChannel)
- Calamity.Cache.Eff: getDMs :: forall r_a9wF2. MemberWithError CacheEff r_a9wF2 => Sem r_a9wF2 [DMChannel]
+ Calamity.Cache.Eff: getDMs :: forall r_a9wXm. MemberWithError CacheEff r_a9wXm => Sem r_a9wXm [DMChannel]
- Calamity.Cache.Eff: getGuild :: forall r_a9wER. MemberWithError CacheEff r_a9wER => Snowflake Guild -> Sem r_a9wER (Maybe Guild)
+ Calamity.Cache.Eff: getGuild :: forall r_a9wXb. MemberWithError CacheEff r_a9wXb => Snowflake Guild -> Sem r_a9wXb (Maybe Guild)
- Calamity.Cache.Eff: getGuildChannel :: forall r_a9wET. MemberWithError CacheEff r_a9wET => Snowflake GuildChannel -> Sem r_a9wET (Maybe GuildChannel)
+ Calamity.Cache.Eff: getGuildChannel :: forall r_a9wXd. MemberWithError CacheEff r_a9wXd => Snowflake GuildChannel -> Sem r_a9wXd (Maybe GuildChannel)
- Calamity.Cache.Eff: getGuilds :: forall r_a9wEV. MemberWithError CacheEff r_a9wEV => Sem r_a9wEV [Guild]
+ Calamity.Cache.Eff: getGuilds :: forall r_a9wXf. MemberWithError CacheEff r_a9wXf => Sem r_a9wXf [Guild]
- Calamity.Cache.Eff: getMessage :: forall r_a9wFl. MemberWithError CacheEff r_a9wFl => Snowflake Message -> Sem r_a9wFl (Maybe Message)
+ Calamity.Cache.Eff: getMessage :: forall r_a9wXF. MemberWithError CacheEff r_a9wXF => Snowflake Message -> Sem r_a9wXF (Maybe Message)
- Calamity.Cache.Eff: getMessages :: forall r_a9wFn. MemberWithError CacheEff r_a9wFn => Sem r_a9wFn [Message]
+ Calamity.Cache.Eff: getMessages :: forall r_a9wXH. MemberWithError CacheEff r_a9wXH => Sem r_a9wXH [Message]
- Calamity.Cache.Eff: getUnavailableGuilds :: forall r_a9wFg. MemberWithError CacheEff r_a9wFg => Sem r_a9wFg [Snowflake Guild]
+ Calamity.Cache.Eff: getUnavailableGuilds :: forall r_a9wXA. MemberWithError CacheEff r_a9wXA => Sem r_a9wXA [Snowflake Guild]
- Calamity.Cache.Eff: getUser :: forall r_a9wF7. MemberWithError CacheEff r_a9wF7 => Snowflake User -> Sem r_a9wF7 (Maybe User)
+ Calamity.Cache.Eff: getUser :: forall r_a9wXr. MemberWithError CacheEff r_a9wXr => Snowflake User -> Sem r_a9wXr (Maybe User)
- Calamity.Cache.Eff: getUsers :: forall r_a9wF9. MemberWithError CacheEff r_a9wF9 => Sem r_a9wF9 [User]
+ Calamity.Cache.Eff: getUsers :: forall r_a9wXt. MemberWithError CacheEff r_a9wXt => Sem r_a9wXt [User]
- Calamity.Cache.Eff: isUnavailableGuild :: forall r_a9wFe. MemberWithError CacheEff r_a9wFe => Snowflake Guild -> Sem r_a9wFe Bool
+ Calamity.Cache.Eff: isUnavailableGuild :: forall r_a9wXy. MemberWithError CacheEff r_a9wXy => Snowflake Guild -> Sem r_a9wXy Bool
- Calamity.Cache.Eff: setBotUser :: forall r_a9wEM. MemberWithError CacheEff r_a9wEM => User -> Sem r_a9wEM ()
+ Calamity.Cache.Eff: setBotUser :: forall r_a9wX6. MemberWithError CacheEff r_a9wX6 => User -> Sem r_a9wX6 ()
- Calamity.Cache.Eff: setDM :: forall r_a9wEY. MemberWithError CacheEff r_a9wEY => DMChannel -> Sem r_a9wEY ()
+ Calamity.Cache.Eff: setDM :: forall r_a9wXi. MemberWithError CacheEff r_a9wXi => DMChannel -> Sem r_a9wXi ()
- Calamity.Cache.Eff: setGuild :: forall r_a9wEP. MemberWithError CacheEff r_a9wEP => Guild -> Sem r_a9wEP ()
+ Calamity.Cache.Eff: setGuild :: forall r_a9wX9. MemberWithError CacheEff r_a9wX9 => Guild -> Sem r_a9wX9 ()
- Calamity.Cache.Eff: setMessage :: forall r_a9wFj. MemberWithError CacheEff r_a9wFj => Message -> Sem r_a9wFj ()
+ Calamity.Cache.Eff: setMessage :: forall r_a9wXD. MemberWithError CacheEff r_a9wXD => Message -> Sem r_a9wXD ()
- Calamity.Cache.Eff: setUnavailableGuild :: forall r_a9wFc. MemberWithError CacheEff r_a9wFc => Snowflake Guild -> Sem r_a9wFc ()
+ Calamity.Cache.Eff: setUnavailableGuild :: forall r_a9wXw. MemberWithError CacheEff r_a9wXw => Snowflake Guild -> Sem r_a9wXw ()
- Calamity.Cache.Eff: setUser :: forall r_a9wF5. MemberWithError CacheEff r_a9wF5 => User -> Sem r_a9wF5 ()
+ Calamity.Cache.Eff: setUser :: forall r_a9wXp. MemberWithError CacheEff r_a9wXp => User -> Sem r_a9wXp ()
- Calamity.Commands.ParsePrefix: parsePrefix :: forall r_a79QD. MemberWithError ParsePrefix r_a79QD => Message -> Sem r_a79QD (Maybe (Text, Text))
+ Calamity.Commands.ParsePrefix: parsePrefix :: forall r_a7a8X. MemberWithError ParsePrefix r_a7a8X => Message -> Sem r_a7a8X (Maybe (Text, Text))
- Calamity.HTTP.AuditLog: [GetAuditLog] :: HasID Guild g => g -> AuditLogRequest AuditLog
+ Calamity.HTTP.AuditLog: [GetAuditLog] :: HasID Guild g => g -> GetAuditLogOptions -> AuditLogRequest AuditLog
Files
- ChangeLog.md +6/−0
- calamity.cabal +2/−2
- src/Calamity/Commands/Parser.hs +7/−1
- src/Calamity/HTTP/AuditLog.hs +13/−7
- src/Calamity/HTTP/Channel.hs +3/−2
- src/Calamity/Types/Model/Guild/AuditLog.hs +78/−37
ChangeLog.md view
@@ -1,5 +1,11 @@ # Changelog for Calamity +## 0.1.14.7++*2020-06-21*++* Fix missing usage of GetAuditLogOptions in GetAuditLog+ ## 0.1.14.6 *2020-06-18*
calamity.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 2086b0049d6b378a9ae414918e814465d2f693c8c0d59cd2ab0c6817275ccc30+-- hash: 8d7e2384272bd3170cf997e20fa3c1aa01a622aa2f515fda81b9cde2ee1dd641 name: calamity-version: 0.1.14.6+version: 0.1.14.7 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/Parser.hs view
@@ -174,7 +174,7 @@ -- @'KleenePlusConcat' 'L.Text'@ Is therefore consumes all remaining input. data KleenePlusConcat (a :: Type) -instance (Monoid (ParserResult a), Parser a r) => Parser (KleenePlusConcat a) r where+instance (Semigroup (ParserResult a), Parser a r) => Parser (KleenePlusConcat a) r where type ParserResult (KleenePlusConcat a) = ParserResult a parse = sconcat <$> parse @(NonEmpty a)@@ -194,18 +194,23 @@ instance Typeable (Snowflake a) => Parser (Snowflake a) r where parse = parseMP (parserName @(Snowflake a)) snowflake +-- | Accepts both plain IDs and mentions instance {-# OVERLAPS #-}Parser (Snowflake User) r where parse = parseMP (parserName @(Snowflake User)) (try (ping "@") <|> snowflake) +-- | Accepts both plain IDs and mentions instance {-# OVERLAPS #-}Parser (Snowflake Member) r where parse = parseMP (parserName @(Snowflake Member)) (try (ping "@") <|> snowflake) +-- | Accepts both plain IDs and mentions instance {-# OVERLAPS #-}Parser (Snowflake Channel) r where parse = parseMP (parserName @(Snowflake Channel)) (try (ping "#") <|> snowflake) +-- | Accepts both plain IDs and mentions instance {-# OVERLAPS #-}Parser (Snowflake Role) r where parse = parseMP (parserName @(Snowflake Role)) (try (ping "@&") <|> snowflake) +-- | Accepts both plain IDs and uses of emoji instance {-# OVERLAPS #-}Parser (Snowflake Emoji) r where parse = parseMP (parserName @(Snowflake Emoji)) (try emoji <|> snowflake) @@ -273,6 +278,7 @@ ctx <- P.ask pure $ ctx ^? #guild . _Just . #emojis . ix eid) +-- | Parses both discord emojis, and unicode emojis instance Parser RawEmoji r where parse = parseMP (parserName @RawEmoji) (try parseCustomEmoji <|> (UnicodeEmoji <$> takeP (Just "A unicode emoji") 1)) where parseCustomEmoji = CustomEmoji <$> partialEmoji
src/Calamity/HTTP/AuditLog.hs view
@@ -5,20 +5,23 @@ import Calamity.HTTP.Internal.Request import Calamity.HTTP.Internal.Route-import Calamity.Internal.AesonThings import Calamity.Internal.Utils () import Calamity.Types.Model.Guild import Calamity.Types.Model.User import Calamity.Types.Snowflake -import Data.Aeson+import Control.Lens+import Control.Arrow ( (>>>) )+ import Data.Default.Class-import Data.Function+import Data.Maybe ( maybeToList ) import GHC.Generics import Network.Wreq +import TextShow ( showt )+ data GetAuditLogOptions = GetAuditLogOptions { userID :: Maybe (Snowflake User) , actionType :: Maybe AuditLogAction@@ -26,16 +29,19 @@ , limit :: Maybe Integer } deriving ( Show, Generic, Default )- deriving ( ToJSON ) via CalamityJSON GetAuditLogOptions data AuditLogRequest a where- GetAuditLog :: HasID Guild g => g -> AuditLogRequest AuditLog+ GetAuditLog :: HasID Guild g => g -> GetAuditLogOptions -> AuditLogRequest AuditLog instance Request (AuditLogRequest a) where type Result (AuditLogRequest a) = a - route (GetAuditLog (getID @Guild -> gid)) = mkRouteBuilder // S "guilds" // ID @Guild // S "audit-logs"+ route (GetAuditLog (getID @Guild -> gid) _) = mkRouteBuilder // S "guilds" // ID @Guild // S "audit-logs" & giveID gid & buildRoute - action (GetAuditLog _) = getWith+ action (GetAuditLog _ GetAuditLogOptions { userID, actionType, before, limit }) = getWithP+ (param "user_id" .~ maybeToList (showt <$> userID) >>>+ param "action_type" .~ maybeToList (showt .fromEnum <$> actionType) >>>+ param "before" .~ maybeToList (showt <$> before) >>>+ param "limit" .~ maybeToList (showt <$> limit))
src/Calamity/HTTP/Channel.hs view
@@ -257,8 +257,9 @@ action DeleteOwnReaction {} = deleteWith action DeleteUserReaction {} = deleteWith action (GetReactions _ _ _ GetReactionsOptions { before, after, limit }) = getWithP- (param "before" .~ maybeToList (showt <$> before) >>> param "after" .~ maybeToList (showt <$> after) >>> param- "limit" .~ maybeToList (showt <$> limit))+ (param "before" .~ maybeToList (showt <$> before) >>>+ param "after" .~ maybeToList (showt <$> after) >>>+ param "limit" .~ maybeToList (showt <$> limit)) action (DeleteAllReactions _ _) = deleteWith action (EditMessage _ _ content embed) = patchWith' (object ["content" .= content, "embed" .= embed]) action (DeleteMessage _ _) = deleteWith
src/Calamity/Types/Model/Guild/AuditLog.hs view
@@ -107,9 +107,85 @@ deriving ( Show, Generic ) deriving ( TextShow ) via TSG.FromGeneric AuditLogAction +instance Enum AuditLogAction where+ toEnum v = case v of+ 1 -> GUILD_UPDATE+ 10 -> CHANNEL_CREATE+ 11 -> CHANNEL_UPDATE+ 12 -> CHANNEL_DELETE+ 13 -> CHANNEL_OVERWRITE_CREATE+ 14 -> CHANNEL_OVERWRITE_UPDATE+ 15 -> CHANNEL_OVERWRITE_DELETE+ 20 -> MEMBER_KICK+ 21 -> MEMBER_PRUNE+ 22 -> MEMBER_BAN_ADD+ 23 -> MEMBER_BAN_REMOVE+ 24 -> MEMBER_UPDATE+ 25 -> MEMBER_ROLE_UPDATE+ 26 -> MEMBER_MOVE+ 27 -> MEMBER_DISCONNECT+ 28 -> BOT_ADD+ 30 -> ROLE_CREATE+ 31 -> ROLE_UPDATE+ 32 -> ROLE_DELETE+ 40 -> INVITE_CREATE+ 41 -> INVITE_UPDATE+ 42 -> INVITE_DELETE+ 50 -> WEBHOOK_CREATE+ 51 -> WEBHOOK_UPDATE+ 52 -> WEBHOOK_DELETE+ 60 -> EMOJI_CREATE+ 61 -> EMOJI_UPDATE+ 62 -> EMOJI_DELETE+ 72 -> MESSAGE_DELETE+ 73 -> MESSAGE_BULK_DELETE+ 74 -> MESSAGE_PIN+ 75 -> MESSAGE_UNPIN+ 80 -> INTEGRATION_CREATE+ 81 -> INTEGRATION_UPDATE+ 82 -> INTEGRATION_DELETE+ _ -> error $ "Invalid AuditLogAction: " <> show v++ fromEnum v = case v of+ GUILD_UPDATE -> 1+ CHANNEL_CREATE -> 10+ CHANNEL_UPDATE -> 11+ CHANNEL_DELETE -> 12+ CHANNEL_OVERWRITE_CREATE -> 13+ CHANNEL_OVERWRITE_UPDATE -> 14+ CHANNEL_OVERWRITE_DELETE -> 15+ MEMBER_KICK -> 20+ MEMBER_PRUNE -> 21+ MEMBER_BAN_ADD -> 22+ MEMBER_BAN_REMOVE -> 23+ MEMBER_UPDATE -> 24+ MEMBER_ROLE_UPDATE -> 25+ MEMBER_MOVE -> 26+ MEMBER_DISCONNECT -> 27+ BOT_ADD -> 28+ ROLE_CREATE -> 30+ ROLE_UPDATE -> 31+ ROLE_DELETE -> 32+ INVITE_CREATE -> 40+ INVITE_UPDATE -> 41+ INVITE_DELETE -> 42+ WEBHOOK_CREATE -> 50+ WEBHOOK_UPDATE -> 51+ WEBHOOK_DELETE -> 52+ EMOJI_CREATE -> 60+ EMOJI_UPDATE -> 61+ EMOJI_DELETE -> 62+ MESSAGE_DELETE -> 72+ MESSAGE_BULK_DELETE -> 73+ MESSAGE_PIN -> 74+ MESSAGE_UNPIN -> 75+ INTEGRATION_CREATE -> 80+ INTEGRATION_UPDATE -> 81+ INTEGRATION_DELETE -> 82+ instance FromJSON AuditLogAction where parseJSON = withScientific "AuditLogAction" $ \n -> case toBoundedInteger @Int n of- Just v -> case v of+ Just v -> case v of -- no safe toEnum :S 1 -> pure GUILD_UPDATE 10 -> pure CHANNEL_CREATE 11 -> pure CHANNEL_UPDATE@@ -149,39 +225,4 @@ Nothing -> fail $ "Invalid AuditLogAction: " <> show n instance ToJSON AuditLogAction where- toJSON x = toJSON @Int $ case x of- GUILD_UPDATE -> 1- CHANNEL_CREATE -> 10- CHANNEL_UPDATE -> 11- CHANNEL_DELETE -> 12- CHANNEL_OVERWRITE_CREATE -> 13- CHANNEL_OVERWRITE_UPDATE -> 14- CHANNEL_OVERWRITE_DELETE -> 15- MEMBER_KICK -> 20- MEMBER_PRUNE -> 21- MEMBER_BAN_ADD -> 22- MEMBER_BAN_REMOVE -> 23- MEMBER_UPDATE -> 24- MEMBER_ROLE_UPDATE -> 25- MEMBER_MOVE -> 26- MEMBER_DISCONNECT -> 27- BOT_ADD -> 28- ROLE_CREATE -> 30- ROLE_UPDATE -> 31- ROLE_DELETE -> 32- INVITE_CREATE -> 40- INVITE_UPDATE -> 41- INVITE_DELETE -> 42- WEBHOOK_CREATE -> 50- WEBHOOK_UPDATE -> 51- WEBHOOK_DELETE -> 52- EMOJI_CREATE -> 60- EMOJI_UPDATE -> 61- EMOJI_DELETE -> 62- MESSAGE_DELETE -> 72- MESSAGE_BULK_DELETE -> 73- MESSAGE_PIN -> 74- MESSAGE_UNPIN -> 75- INTEGRATION_CREATE -> 80- INTEGRATION_UPDATE -> 81- INTEGRATION_DELETE -> 82+ toJSON = toJSON @Int . fromEnum