lambdabot-core-5.3.0.1: 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 listens 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

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

Defined in Lambdabot.Module

Methods

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

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

Defined in Lambdabot.Module

Associated Types

type StM (ModuleT st m) a Source #

Methods

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

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

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 Source #

Methods

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

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

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

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

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

Defined in Lambdabot.Module

Methods

fail :: String -> 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

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

Defined in Lambdabot.Module

Methods

throwM :: Exception e => e -> ModuleT st m a Source #

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

Defined in Lambdabot.Module

Methods

catch :: Exception e => ModuleT st m a -> (e -> ModuleT st m a) -> ModuleT st m a Source #

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

Defined in Lambdabot.Module

Methods

mask :: ((forall a. ModuleT st m a -> ModuleT st m a) -> ModuleT st m b) -> ModuleT st m b Source #

uninterruptibleMask :: ((forall a. ModuleT st m a -> ModuleT st m a) -> ModuleT st m b) -> ModuleT st m b Source #

generalBracket :: ModuleT st m a -> (a -> ExitCase b -> ModuleT st m c) -> (a -> ModuleT st m b) -> ModuleT st m (b, c) Source #

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

Defined in Lambdabot.Module

Methods

liftIO :: IO 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

Methods

getCurrentLogger :: ModuleT st m [String] Source #

logM :: String -> Priority -> String -> ModuleT st m () Source #

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

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

Instances details
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

Functor LB Source # 
Instance details

Defined in Lambdabot.Monad

Methods

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

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

MonadFail LB Source # 
Instance details

Defined in Lambdabot.Monad

Methods

fail :: String -> 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

MonadThrow LB Source # 
Instance details

Defined in Lambdabot.Monad

Methods

throwM :: Exception e => e -> LB a Source #

MonadCatch LB Source # 
Instance details

Defined in Lambdabot.Monad

Methods

catch :: Exception e => LB a -> (e -> LB a) -> LB a Source #

MonadMask LB Source # 
Instance details

Defined in Lambdabot.Monad

Methods

mask :: ((forall a. LB a -> LB a) -> LB b) -> LB b Source #

uninterruptibleMask :: ((forall a. LB a -> LB a) -> LB b) -> LB b Source #

generalBracket :: LB a -> (a -> ExitCase b -> LB c) -> (a -> LB b) -> LB (b, c) Source #

MonadRandom LB Source # 
Instance details

Defined in Lambdabot.Bot

MonadIO LB Source # 
Instance details

Defined in Lambdabot.Monad

Methods

liftIO :: IO a -> LB a

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

Methods

getCurrentLogger :: LB [String] Source #

logM :: String -> Priority -> String -> LB () Source #

MonadException LB Source # 
Instance details

Defined in Lambdabot.Monad

Methods

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

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 α Source #

MonadBaseControl IO LB Source # 
Instance details

Defined in Lambdabot.Monad

Associated Types

type StM LB a Source #

Methods

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

restoreM :: StM LB a -> LB a Source #

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

type StM LB a = StM (ReaderT (IRCRState, IORef IRCRWState) IO) a

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

Methods

lb :: LB a -> m a Source #

Instances

Instances details
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

Instances details
Eq ChanName Source # 
Instance details

Defined in Lambdabot.ChanName

Methods

(==) :: ChanName -> ChanName -> Bool

(/=) :: ChanName -> ChanName -> Bool

Ord ChanName Source # 
Instance details

Defined in Lambdabot.ChanName

Methods

compare :: ChanName -> ChanName -> Ordering

(<) :: ChanName -> ChanName -> Bool

(<=) :: ChanName -> ChanName -> Bool

(>) :: ChanName -> ChanName -> Bool

(>=) :: ChanName -> ChanName -> Bool

max :: ChanName -> ChanName -> ChanName

min :: ChanName -> ChanName -> 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

Instances details
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

outputDir :: Config FilePath Source #

dataDir :: Config FilePath Source #

data Command m Source #

Constructors

Command 

Fields

data Cmd m a Source #

Instances

Instances details
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 Source #

Methods

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

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

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

Defined in Lambdabot.Command

Methods

liftBase :: b α -> Cmd m α Source #

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

Defined in Lambdabot.Command

Associated Types

type StM (Cmd m) a Source #

Methods

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

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

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

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

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

Defined in Lambdabot.Command

Methods

fail :: String -> Cmd m 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

Methods

getCurrentLogger :: Cmd m [String] Source #

logM :: String -> Priority -> String -> Cmd m () Source #

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

cmdNames :: Command m -> [String] Source #

command :: String -> Command Identity Source #

getTarget :: Monad m => Cmd m Nick Source #

getCmdName :: Monad m => Cmd m String Source #

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

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

readNick :: Monad m => String -> Cmd m Nick Source #

showNick :: Monad m => Nick -> Cmd m String Source #

getServer :: Monad m => Cmd m String Source #

getSender :: Monad m => Cmd m Nick Source #

getLambdabotName :: Monad m => Cmd m Nick Source #

data Serial s Source #

Constructors

Serial 

Fields

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 revision control.

readM :: (MonadFail 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...

class Packable t where Source #

Instances

Instances details
Packable [(ByteString, ByteString)] Source # 
Instance details

Defined in Lambdabot.Util.Serial

Packable (Map ByteString [ByteString]) Source #

An instance for Map Packed [Packed] uses gzip compression

Instance details

Defined in Lambdabot.Util.Serial

Packable (Map ByteString (Bool, [(String, Int)])) Source # 
Instance details

Defined in Lambdabot.Util.Serial

Methods

readPacked :: ByteString -> Map ByteString (Bool, [(String, Int)]) Source #

showPacked :: Map ByteString (Bool, [(String, Int)]) -> ByteString Source #

Packable (Map ByteString ByteString) Source # 
Instance details

Defined in Lambdabot.Util.Serial