{-# LANGUAGE ConstraintKinds, RankNTypes, FlexibleContexts #-} module Network.Anticiv.Modules.Barkeeper (initBarkeeper, listBarkeeper) where import Control.Monad import Data.Char import Data.Chatty.Atoms import Data.Chatty.Hetero import Network.Anticiv.Convenience import Network.Anticiv.Masks import Network.Anticiv.Monad import Text.Printf initBarkeeper :: Packciv (Packciv [String]) initBarkeeper = do regPriorityChanmsg msg return listBarkeeper listBarkeeper :: Packciv [String] listBarkeeper = return ["beer","vodka","vplus"] msg :: Atom Handler -> UserA -> String -> Anticiv Bool msg _ u s = do pref <- bprefix s & pref :-: LocalT u "beer" :-: ChannelUser #-> (actionfl "Beer" . userNick <=< getAtom) .|| pref :-: LocalT u "vodka" :-: ChannelUser #-> (actionfl "Vodka" . userNick <=< getAtom) .|| pref :-: LocalT u "vplus" :-: ChannelUser #->> addressfl u "VPlus"