calamity-0.1.9.4: A library for writing discord bots
Safe HaskellNone
LanguageHaskell2010

Calamity.Client.Types

Description

Types for the client

Synopsis

Documentation

data Client Source #

Constructors

Client 

Instances

Instances details
Generic Client Source # 
Instance details

Defined in Calamity.Client.Types

Associated Types

type Rep Client :: Type -> Type #

Methods

from :: Client -> Rep Client x #

to :: Rep Client x -> Client #

type Rep Client Source # 
Instance details

Defined in Calamity.Client.Types

newtype StartupError Source #

Constructors

StartupError String 

Instances

Instances details
Show StartupError Source # 
Instance details

Defined in Calamity.Client.Types

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.

Equations

EHType 'ReadyEvt m r = ReadyData -> m r 
EHType 'ChannelCreateEvt m r = Channel -> m r 
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 'GuildUpdateEvt m r = Guild -> Guild -> m r 
EHType 'GuildDeleteEvt m r = Guild -> Bool -> 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 
EHType 'GuildIntegrationsUpdateEvt m r = Guild -> m r 
EHType 'GuildMemberAddEvt m r = Member -> m r 
EHType 'GuildMemberRemoveEvt m r = Member -> m r 
EHType 'GuildMemberUpdateEvt m r = Member -> Member -> m r 
EHType 'GuildMembersChunkEvt m r = Guild -> [Member] -> m r 
EHType 'GuildRoleCreateEvt m r = Guild -> Role -> m r 
EHType 'GuildRoleUpdateEvt m r = Guild -> Role -> Role -> m r 
EHType 'GuildRoleDeleteEvt m r = Guild -> Role -> m r 
EHType 'MessageCreateEvt m r = Message -> m r 
EHType 'MessageUpdateEvt m r = Message -> Message -> m r 
EHType 'MessageDeleteEvt m r = Message -> m r 
EHType 'MessageDeleteBulkEvt m r = [Message] -> m r 
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 'UserUpdateEvt m r = User -> User -> m r 
EHType ('CustomEvt s a) m r = a -> m r 

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 #

Constructors

EventHandlers (TypeRepMap EventHandler) 

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.

Methods

makeEventHandlers :: Proxy a -> Integer -> StoredEHType a -> EventHandlers Source #

Instances

Instances details
(EHInstanceSelector a ~ flag, InsertEventHandler' flag a) => InsertEventHandler a Source # 
Instance details

Defined in Calamity.Client.Types

Methods

makeEventHandlers :: Proxy a -> Integer -> StoredEHType a -> EventHandlers Source #

class RemoveEventHandler a where Source #

Instances

Instances details
(EHInstanceSelector a ~ flag, RemoveEventHandler' flag a) => RemoveEventHandler (a :: EventType) Source # 
Instance details

Defined in Calamity.Client.Types

getEventHandlers :: GetEventHandlers a => EventHandlers -> [StoredEHType a] Source #