diff --git a/Network/IRC/Bot/BotMonad.hs b/Network/IRC/Bot/BotMonad.hs
--- a/Network/IRC/Bot/BotMonad.hs
+++ b/Network/IRC/Bot/BotMonad.hs
@@ -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
diff --git a/Network/IRC/Bot/Commands.hs b/Network/IRC/Bot/Commands.hs
--- a/Network/IRC/Bot/Commands.hs
+++ b/Network/IRC/Bot/Commands.hs
@@ -32,7 +32,7 @@
            
 data PrivMsg           
   = PrivMsg { prefix     :: (Maybe Prefix) 
-            , receivers  :: [String] 
+            , receivers  :: [String]
             , msg        :: String
             }
       deriving (Eq, Read, Show)
diff --git a/Network/IRC/Bot/Part/Dice.hs b/Network/IRC/Bot/Part/Dice.hs
--- a/Network/IRC/Bot/Part/Dice.hs
+++ b/Network/IRC/Bot/Part/Dice.hs
@@ -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
diff --git a/Network/IRC/Bot/Part/Hello.hs b/Network/IRC/Bot/Part/Hello.hs
new file mode 100644
--- /dev/null
+++ b/Network/IRC/Bot/Part/Hello.hs
@@ -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 ()
diff --git a/ircbot.cabal b/ircbot.cabal
--- a/ircbot.cabal
+++ b/ircbot.cabal
@@ -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
