packages feed

calamity 0.1.11.2 → 0.1.12.0

raw patch · 4 files changed

+41/−13 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Calamity.Client.Types: GuildCreateAvailable :: GuildCreateStatus
+ Calamity.Client.Types: GuildCreateNew :: GuildCreateStatus
+ Calamity.Client.Types: GuildDeleteRemoved :: GuildDeleteStatus
+ Calamity.Client.Types: GuildDeleteUnavailable :: GuildDeleteStatus
+ Calamity.Client.Types: data GuildCreateStatus
+ Calamity.Client.Types: data GuildDeleteStatus
+ Calamity.Client.Types: instance GHC.Generics.Generic Calamity.Client.Types.GuildCreateStatus
+ Calamity.Client.Types: instance GHC.Generics.Generic Calamity.Client.Types.GuildDeleteStatus
+ Calamity.Client.Types: instance GHC.Show.Show Calamity.Client.Types.GuildCreateStatus
+ Calamity.Client.Types: instance GHC.Show.Show Calamity.Client.Types.GuildDeleteStatus
+ Calamity.Client.Types: instance TextShow.Classes.TextShow Calamity.Client.Types.GuildCreateStatus
+ Calamity.Client.Types: instance TextShow.Classes.TextShow Calamity.Client.Types.GuildDeleteStatus

Files

