42 lines
924 B
Haskell
42 lines
924 B
Haskell
module Hsbot.Utils
|
|
( error
|
|
, errorM
|
|
, inColor
|
|
, sendstr
|
|
, trace
|
|
, traceM
|
|
) where
|
|
|
|
import Control.Monad.State
|
|
import Data.List
|
|
import System.IO
|
|
|
|
import Hsbot.Types
|
|
|
|
-- |Wrap a string with ANSI escape sequences.
|
|
inColor :: String -> [Int] -> String
|
|
inColor str vals = "\ESC[" ++ valstr ++ "m" ++ str ++ "\ESC[0m"
|
|
where valstr = concat $ intersperse ";" $ map show vals
|
|
|
|
-- | Sends a string over handle
|
|
sendstr :: String -> IrcBot ()
|
|
sendstr str = do
|
|
handle <- gets botHandle
|
|
traceM $ inColor ("--> " ++ str) [33]
|
|
liftIO $ hPutStr handle (str ++ "\r\n")
|
|
|
|
-- | Log a message string
|
|
trace :: String -> IO ()
|
|
trace msg = putStrLn msg
|
|
|
|
-- | Log a message string
|
|
traceM :: String -> IrcBot ()
|
|
traceM msg = liftIO $ trace msg
|
|
|
|
-- | Logs an error message
|
|
traceRed :: String -> IO ()
|
|
traceRed msg = trace $ inColor msg [31]
|
|
|
|
errorM :: String -> IrcBot ()
|
|
errorM msg = liftIO $ traceRed msg
|
|
|