lambdabot-core-5.1.0.2: Lambdabot core functionality

Safe HaskellNone
LanguageHaskell98

Lambdabot.Plugin

Synopsis

Documentation

data Module st Source #

The Module type class.

Constructors

Module 

Fields

  • 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.

data ModuleT st m a Source #

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

Instances
MonadBase b m => MonadBase b (ModuleT st m) Source # 
Instance details

Defined in Lambdabot.Module

Methods

liftBase :: b α -> ModuleT st m α #

MonadBaseControl b m => MonadBaseControl b (ModuleT st m) Source # 
Instance details

Defined in Lambdabot.Module

Associated Types

type StM (ModuleT st m) a :: * #

Methods

liftBaseWith :: (RunInBase (ModuleT st m) b -> b a) -> ModuleT st m a #

restoreM :: StM (ModuleT st m) a -> ModuleT st m a #

MonadTrans (ModuleT st) Source # 
Instance details

Defined in Lambdabot.Module

Methods

lift :: Monad m => m a -> ModuleT st m a #

MonadTransControl (ModuleT st) Source # 
Instance details

Defined in Lambdabot.Module

Associated Types

type StT (ModuleT st) a :: * #

Methods

liftWith :: Monad m => (Run (ModuleT st) -> m a) -> ModuleT st m a #

restoreT :: Monad m => m (StT (ModuleT st) a) -> ModuleT st m a #

Monad m => MonadReader (ModuleInfo st) (ModuleT st m) Source # 
Instance details

Defined in Lambdabot.Module

Methods

ask :: ModuleT st m (ModuleInfo st) #

local :: (ModuleInfo st -> ModuleInfo st) -> ModuleT st m a -> ModuleT st m a #

reader :: (ModuleInfo st -> a) -> ModuleT st m a #

Monad m => Monad (ModuleT st m) Source # 
Instance details

Defined in Lambdabot.Module

Methods

(>>=) :: ModuleT st m a -> (a -> ModuleT st m b) -> ModuleT st m b #

(>>) :: ModuleT st m a -> ModuleT st m b -> ModuleT st m b #

return :: a -> ModuleT st m a #

fail :: String -> ModuleT st m a #

Functor m => Functor (ModuleT st m) Source # 
Instance details

Defined in Lambdabot.Module

Methods

fmap :: (a -> b) -> ModuleT st m a -> ModuleT st m b #

(<$) :: a -> ModuleT st m b -> ModuleT st m a #

Applicative m => Applicative (ModuleT st m) Source # 
Instance details

Defined in Lambdabot.Module

Methods

pure :: a -> ModuleT st m a #

(<*>) :: ModuleT st m (a -> b) -> ModuleT st m a -> ModuleT st m b #

liftA2 :: (a -> b -> c) -> ModuleT st m a -> ModuleT st m b -> ModuleT st m c #

(*>) :: ModuleT st m a -> ModuleT st m b -> ModuleT st m b #

(<*) :: ModuleT st m a -> ModuleT st m b -> ModuleT st m a #

MonadIO m => MonadIO (ModuleT st m) Source # 
Instance details

Defined in Lambdabot.Module

Methods

liftIO :: IO a -> ModuleT st m a #

MonadException m => MonadException (ModuleT st m) Source # 
Instance details

Defined in Lambdabot.Module

Methods

controlIO :: (RunIO (ModuleT st m) -> IO (ModuleT st m a)) -> ModuleT st m a #

MonadConfig m => MonadConfig (ModuleT st m) Source # 
Instance details

Defined in Lambdabot.Module

Methods

getConfig :: Config a -> ModuleT st m a Source #

MonadLogging m => MonadLogging (ModuleT st m) Source # 
Instance details

Defined in Lambdabot.Module

MonadLB m => MonadLB (ModuleT st m) Source # 
Instance details

Defined in Lambdabot.Monad

Methods

lb :: LB a -> ModuleT st m a Source #

MonadLB m => MonadLBState (ModuleT st m) Source # 
Instance details

Defined in Lambdabot.State

Associated Types

type LBState (ModuleT st m) :: * Source #

Methods

withMS :: (LBState (ModuleT st m) -> (LBState (ModuleT st m) -> ModuleT st m ()) -> ModuleT st m a) -> ModuleT st m a Source #

type StT (ModuleT st) a Source # 
Instance details

Defined in Lambdabot.Module

type StT (ModuleT st) a = a
type LBState (ModuleT st m) Source # 
Instance details

