hask-irc/Network/IRC/Types.hs

48 lines
1.7 KiB
Haskell
Raw Normal View History

2014-05-04 02:57:43 +05:30
module Network.IRC.Types where
import Control.Monad.Reader
2014-05-04 07:43:37 +05:30
import Data.Text (Text)
2014-05-04 02:57:43 +05:30
import System.IO
import System.Time
2014-05-04 07:43:37 +05:30
type Channel = Text
type Nick = Text
type HandlerName = Text
2014-05-04 04:28:44 +05:30
type Handler = BotConfig -> Message -> IO (Maybe Command)
2014-05-04 02:57:43 +05:30
2014-05-04 07:43:37 +05:30
data User = Self | User { userNick :: Nick, userServer :: Text }
2014-05-04 02:57:43 +05:30
deriving (Show, Eq)
data Message =
2014-05-04 08:44:54 +05:30
ChannelMsg { time :: ClockTime, user :: User, msg :: Text }
| PrivMsg { time :: ClockTime, user :: User, msg :: Text }
| Ping { time :: ClockTime, msg :: Text }
| JoinMsg { time :: ClockTime, user :: User }
| ModeMsg { time :: ClockTime, user :: User, target :: Text , mode :: Text, modeArgs :: [Text] }
| NickMsg { time :: ClockTime, user :: User, nick :: Text }
| QuitMsg { time :: ClockTime, user :: User, msg :: Text }
| PartMsg { time :: ClockTime, user :: User, msg :: Text }
| KickMsg { time :: ClockTime, user :: User, msg :: Text }
| OtherMsg { time :: ClockTime, source :: Text, command :: Text , target :: Text, msg :: Text }
2014-05-04 02:57:43 +05:30
deriving (Show, Eq)
data Command =
2014-05-04 08:44:54 +05:30
Pong { rmsg :: Text }
| ChannelMsgReply { rmsg :: Text }
2014-05-04 07:43:37 +05:30
| PrivMsgReply { ruser :: User, rmsg :: Text }
2014-05-04 02:57:43 +05:30
| NickCmd
| UserCmd
| JoinCmd
deriving (Show, Eq)
2014-05-04 08:44:54 +05:30
data BotConfig = BotConfig { server :: String
, port :: Int
, channel :: Text
, botNick :: Text
, botTimeout :: Int
2014-05-04 08:44:54 +05:30
, handlers :: [HandlerName] }
2014-05-04 04:28:44 +05:30
deriving (Show, Eq)
data Bot = Bot { botConfig :: BotConfig, socket :: Handle } deriving (Show, Eq)
2014-05-04 02:57:43 +05:30
type IRC = ReaderT Bot IO