discord-hs-0.4.2: An API wrapper for Discord in Haskell

Safe HaskellNone
LanguageHaskell2010

Network.Discord.Framework

Description

Provides a convenience framework for writing Discord bots without dealing with Pipes

Documentation

newtype DiscordApp m a Source #

Constructors

DiscordApp 

Fields

Instances

Monad (DiscordApp m) Source # 

Methods

(>>=) :: DiscordApp m a -> (a -> DiscordApp m b) -> DiscordApp m b #

(>>) :: DiscordApp m a -> DiscordApp m b -> DiscordApp m b #

return :: a -> DiscordApp m a #

fail :: String -> DiscordApp m a #

Functor (DiscordApp m) Source # 

Methods

fmap :: (a -> b) -> DiscordApp m a -> DiscordApp m b #

(<$) :: a -> DiscordApp m b -> DiscordApp m a #

Applicative (DiscordApp m) Source # 

Methods

pure :: a -> DiscordApp m a #

(<*>) :: DiscordApp m (a -> b) -> DiscordApp m a -> DiscordApp m b #

(*>) :: DiscordApp m a -> DiscordApp m b -> DiscordApp m b #

(<*) :: DiscordApp m a -> DiscordApp m b -> DiscordApp m a #

Alternative (DiscordApp m) Source # 

Methods

empty :: DiscordApp m a #

(<|>) :: DiscordApp m a -> DiscordApp m a -> DiscordApp m a #

some :: DiscordApp m a -> DiscordApp m [a] #

many :: DiscordApp m a -> DiscordApp m [a] #

MonadPlus (DiscordApp m) Source # 

Methods

mzero :: DiscordApp m a #

mplus :: DiscordApp m a -> DiscordApp m a -> DiscordApp m a #

MonadIO (DiscordApp m) Source # 

Methods

liftIO :: IO a -> DiscordApp m a #

DiscordAuth m => DiscordGate (DiscordApp m) Source # 

Associated Types

data VaultKey (DiscordApp m :: * -> *) a :: * #

type Vault (DiscordApp m :: * -> *) :: * -> * #

DiscordAuth m => DiscordRest (DiscordApp m) Source # 

Methods

getRateLimit :: DoFetch f a => f a -> DiscordApp m (Maybe Int) #

setRateLimit :: DoFetch f a => f a -> Int -> DiscordApp m () #

waitRateLimit :: DoFetch f a => f a -> DiscordApp m () #

DiscordAuth (DiscordApp m) Source # 
type Vault (DiscordApp m) Source # 
type Vault (DiscordApp m) = MVar
data VaultKey (DiscordApp m) Source # 
data VaultKey (DiscordApp m) = Store (MVar a)

delete :: Eq a => [(a, b)] -> a -> [(a, b)] Source #

modify :: Eq a => a -> b -> [(a, b)] -> [(a, b)] Source #

class DiscordRest m => EventMap f m where Source #

Minimal complete definition

mapEvent

Associated Types

type Domain f Source #

type Codomain f Source #

Methods

mapEvent :: Proxy f -> Domain f -> m (Codomain f) Source #

Instances

(DiscordGate m, DiscordRest m) => EventMap VoiceServerUpdateEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap VoiceStateUpdateEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap UserUpdateEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap UserSettingsUpdateEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap TypingStartEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap PresenceUpdateEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap MessageDeleteBulkEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap MessageDeleteEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap MessageUpdateEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap MessageCreateEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap GuildRoleDeleteEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap GuildRoleUpdateEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap GuildRoleCreateEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap GuildMemberChunkEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap GuildMemberUpdateEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap GuildMemberRemoveEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap GuildMemberAddEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap GuildIntegrationsUpdateEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap GuildEmojiUpdateEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap GuildBanRemoveEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap GuildBanAddEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap GuildDeleteEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap GuildUpdateEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap GuildCreateEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap ChannelDeleteEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap ChannelUpdateEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap ChannelCreateEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap ResumedEvent m Source # 
(DiscordGate m, DiscordRest m) => EventMap ReadyEvent m Source # 
(DiscordGate m, DiscordRest m, KnownSymbol e) => EventMap (OtherEvent e) m Source # 

Associated Types

type Domain (OtherEvent e) :: * Source #

type Codomain (OtherEvent e) :: * Source #

(DiscordRest m, EventMap f m, EventMap g m, (~) * (Domain f) (Domain g), (~) * (Codomain f) (Codomain g)) => EventMap ((:<>:) f g) m Source # 

Associated Types

type Domain ((:<>:) f g) :: * Source #

type Codomain ((:<>:) f g) :: * Source #

Methods

mapEvent :: Proxy * (f :<>: g) -> Domain (f :<>: g) -> m (Codomain (f :<>: g)) Source #

(DiscordRest m, EventMap f m, EventMap g m, (~) * (Codomain f) (Domain g)) => EventMap ((:>) f g) m Source # 

Associated Types

type Domain ((:>) f g) :: * Source #

type Codomain ((:>) f g) :: * Source #

Methods

mapEvent :: Proxy * (f :> g) -> Domain (f :> g) -> m (Codomain (f :> g)) Source #

data a :> b Source #

Instances

(DiscordRest m, EventMap f m, EventMap g m, (~) * (Codomain f) (Domain g)) => EventMap ((:>) f g) m Source # 

Associated Types

type Domain ((:>) f g) :: * Source #

type Codomain ((:>) f g) :: * Source #

Methods

mapEvent :: Proxy * (f :> g) -> Domain (f :> g) -> m (Codomain (f :> g)) Source #

type Domain ((:>) f g) Source # 
type Domain ((:>) f g) = Domain f
type Codomain ((:>) f g) Source # 
type Codomain ((:>) f g) = Codomain g

data a :<>: b Source #

Instances

(DiscordRest m, EventMap f m, EventMap g m, (~) * (Domain f) (Domain g), (~) * (Codomain f) (Codomain g)) => EventMap ((:<>:) f g) m Source # 

Associated Types

type Domain ((:<>:) f g) :: * Source #

type Codomain ((:<>:) f g) :: * Source #

Methods

mapEvent :: Proxy * (f :<>: g) -> Domain (f :<>: g) -> m (Codomain (f :<>: g)) Source #

type Domain ((:<>:) f g) Source # 
type Domain ((:<>:) f g) = Domain f
type Codomain ((:<>:) f g) Source # 
type Codomain ((:<>:) f g) = Codomain f