Defined in Lambdabot.State

type LBState (ModuleT st m) = st
type StM (ModuleT st m) a Source # 
Instance details

Defined in Lambdabot.Module

type StM (ModuleT st m) a = ComposeSt (ModuleT st) m a

data LB a Source #

The IRC Monad. The reader transformer holds information about the connection to the IRC server.

instances Monad, Functor, MonadIO, MonadState, MonadError

Instances
Monad LB Source # 
Instance details

Defined in Lambdabot.Monad

Methods

(>>=) :: LB a -> (a -> LB b) -> LB b #

(>>) :: LB a -> LB b -> LB b #

return :: a -> LB a #

fail :: String -> LB a #

Functor LB Source # 
Instance details

Defined in Lambdabot.Monad

Methods

fmap :: (a -> b) -> LB a -> LB b #

(<$) :: a -> LB b -> LB a #

Applicative LB Source # 
Instance details

Defined in Lambdabot.Monad

Methods

pure :: a -> LB a #

(<*>) :: LB (a -> b) -> LB a -> LB b #

liftA2 :: (a -> b -> c) -> LB a -> LB b -> LB c #

(*>) :: LB a -> LB b -> LB b #

(<*) :: LB a -> LB b -> LB a #

MonadIO LB Source # 
Instance details

Defined in Lambdabot.Monad

Methods

liftIO :: IO a -> LB a #

MonadException LB Source # 
Instance details

Defined in Lambdabot.Monad

Methods

controlIO :: (RunIO LB -> IO (LB a)) -> LB a #

MonadRandom LB # 
Instance details

Defined in Lambdabot.Bot

MonadConfig LB Source # 
Instance details

Defined in Lambdabot.Monad

Methods

getConfig :: Config a -> LB a Source #

MonadLogging LB Source # 
Instance details

Defined in Lambdabot.Monad

MonadLB LB Source # 
Instance details

Defined in Lambdabot.Monad

Methods

lb :: LB a -> LB a Source #

MonadBase IO LB Source # 
Instance details

Defined in Lambdabot.Monad

Methods

liftBase :: IO α -> LB α #

MonadBaseControl IO LB Source # 
Instance details

Defined in Lambdabot.Monad

Associated Types

type StM LB a :: * #

Methods

liftBaseWith :: (RunInBase LB IO -> IO a) -> LB a #

restoreM :: StM LB a -> LB a #

MonadState IRCRWState LB Source # 
Instance details

Defined in Lambdabot.Monad

Methods

get :: LB IRCRWState #

put :: IRCRWState -> LB () #

state :: (IRCRWState -> (a, IRCRWState)) -> LB a #

type StM LB a Source # 
Instance details

Defined in Lambdabot.Monad

class (MonadIO m, MonadBaseControl IO m, MonadConfig m, MonadLogging m, Applicative m) => MonadLB m where Source #

Minimal complete definition

lb

Methods

lb :: LB a -> m a Source #

Instances
MonadLB LB Source # 
Instance details

Defined in Lambdabot.Monad

Methods

lb :: LB a -> LB a Source #

MonadLB m => MonadLB (Cmd m) Source # 
Instance details

Defined in Lambdabot.Monad

Methods

lb :: LB a -> Cmd m a Source #

MonadLB m => MonadLB (ModuleT st m) Source # 
Instance details

Defined in Lambdabot.Monad

Methods

lb :: LB a -> ModuleT st m a Source #

lim80 :: Monad m => m String -> Cmd m () Source #

ios80 :: MonadIO m => IO String -> Cmd m () Source #

convenience, similar to ios but also cut output to channel to 80 characters usage: process _ _ to _ s = ios80 to (plugs s)

data ChanName Source #

Instances
Eq ChanName Source # 
Instance details

Defined in Lambdabot.ChanName

Ord ChanName Source # 
Instance details

Defined in Lambdabot.ChanName

data Nick Source #

The type of nicknames isolated from a message.

Constructors

Nick 

Fields

  • nTag :: !String

    The tag of the server this nick is on

  • nName :: !String

    The server-specific nickname of this nick

Instances
Eq Nick Source # 
Instance details

Defined in Lambdabot.Nick

Methods

(==) :: Nick -> Nick -> Bool #

(/=) :: Nick -> Nick -> Bool #

Ord Nick Source # 
Instance details

Defined in Lambdabot.Nick

Methods

compare :: Nick -> Nick -> Ordering #

(<) :: Nick -> Nick -> Bool #

