haskbot-core-0.0.1.0: src/Network/Haskbot/Internal/Plugin.hs
module Network.Haskbot.Internal.Plugin
( Plugin (..)
, isAuthorized
, runPlugin
, selectFrom
) where
import Data.List (find)
import Data.Text (Text)
import Network.Haskbot.Internal.Environment (Haskbot)
import Network.Haskbot.Internal.Incoming (Incoming (Incoming), addToSendQueue)
import Network.Haskbot.Plugin (Plugin (..))
import Network.Haskbot.SlashCommand (SlashCom, token)
import Network.Haskbot.Types
runPlugin :: Plugin -> SlashCom -> Haskbot ()
runPlugin p slashCom = plHandler p slashCom >>= maybe (return ()) addToSendQueue
isAuthorized :: Plugin -> SlashCom -> Bool
isAuthorized plugin slashCom = plToken plugin == token slashCom
selectFrom :: [Plugin] -> Command -> Maybe Plugin
selectFrom list com = find (\p -> plCommand p == com) list