lambdabot-4.3: Lambdabot is a development tool and advanced IRC bot

Safe HaskellNone




data Module st Source

The Module type class.




moduleSerialize :: !(Maybe (Serial st))

If the module wants its state to be saved, this function should return a Serial.

The default implementation returns Nothing.

moduleDefState :: !(LB st)

If the module maintains state, this method specifies the default state (for example in case the state can't be read from a state).

The default implementation returns an error and assumes the state is never accessed.

moduleSticky :: !Bool

Is the module sticky? Sticky modules (as well as static ones) can't be unloaded. By default, modules are not sticky.

moduleCmds :: !(ModuleT st LB [Command (ModuleT st LB)])

The commands the module listenes to.

moduleInit :: !(ModuleT st LB ())

Initialize the module. The default implementation does nothing.

moduleExit :: !(ModuleT st LB ())

Finalize the module. The default implementation does nothing.

contextual :: !(String -> Cmd (ModuleT st LB) ())

Process contextual input. A plugin that implements contextual is able to respond to text not part of a normal command.

newtype ModuleT st m a Source

This transformer encodes the additional information a module might need to access its name or its state.




runModuleT :: ReaderT (MVar st, String) m a

getRef :: Monad m => ModuleT st m (MVar st)Source

bindModule0 :: ModuleT mod LB a -> ModuleT mod LB (LB a)Source

bind an action to the current module so it can be run from the plain LB monad.

bindModule1 :: (a -> ModuleT mod LB b) -> ModuleT mod LB (a -> LB b)Source

variant of bindModule0 for monad actions with one argument

bindModule2 :: (a -> b -> ModuleT mod LB c) -> ModuleT mod LB (a -> b -> LB c)Source

variant of bindModule0 for monad actions with two arguments