(<=) :: Nick -> Nick -> Bool #

(>) :: Nick -> Nick -> Bool #

(>=) :: Nick -> Nick -> Bool #

max :: Nick -> Nick -> Nick #

min :: Nick -> Nick -> Nick #

ircPrivmsg Source #

Arguments

:: Nick

The channel/user.

-> String

The message.

-> LB () 

Send a message to a channel/user, applying all output filters

data Command m Source #

Constructors

Command 

Fields

data Cmd m a Source #

Instances
MonadTrans Cmd Source # 
Instance details

Defined in Lambdabot.Command

Methods

lift :: Monad m => m a -> Cmd m a #

MonadTransControl Cmd Source # 
Instance details

Defined in Lambdabot.Command

Associated Types

type StT Cmd a :: * #

Methods

liftWith :: Monad m => (Run Cmd -> m a) -> Cmd m a #

restoreT :: Monad m => m (StT Cmd a) -> Cmd m a #

MonadBase b m => MonadBase b (Cmd m) Source # 
Instance details

Defined in Lambdabot.Command

Methods

liftBase :: b α -> Cmd m α #

MonadBaseControl b m => MonadBaseControl b (Cmd m) Source # 
Instance details

Defined in Lambdabot.Command

Associated Types

type StM (Cmd m) a :: * #

Methods

liftBaseWith :: (RunInBase (Cmd m) b -> b a) -> Cmd m a #

restoreM :: StM (Cmd m) a -> Cmd m a #

Monad m => Monad (Cmd m) Source # 
Instance details

Defined in Lambdabot.Command

Methods

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

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

return :: a -> Cmd m a #

fail :: String -> Cmd m a #

Functor f => Functor (Cmd f) Source # 
Instance details

Defined in Lambdabot.Command

Methods

fmap :: (a -> b) -> Cmd f a -> Cmd f b #

(<$) :: a -> Cmd f b -> Cmd f a #

Applicative f => Applicative (Cmd f) Source # 
Instance details

Defined in Lambdabot.Command

Methods

pure :: a -> Cmd f a #

(<*>) :: Cmd f (a -> b) -> Cmd f a -> Cmd f b #

liftA2 :: (a -> b -> c) -> Cmd f a -> Cmd f b -> Cmd f c #

(*>) :: Cmd f a -> Cmd f b -> Cmd f b #

(<*) :: Cmd f a -> Cmd f b -> Cmd f a #

MonadIO m => MonadIO (Cmd m) Source # 
Instance details

Defined in Lambdabot.Command

Methods

liftIO :: IO a -> Cmd m a #

MonadConfig m => MonadConfig (Cmd m) Source # 
Instance details

Defined in Lambdabot.Command

Methods

getConfig :: Config a -> Cmd m a Source #

MonadLogging m => MonadLogging (Cmd m) Source # 
Instance details

Defined in Lambdabot.Command

MonadLB m => MonadLB (Cmd m) Source # 
Instance details

Defined in Lambdabot.Monad

Methods

lb :: LB a -> Cmd m a Source #

MonadLBState m => MonadLBState (Cmd m) Source # 
Instance details

Defined in Lambdabot.State

Associated Types

type LBState (Cmd m) :: * Source #

Methods

withMS :: (LBState (Cmd m) -> (LBState (Cmd m) -> Cmd m ()) -> Cmd m a) -> Cmd m a Source #

type StT Cmd a Source # 
Instance details

Defined in Lambdabot.Command

type StT Cmd a = (a, [String])
type LBState (Cmd m) Source # 
Instance details

Defined in Lambdabot.State

type LBState (Cmd m) = LBState m
type StM (Cmd m) a Source # 
Instance details

Defined in Lambdabot.Command

type StM (Cmd m) a = ComposeSt Cmd m a

say :: Monad m => String -> Cmd m () Source #

withMsg :: Monad m => (forall a. Message a => a -> Cmd m t) -> Cmd m t Source #

data Serial s Source #

Constructors

Serial 

stdSerial :: (Show s, Read s) => Serial s Source #

Default `instance' for a Serial

mapSerial :: (Ord k, Show k, Show v, Read k, Read v) => Serial (Map k v) Source #

Serializes a Map type if both the key and the value are instances of Read and Show. The serialization is done by converting the map to and from lists. Results are saved line-wise, for better editing and revison control.

readM :: (Monad m, Read a) => String -> m a Source #

readM behaves like read, but catches failure in a monad. this allocates a 20-30 M on startup...