Safe Haskell | None |
---|---|
Language | Haskell2010 |
Types for the client
Synopsis
- data Client = Client {
- shards :: TVar [(InChan ControlMessage, Async (Maybe ()))]
- numShards :: MVar Int
- token :: Token
- rlState :: RateLimitState
- eventsIn :: InChan CalamityEvent
- eventsOut :: OutChan CalamityEvent
- ehidCounter :: IORef Integer
- newtype StartupError = StartupError String
- data EventType
- = ReadyEvt
- | ChannelCreateEvt
- | ChannelUpdateEvt
- | ChannelDeleteEvt
- | ChannelpinsUpdateEvt
- | GuildCreateEvt
- | GuildUpdateEvt
- | GuildDeleteEvt
- | GuildBanAddEvt
- | GuildBanRemoveEvt
- | GuildEmojisUpdateEvt
- | GuildIntegrationsUpdateEvt
- | GuildMemberAddEvt
- | GuildMemberRemoveEvt
- | GuildMemberUpdateEvt
- | GuildMembersChunkEvt
- | GuildRoleCreateEvt
- | GuildRoleUpdateEvt
- | GuildRoleDeleteEvt
- | MessageCreateEvt
- | MessageUpdateEvt
- | MessageDeleteEvt
- | MessageDeleteBulkEvt
- | MessageReactionAddEvt
- | MessageReactionRemoveEvt
- | MessageReactionRemoveAllEvt
- | TypingStartEvt
- | UserUpdateEvt
- | forall s a. CustomEvt s a
- type family EHType (d :: EventType) m r where ...
- type BotC r = (Members '[LogEff, MetricEff, CacheEff, Reader Client, AtomicState EventHandlers, Embed IO, Final IO, Async] r, Typeable r)
- type SetupEff r = LogEff ': (Reader Client ': (AtomicState EventHandlers ': (Async ': r)))
- type ReactConstraints r s eh ehIO t = (InsertEventHandler s, RemoveEventHandler s, eh ~ EHType s (Sem r) (), ehIO ~ EHType s IO (), Uncurry eh, Uncurried eh ~ (t -> Sem r ()), Curry (t -> IO ()), ehIO ~ Curried (t -> IO ()))
- type WaitUntilConstraints r s eh check t = (InsertEventHandler s, RemoveEventHandler s, Uncurry eh, eh ~ EHType s (Sem r) (), eh ~ Curried (t -> Sem r ()), Uncurry check, Uncurried check ~ (t -> Bool), Curry (t -> IO ()), Curried (t -> IO ()) ~ EHType s IO ())
- type WaitUntilMConstraints r s eh ehB t = (InsertEventHandler s, RemoveEventHandler s, Uncurry eh, eh ~ EHType s (Sem r) (), eh ~ Curried (t -> Sem r ()), Uncurry ehB, Uncurried ehB ~ (t -> Sem r Bool), Curry (t -> IO ()), Curried (t -> IO ()) ~ EHType s IO ())
- newtype EventHandlers = EventHandlers (TypeRepMap EventHandler)
- class InsertEventHandler a where
- makeEventHandlers :: Proxy a -> Integer -> StoredEHType a -> EventHandlers
- class RemoveEventHandler a where
- removeEventHandler :: Proxy a -> Integer -> EventHandlers -> EventHandlers
- getEventHandlers :: GetEventHandlers a => EventHandlers -> [StoredEHType a]
- getCustomEventHandlers :: TypeRep -> TypeRep -> EventHandlers -> [Dynamic -> IO ()]
Documentation
Client | |
|
Instances
newtype StartupError Source #
Instances
Show StartupError Source # | |
Defined in Calamity.Client.Types showsPrec :: Int -> StartupError -> ShowS # show :: StartupError -> String # showList :: [StartupError] -> ShowS # |
A Data Kind used to fire custom events
Instances
(EHInstanceSelector a ~ flag, RemoveEventHandler' flag a) => RemoveEventHandler (a :: EventType) Source # | |
Defined in Calamity.Client.Types removeEventHandler :: Proxy a -> Integer -> EventHandlers -> EventHandlers Source # |
type family EHType (d :: EventType) m r where ... Source #
A type family to decide what the parameters for an event handler should be determined by the type of event it is handling.
type BotC r = (Members '[LogEff, MetricEff, CacheEff, Reader Client, AtomicState EventHandlers, Embed IO, Final IO, Async] r, Typeable r) Source #
type SetupEff r = LogEff ': (Reader Client ': (AtomicState EventHandlers ': (Async ': r))) Source #
A concrete effect stack used inside the bot
type ReactConstraints r s eh ehIO t = (InsertEventHandler s, RemoveEventHandler s, eh ~ EHType s (Sem r) (), ehIO ~ EHType s IO (), Uncurry eh, Uncurried eh ~ (t -> Sem r ()), Curry (t -> IO ()), ehIO ~ Curried (t -> IO ())) Source #
Some constraints that react
needs to work. Don't
worry about these since they are satisfied for any type s
can be
type WaitUntilConstraints r s eh check t = (InsertEventHandler s, RemoveEventHandler s, Uncurry eh, eh ~ EHType s (Sem r) (), eh ~ Curried (t -> Sem r ()), Uncurry check, Uncurried check ~ (t -> Bool), Curry (t -> IO ()), Curried (t -> IO ()) ~ EHType s IO ()) Source #
Some constraints that waitUntil
needs to work. Don't
worry about these since they are satisfied for any type s
can be
type WaitUntilMConstraints r s eh ehB t = (InsertEventHandler s, RemoveEventHandler s, Uncurry eh, eh ~ EHType s (Sem r) (), eh ~ Curried (t -> Sem r ()), Uncurry ehB, Uncurried ehB ~ (t -> Sem r Bool), Curry (t -> IO ()), Curried (t -> IO ()) ~ EHType s IO ()) Source #
Some constraints that waitUntilM
needs to work. Don't
worry about these since they are satisfied for any type s
can be
newtype EventHandlers Source #
EventHandlers (TypeRepMap EventHandler) |
Instances
Semigroup EventHandlers Source # | |
Defined in Calamity.Client.Types (<>) :: EventHandlers -> EventHandlers -> EventHandlers # sconcat :: NonEmpty EventHandlers -> EventHandlers # stimes :: Integral b => b -> EventHandlers -> EventHandlers # | |
Monoid EventHandlers Source # | |
Defined in Calamity.Client.Types mempty :: EventHandlers # mappend :: EventHandlers -> EventHandlers -> EventHandlers # mconcat :: [EventHandlers] -> EventHandlers # | |
Default EventHandlers Source # | |
Defined in Calamity.Client.Types def :: EventHandlers |
class InsertEventHandler a where Source #
A helper typeclass that is used to decide how to register regular events, and custom events which require storing in a map at runtime.
makeEventHandlers :: Proxy a -> Integer -> StoredEHType a -> EventHandlers Source #
Instances
(EHInstanceSelector a ~ flag, InsertEventHandler' flag a) => InsertEventHandler a Source # | |
Defined in Calamity.Client.Types makeEventHandlers :: Proxy a -> Integer -> StoredEHType a -> EventHandlers Source # |
class RemoveEventHandler a where Source #
removeEventHandler :: Proxy a -> Integer -> EventHandlers -> EventHandlers Source #
Instances
(EHInstanceSelector a ~ flag, RemoveEventHandler' flag a) => RemoveEventHandler (a :: EventType) Source # | |
Defined in Calamity.Client.Types removeEventHandler :: Proxy a -> Integer -> EventHandlers -> EventHandlers Source # |
getEventHandlers :: GetEventHandlers a => EventHandlers -> [StoredEHType a] Source #
getCustomEventHandlers :: TypeRep -> TypeRep -> EventHandlers -> [Dynamic -> IO ()] Source #