marvin-0.0.6: A modular chat bot

Safe HaskellNone
LanguageHaskell2010

Marvin.Internal.Types

Contents

Synopsis

Documentation

data Event a Source #

Representation for the types of events which can occur

Instances

HasCustoms (Handlers a0) (Vector (Event a0 -> Maybe (RunnerM ()))) Source # 

Methods

customs :: Lens' (Handlers a0) (Vector (Event a0 -> Maybe (RunnerM ()))) Source #

type EventHandler a = Event a -> IO () Source #

class IsAdapter a where Source #

Basic functionality required of any adapter

Associated Types

type User a Source #

type Channel a Source #

Methods

adapterId :: AdapterId a Source #

Used for scoping config and logging

messageChannel :: a -> Channel a -> Text -> RunnerM () Source #

Post a message to a channel given the internal channel identifier

runWithAdapter :: RunWithAdapter a Source #

Initialize and run the bot

getUsername :: a -> User a -> RunnerM Text Source #

Resolve a username given the internal user identifier

getChannelName :: a -> Channel a -> RunnerM Text Source #

Resolve the human readable name for a channel given the internal channel identifier

resolveChannel :: a -> Text -> RunnerM (Maybe (Channel a)) Source #

Resolve to the internal channel identifier given a human readable name

newtype User' a Source #

Constructors

User' 

Fields

Instances

HasLeaves (Handlers a0) (Vector ((User' a0, Channel' a0) -> RunnerM ())) Source # 

Methods

leaves :: Lens' (Handlers a0) (Vector ((User' a0, Channel' a0) -> RunnerM ())) Source #

HasJoins (Handlers a0) (Vector ((User' a0, Channel' a0) -> RunnerM ())) Source # 

Methods

joins :: Lens' (Handlers a0) (Vector ((User' a0, Channel' a0) -> RunnerM ())) Source #

HasLeavesFrom (Handlers a0) (HashMap Text (Vector ((User' a0, Channel' a0) -> RunnerM ()))) Source # 

Methods

leavesFrom :: Lens' (Handlers a0) (HashMap Text (Vector ((User' a0, Channel' a0) -> RunnerM ()))) Source #

HasJoinsIn (Handlers a0) (HashMap Text (Vector ((User' a0, Channel' a0) -> RunnerM ()))) Source # 

Methods

joinsIn :: Lens' (Handlers a0) (HashMap Text (Vector ((User' a0, Channel' a0) -> RunnerM ()))) Source #

Get (b, Message a) (User' a) Source # 

Methods

getLens :: Lens' (b, Message a) (User' a) Source #

Get (User' a, b) (User' a) Source # 

Methods

getLens :: Lens' (User' a, b) (User' a) Source #

newtype Channel' a Source #

Constructors

Channel' 

Fields

Instances

HasTopicChange (Handlers a0) (Vector ((Topic, Channel' a0) -> RunnerM ())) Source # 

Methods

topicChange :: Lens' (Handlers a0) (Vector ((Topic, Channel' a0) -> RunnerM ())) Source #

HasLeaves (Handlers a0) (Vector ((User' a0, Channel' a0) -> RunnerM ())) Source # 

Methods

leaves :: Lens' (Handlers a0) (Vector ((User' a0, Channel' a0) -> RunnerM ())) Source #

HasJoins (Handlers a0) (Vector ((User' a0, Channel' a0) -> RunnerM ())) Source # 

Methods

joins :: Lens' (Handlers a0) (Vector ((User' a0, Channel' a0) -> RunnerM ())) Source #

HasTopicChangeIn (Handlers a0) (HashMap Text (Vector ((Topic, Channel' a0) -> RunnerM ()))) Source # 
HasLeavesFrom (Handlers a0) (HashMap Text (Vector ((User' a0, Channel' a0) -> RunnerM ()))) Source # 

Methods

leavesFrom :: Lens' (Handlers a0) (HashMap Text (Vector ((User' a0, Channel' a0) -> RunnerM ()))) Source #

HasJoinsIn (Handlers a0) (HashMap Text (Vector ((User' a0, Channel' a0) -> RunnerM ()))) Source # 

Methods

joinsIn :: Lens' (Handlers a0) (HashMap Text (Vector ((User' a0, Channel' a0) -> RunnerM ()))) Source #

Get (b, Message a) (Channel' a) Source # 

Methods

getLens :: Lens' (b, Message a) (Channel' a) Source #

Get (b, Channel' a) (Channel' a) Source # 

Methods

getLens :: Lens' (b, Channel' a) (Channel' a) Source #

data Message a Source #

contents and meta information of a recieved message

Constructors

Message 

Instances

HasResponds (Handlers a0) (Vector (Regex, Match -> Message a0 -> RunnerM ())) Source # 

Methods

responds :: Lens' (Handlers a0) (Vector (Regex, Match -> Message a0 -> RunnerM ())) Source #

HasHears (Handlers a0) (Vector (Regex, Match -> Message a0 -> RunnerM ())) Source # 

Methods

hears :: Lens' (Handlers a0) (Vector (Regex, Match -> Message a0 -> RunnerM ())) Source #

Get (b, Message a) (User' a) Source # 

Methods

getLens :: Lens' (b, Message a) (User' a) Source #

Get (b, Message a) (Channel' a) Source # 

Methods

getLens :: Lens' (b, Message a) (Channel' a) Source #

Get (b, Message a) (Message a) Source # 

Methods

getLens :: Lens' (b, Message a) (Message a) Source #

newtype ScriptId Source #

A type, basically a String, which identifies a script to the config and the logging facilities.

Constructors

ScriptId 

Fields

newtype AdapterId a Source #

A type, basically a String, which identifies an adapter to the config and the logging facilities.

Constructors

AdapterId 

Instances

verifyIdString :: String -> (String -> a) -> String -> a Source #

class HasScriptId s a | s -> a where Source #

Minimal complete definition

scriptId

Methods

scriptId :: Lens' s a Source #

class (IsScript m, MonadIO m) => HasConfigAccess m where Source #

Denotes a place from which we may access the configuration.

During script definition or when handling a request we can obtain the config with getConfigVal or requireConfigVal.

Minimal complete definition

getConfigInternal

Methods

getConfigInternal :: m Config Source #

INTERNAL USE WITH CARE

Obtain the entire config structure

Orphan instances