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 +7/−0
- calamity.cabal +2/−2
- src/Calamity/Client/Client.hs +11/−8
- src/Calamity/Client/Types.hs +21/−3
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