calamity 0.1.28.2 → 0.1.28.3
raw patch · 4 files changed
+16/−12 lines, 4 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Calamity.Cache.Eff: delDM :: forall r_a9tNM. MemberWithError CacheEff r_a9tNM => Snowflake DMChannel -> Sem r_a9tNM ()
+ Calamity.Cache.Eff: delDM :: forall r_a9tNC. MemberWithError CacheEff r_a9tNC => Snowflake DMChannel -> Sem r_a9tNC ()
- Calamity.Cache.Eff: delGuild :: forall r_a9tNF. MemberWithError CacheEff r_a9tNF => Snowflake Guild -> Sem r_a9tNF ()
+ Calamity.Cache.Eff: delGuild :: forall r_a9tNv. MemberWithError CacheEff r_a9tNv => Snowflake Guild -> Sem r_a9tNv ()
- Calamity.Cache.Eff: delMessage :: forall r_a9tO7. MemberWithError CacheEff r_a9tO7 => Snowflake Message -> Sem r_a9tO7 ()
+ Calamity.Cache.Eff: delMessage :: forall r_a9tNX. MemberWithError CacheEff r_a9tNX => Snowflake Message -> Sem r_a9tNX ()
- Calamity.Cache.Eff: delUnavailableGuild :: forall r_a9tO0. MemberWithError CacheEff r_a9tO0 => Snowflake Guild -> Sem r_a9tO0 ()
+ Calamity.Cache.Eff: delUnavailableGuild :: forall r_a9tNQ. MemberWithError CacheEff r_a9tNQ => Snowflake Guild -> Sem r_a9tNQ ()
- Calamity.Cache.Eff: delUser :: forall r_a9tNT. MemberWithError CacheEff r_a9tNT => Snowflake User -> Sem r_a9tNT ()
+ Calamity.Cache.Eff: delUser :: forall r_a9tNJ. MemberWithError CacheEff r_a9tNJ => Snowflake User -> Sem r_a9tNJ ()
- Calamity.Cache.Eff: getBotUser :: forall r_a9tNx. MemberWithError CacheEff r_a9tNx => Sem r_a9tNx (Maybe User)
+ Calamity.Cache.Eff: getBotUser :: forall r_a9tNn. MemberWithError CacheEff r_a9tNn => Sem r_a9tNn (Maybe User)
- Calamity.Cache.Eff: getDM :: forall r_a9tNJ. MemberWithError CacheEff r_a9tNJ => Snowflake DMChannel -> Sem r_a9tNJ (Maybe DMChannel)
+ Calamity.Cache.Eff: getDM :: forall r_a9tNz. MemberWithError CacheEff r_a9tNz => Snowflake DMChannel -> Sem r_a9tNz (Maybe DMChannel)
- Calamity.Cache.Eff: getDMs :: forall r_a9tNL. MemberWithError CacheEff r_a9tNL => Sem r_a9tNL [DMChannel]
+ Calamity.Cache.Eff: getDMs :: forall r_a9tNB. MemberWithError CacheEff r_a9tNB => Sem r_a9tNB [DMChannel]
- Calamity.Cache.Eff: getGuild :: forall r_a9tNA. MemberWithError CacheEff r_a9tNA => Snowflake Guild -> Sem r_a9tNA (Maybe Guild)
+ Calamity.Cache.Eff: getGuild :: forall r_a9tNq. MemberWithError CacheEff r_a9tNq => Snowflake Guild -> Sem r_a9tNq (Maybe Guild)
- Calamity.Cache.Eff: getGuildChannel :: forall r_a9tNC. MemberWithError CacheEff r_a9tNC => Snowflake GuildChannel -> Sem r_a9tNC (Maybe GuildChannel)
+ Calamity.Cache.Eff: getGuildChannel :: forall r_a9tNs. MemberWithError CacheEff r_a9tNs => Snowflake GuildChannel -> Sem r_a9tNs (Maybe GuildChannel)
- Calamity.Cache.Eff: getGuilds :: forall r_a9tNE. MemberWithError CacheEff r_a9tNE => Sem r_a9tNE [Guild]
+ Calamity.Cache.Eff: getGuilds :: forall r_a9tNu. MemberWithError CacheEff r_a9tNu => Sem r_a9tNu [Guild]
- Calamity.Cache.Eff: getMessage :: forall r_a9tO4. MemberWithError CacheEff r_a9tO4 => Snowflake Message -> Sem r_a9tO4 (Maybe Message)
+ Calamity.Cache.Eff: getMessage :: forall r_a9tNU. MemberWithError CacheEff r_a9tNU => Snowflake Message -> Sem r_a9tNU (Maybe Message)
- Calamity.Cache.Eff: getMessages :: forall r_a9tO6. MemberWithError CacheEff r_a9tO6 => Sem r_a9tO6 [Message]
+ Calamity.Cache.Eff: getMessages :: forall r_a9tNW. MemberWithError CacheEff r_a9tNW => Sem r_a9tNW [Message]
- Calamity.Cache.Eff: getUnavailableGuilds :: forall r_a9tNZ. MemberWithError CacheEff r_a9tNZ => Sem r_a9tNZ [Snowflake Guild]
+ Calamity.Cache.Eff: getUnavailableGuilds :: forall r_a9tNP. MemberWithError CacheEff r_a9tNP => Sem r_a9tNP [Snowflake Guild]
- Calamity.Cache.Eff: getUser :: forall r_a9tNQ. MemberWithError CacheEff r_a9tNQ => Snowflake User -> Sem r_a9tNQ (Maybe User)
+ Calamity.Cache.Eff: getUser :: forall r_a9tNG. MemberWithError CacheEff r_a9tNG => Snowflake User -> Sem r_a9tNG (Maybe User)
- Calamity.Cache.Eff: getUsers :: forall r_a9tNS. MemberWithError CacheEff r_a9tNS => Sem r_a9tNS [User]
+ Calamity.Cache.Eff: getUsers :: forall r_a9tNI. MemberWithError CacheEff r_a9tNI => Sem r_a9tNI [User]
- Calamity.Cache.Eff: isUnavailableGuild :: forall r_a9tNX. MemberWithError CacheEff r_a9tNX => Snowflake Guild -> Sem r_a9tNX Bool
+ Calamity.Cache.Eff: isUnavailableGuild :: forall r_a9tNN. MemberWithError CacheEff r_a9tNN => Snowflake Guild -> Sem r_a9tNN Bool
- Calamity.Cache.Eff: setBotUser :: forall r_a9tNv. MemberWithError CacheEff r_a9tNv => User -> Sem r_a9tNv ()
+ Calamity.Cache.Eff: setBotUser :: forall r_a9tNl. MemberWithError CacheEff r_a9tNl => User -> Sem r_a9tNl ()
- Calamity.Cache.Eff: setDM :: forall r_a9tNH. MemberWithError CacheEff r_a9tNH => DMChannel -> Sem r_a9tNH ()
+ Calamity.Cache.Eff: setDM :: forall r_a9tNx. MemberWithError CacheEff r_a9tNx => DMChannel -> Sem r_a9tNx ()
- Calamity.Cache.Eff: setGuild :: forall r_a9tNy. MemberWithError CacheEff r_a9tNy => Guild -> Sem r_a9tNy ()
+ Calamity.Cache.Eff: setGuild :: forall r_a9tNo. MemberWithError CacheEff r_a9tNo => Guild -> Sem r_a9tNo ()
- Calamity.Cache.Eff: setMessage :: forall r_a9tO2. MemberWithError CacheEff r_a9tO2 => Message -> Sem r_a9tO2 ()
+ Calamity.Cache.Eff: setMessage :: forall r_a9tNS. MemberWithError CacheEff r_a9tNS => Message -> Sem r_a9tNS ()
- Calamity.Cache.Eff: setUnavailableGuild :: forall r_a9tNV. MemberWithError CacheEff r_a9tNV => Snowflake Guild -> Sem r_a9tNV ()
+ Calamity.Cache.Eff: setUnavailableGuild :: forall r_a9tNL. MemberWithError CacheEff r_a9tNL => Snowflake Guild -> Sem r_a9tNL ()
- Calamity.Cache.Eff: setUser :: forall r_a9tNO. MemberWithError CacheEff r_a9tNO => User -> Sem r_a9tNO ()
+ Calamity.Cache.Eff: setUser :: forall r_a9tNE. MemberWithError CacheEff r_a9tNE => User -> Sem r_a9tNE ()
- Calamity.HTTP.Internal.Types: Good :: ByteString -> BucketState -> ByteString -> DiscordResponseType
+ Calamity.HTTP.Internal.Types: Good :: ByteString -> Maybe (BucketState, ByteString) -> DiscordResponseType
Files
- Calamity/HTTP/Internal/Ratelimit.hs +7/−7
- Calamity/HTTP/Internal/Types.hs +2/−3
- ChangeLog.md +5/−0
- calamity.cabal +2/−2
Calamity/HTTP/Internal/Ratelimit.hs view
@@ -211,11 +211,8 @@ let resp = responseBody r' debug $ "Got good response from discord: " +|| status ||+ "" now <- P.embed getCurrentTime- case buildBucketState now r' of- Just (!bs, !key) ->- pure $ Good resp bs key- Nothing ->- pure $ ServerError (statusCode status)+ let rlHeaders = buildBucketState now r'+ pure $ Good resp rlHeaders | status == status429 -> do now <- P.embed getCurrentTime let resp = responseBody r'@@ -334,13 +331,16 @@ r' <- doDiscordRequest r case r' of- Good v bs bk -> do+ Good v rlHeaders -> do void . P.embed . atomically $ do case rl of KnownRatelimit bucket -> modifyTVar' (bucket ^. #state) (#ongoing -~ 1) _ -> pure ()- updateBucket rlstate route bk bs+ case rlHeaders of+ Just (bs, bk) ->+ void $ updateBucket rlstate route bk bs+ Nothing -> pure () pure $ RGood v Ratelimited unlockWhen False (Just (bs, bk)) -> do debug $ "429 ratelimited on route, retrying at " +| unlockWhen |+ ""
Calamity/HTTP/Internal/Types.hs view
@@ -66,9 +66,8 @@ = Good -- ^ A good response LB.ByteString- BucketState- B.ByteString- -- ^ The bucket the route is in+ (Maybe (BucketState, B.ByteString))+ -- ^ The ratelimit headers if we got them | Ratelimited -- ^ We hit a 429, no response and ratelimited UTCTime
ChangeLog.md view
@@ -1,5 +1,10 @@ # Changelog for Calamity +## 0.1.28.3+++ Fix HTTP responses from discord that don't have ratelimit info being treated+ as errors.+ ## 0.1.28.2 + Correct the emoji HTTP endpoints to work with `CustomEmoji`s
calamity.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 83f8a2a236db8e2db8a1000d7a922dc0ad1f4c27ec148e6c0776bdb2fb3be4ae+-- hash: 3ef864682cfb94fce9b938cf2c9b2cf32ac1170e904fb5fd492abf28259a6c81 name: calamity-version: 0.1.28.2+version: 0.1.28.3 synopsis: A library for writing discord bots in haskell description: Please see the README on GitHub at <https://github.com/simmsb/calamity#readme> category: Network, Web