ChangeLog.md view
@@ -1,5 +1,12 @@ # Changelog for Calamity +## 0.1.12.0++*2020-06-06*++* Changed some events to take enums instead of booleans: `GuildCreateEvt` and+  `GuildDeleteEvt`.+ ## 0.1.11.2  *2020-06-03*
calamity.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: ba16c0e978455ebd1dd04a85ba656738289d036e6dfe9e45b55d5843d6511fab+-- hash: dc8569a5fcc9d4c838ce504e002cc38a1016ff3089378cbf8437b12f4f6c4e60  name:           calamity-version:        0.1.11.2+version:        0.1.12.0 synopsis:       A library for writing discord bots description:    Please see the README on GitHub at <https://github.com/nitros12/calamity#readme> category:       Network, Web
src/Calamity/Client/Client.hs view
@@ -409,10 +409,11 @@ --   pure $ map (\f -> f chan lastPinTimestamp) (getEventHandlers @"channelpinsupdate" eh)  handleEvent' eh evt@(GuildCreate guild) = do-  isNew <- isUnavailableGuild (getID guild)+  isNew <- not <$> isUnavailableGuild (getID guild)   updateCache evt   Just guild <- getGuild (getID guild)-  pure $ map (\f -> f guild isNew) (getEventHandlers @'GuildCreateEvt eh)+  pure $ map (\f -> f guild (if isNew then GuildCreateNew else GuildCreateAvailable))+    (getEventHandlers @'GuildCreateEvt eh)  handleEvent' eh evt@(GuildUpdate guild) = do   Just oldGuild <- getGuild (getID guild)@@ -424,7 +425,8 @@ handleEvent' eh evt@(GuildDelete UnavailableGuild { id, unavailable }) = do   Just oldGuild <- getGuild id   updateCache evt-  pure $ map (\f -> f oldGuild unavailable) (getEventHandlers @'GuildDeleteEvt eh)+  pure $ map (\f -> f oldGuild (if unavailable then GuildDeleteUnavailable else GuildDeleteRemoved))+    (getEventHandlers @'GuildDeleteEvt eh)  handleEvent' eh evt@(GuildBanAdd BanData { guildID, user }) = do   Just guild <- getGuild guildID@@ -549,12 +551,11 @@   case guildID of     Just gid -> do       Just guild <- getGuild gid-      Just member <- pure $ guild ^. #members . at (coerceSnowflake userID)       Just chan <- pure $ GuildChannel' <$> guild ^. #channels . at (coerceSnowflake channelID)-      pure $ map (\f -> f chan (Just member) timestamp) (getEventHandlers @'TypingStartEvt eh)+      pure $ map (\f -> f chan userID timestamp) (getEventHandlers @'TypingStartEvt eh)     Nothing -> do       Just chan <- DMChannel' <<$>> getDM (coerceSnowflake channelID)-      pure $ map (\f -> f chan Nothing timestamp) (getEventHandlers @'TypingStartEvt eh)+      pure $ map (\f -> f chan userID timestamp) (getEventHandlers @'TypingStartEvt eh)  handleEvent' eh evt@(UserUpdate _) = do   Just oldUser <- getBotUser@@ -598,8 +599,10 @@ updateCache (GuildUpdate guild) =   updateGuild (getID guild) (update guild) -updateCache (GuildDelete guild) =-  delGuild (getID guild)+updateCache (GuildDelete UnavailableGuild { id, unavailable }) =+  if unavailable+  then setUnavailableGuild id+  else delGuild id  updateCache (GuildEmojisUpdate GuildEmojisUpdateData { guildID, emojis }) =   updateGuild guildID (#emojis .~ SM.fromList emojis)
src/Calamity/Client/Types.hs view
@@ -3,6 +3,8 @@     ( Client(..)     , StartupError(..)     , EventType(..)+    , GuildCreateStatus(..)+    , GuildDeleteStatus(..)     , EHType     , BotC     , SetupEff@@ -27,6 +29,7 @@ import           Calamity.Types.Model.User import           Calamity.Types.Token import           Calamity.Types.UnixTimestamp+import           Calamity.Types.Snowflake  import           Control.Concurrent.Async import           Control.Concurrent.Chan.Unagi@@ -52,6 +55,9 @@ import qualified Polysemy.AtomicState            as P import qualified Polysemy.Reader                 as P +import qualified TextShow.Generic                as TSG+import TextShow+ data Client = Client   { shards              :: TVar [(InChan ControlMessage, Async (Maybe ()))]   , numShards           :: MVar Int@@ -149,6 +155,18 @@   | forall s a. CustomEvt s a   -- ^ A custom event, @s@ is the name and @a@ is the data sent to the handler +data GuildCreateStatus+  = GuildCreateNew -- ^ The guild was just joined+  | GuildCreateAvailable -- ^ The guild is becoming available+  deriving ( Generic, Show )+  deriving ( TextShow ) via TSG.FromGeneric GuildCreateStatus++data GuildDeleteStatus+  = GuildDeleteUnavailable -- ^ The guild became unavailable+  | GuildDeleteRemoved -- ^ The bot was removed from the guild+  deriving ( Generic, Show )+  deriving ( TextShow ) via TSG.FromGeneric GuildDeleteStatus+ -- | A type family to decide what the parameters for an event handler should be -- determined by the type of event it is handling. type family EHType (d :: EventType) m r where@@ -157,9 +175,9 @@   EHType 'ChannelUpdateEvt            m r = Channel   -> Channel                        -> m r   EHType 'ChannelDeleteEvt            m r = Channel                                     -> m r   EHType 'ChannelpinsUpdateEvt        m r = Channel   -> Maybe UTCTime                  -> m r-  EHType 'GuildCreateEvt              m r = Guild     -> Bool                           -> m r+  EHType 'GuildCreateEvt              m r = Guild     -> GuildCreateStatus              -> m r   EHType 'GuildUpdateEvt              m r = Guild     -> Guild                          -> m r-  EHType 'GuildDeleteEvt              m r = Guild     -> Bool                           -> m r+  EHType 'GuildDeleteEvt              m r = Guild     -> GuildDeleteStatus              -> m r   EHType 'GuildBanAddEvt              m r = Guild     -> User                           -> m r   EHType 'GuildBanRemoveEvt           m r = Guild     -> User                           -> m r   EHType 'GuildEmojisUpdateEvt        m r = Guild     -> [Emoji]                        -> m r@@ -180,7 +198,7 @@   EHType 'MessageReactionAddEvt       m r = Message   -> Reaction                       -> m r   EHType 'MessageReactionRemoveEvt    m r = Message   -> Reaction                       -> m r   EHType 'MessageReactionRemoveAllEvt m r = Message                                     -> m r-  EHType 'TypingStartEvt              m r = Channel   -> Maybe Member  -> UnixTimestamp -> m r+  EHType 'TypingStartEvt              m r = Channel  -> Snowflake User -> UnixTimestamp -> m r   EHType 'UserUpdateEvt               m r = User      -> User                           -> m r   EHType ('CustomEvt s a)             m r = a                                           -> m r