packages feed

ircbot 0.2.1 → 0.2.3

raw patch · 5 files changed

+47/−15 lines, 5 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Network.IRC.Bot.BotMonad: askSenderNickName :: BotMonad m => m (Maybe String)
+ Network.IRC.Bot.Part.Hello: helloCommand :: BotMonad m => String -> ParsecT String () m ()
+ Network.IRC.Bot.Part.Hello: helloPart :: BotMonad m => m ()

Files

Network/IRC/Bot/BotMonad.hs view
@@ -5,6 +5,7 @@     , BotEnv(..)     , runBotPartT     , mapBotPartT+    , askSenderNickName     ) where  import Control.Applicative (Applicative, Alternative, (<$>))@@ -36,7 +37,7 @@     , outChan   :: Chan Message     , logFn     :: Logger     , botName   :: String-    , cmdPrefix    :: String+    , cmdPrefix :: String     }    newtype BotPartT m a = BotPartT { unBotPartT :: ReaderT BotEnv m a }@@ -67,3 +68,11 @@     BotPartT $ do l <- logFn <$> ask                   liftIO $ l lvl msg   whoami       =  BotPartT $ botName <$> ask++-- | get the nickname of the user who sent the message+askSenderNickName :: (BotMonad m) => m (Maybe String)+askSenderNickName =+    do msg <- askMessage+       case msg_prefix msg of+         (Just (NickName nick _ _)) -> return (Just nick)+         _ -> return Nothing
Network/IRC/Bot/Commands.hs view
@@ -32,7 +32,7 @@             data PrivMsg              = PrivMsg { prefix     :: (Maybe Prefix) -            , receivers  :: [String] +            , receivers  :: [String]             , msg        :: String             }       deriving (Eq, Read, Show)
Network/IRC/Bot/Part/Dice.hs view
@@ -1,23 +1,21 @@ module Network.IRC.Bot.Part.Dice where -import Control.Monad-import Control.Monad.Trans-import Network.IRC.Bot.Log-import Network.IRC.Bot.BotMonad-import Network.IRC.Bot.Commands-import Network.IRC.Bot.Parsec-import System.Random (randomRIO)-import Text.Parsec-import Text.Parsec.Error (errorMessages, messageString)-import qualified Text.Parsec.Error as P+import Control.Monad            (replicateM)+import Control.Monad.Trans      (liftIO)+import Network.IRC.Bot.Log      (LogLevel(Debug))+import Network.IRC.Bot.BotMonad (BotMonad(..))+import Network.IRC.Bot.Commands (PrivMsg(..), sendCommand)+import Network.IRC.Bot.Parsec   (botPrefix, nat, parsecPart)+import System.Random            (randomRIO)+import Text.Parsec              (ParsecT, (<|>), (<?>), char, skipMany1, space, string, try)  dicePart :: (BotMonad m) => m () dicePart = parsecPart diceCommand  diceCommand :: (BotMonad m) => String -> ParsecT String () m () diceCommand target =-    do botPrefix-       try $ string "dice"+    do try $ botPrefix >> string "dice"+       logM Debug "dicePart"        (numDice, numSides, modifier) <- (do           skipMany1 space          nd <- nat <|> return 1
+ Network/IRC/Bot/Part/Hello.hs view
@@ -0,0 +1,24 @@+module Network.IRC.Bot.Part.Hello where++import Control.Monad.Trans      (liftIO)+import Data.Maybe               (fromMaybe)+import Network.IRC.Bot.Log      (LogLevel(Debug))+import Network.IRC.Bot.BotMonad (BotMonad(..), askSenderNickName)+import Network.IRC.Bot.Commands (PrivMsg(..), sendCommand)+import Network.IRC.Bot.Parsec   (botPrefix, parsecPart)+import System.Random            (randomRIO)+import Text.Parsec              (ParsecT, (<|>), string, try)++helloPart :: (BotMonad m) => m ()+helloPart = parsecPart helloCommand++helloCommand :: (BotMonad m) => String -> ParsecT String () m ()+helloCommand target =+    do try $ botPrefix >> string "hello"+       logM Debug "helloPart"+       mNick <- askSenderNickName+       let greetings = ["Hello", "Howdy", "Greetings", "Word up"]+       n <- liftIO $ randomRIO (0, length greetings - 1)+       let msg = greetings!!n ++ ", " ++ (fromMaybe "stranger" mNick)+       sendCommand (PrivMsg Nothing [target] msg)+    <|> return ()
ircbot.cabal view
@@ -1,5 +1,5 @@ Name:                ircbot-Version:             0.2.1+Version:             0.2.3 Synopsis:            A library for writing irc bots Homepage:            http://patch-tag.com/r/stepcut/ircbot License:             BSD3@@ -22,6 +22,7 @@                        Network.IRC.Bot.Log                        Network.IRC.Bot.Part.Channels                        Network.IRC.Bot.Part.Dice+                       Network.IRC.Bot.Part.Hello                        Network.IRC.Bot.Part.Ping                        Network.IRC.Bot.Part.NickUser                        Network.IRC.Bot.Parsec