-- | A minimal Haskbot server can be run via:
--
-- > {-# LANGUAGE OverloadedStrings #-}
-- >
-- > import Network.Haskbot
-- > import Network.Haskbot.Config
-- > import Network.Haskbot.Plugin
-- > import qualified Network.Haskbot.Plugin.Help as Help
-- >
-- > main :: IO ()
-- > main = haskbot config registry
-- >
-- > config :: Config
-- > config = Config { listenOn    = 3000
-- >                 , incEndpoint = "https://my-company.slack.com/services/hooks/incoming-webhook"
-- >                 , incToken    = "my-incoming-token"
-- >                 }
-- >
-- > registry :: [Plugin]
-- > registry = [ Help.register registry "my-slash-token" ]
--
--   This will run Haskbot on port 3000 with the included
--   "Network.Haskbot.Plugin.Help" plugin installed, where @\"my-slash-token\"@
--   is the secret token of a Slack slash command integration corresponding to
--   the @/haskbot@ command and pointing to the Haskbot server.
--
--   Be sure to create a Slack incoming integration (usually named /Haskbot/)
--   and set the 'incEndpoint' and 'incToken' to their corresponding values, so
--   that Slack can receive replies from Haskbot.
module Network.Haskbot
(
-- * Run a Haskbot server
  haskbot
) where

import Network.Haskbot.Internal.Server (webServer)
import Network.Haskbot.Config (Config)
import Network.Haskbot.Plugin (Plugin)

-- | Run the listed plugins on a Haskbot server with the given config
haskbot :: Config   -- ^ Your custom-created config
        -> [Plugin] -- ^ List of all Haskbot plugins to include
        -> IO ()
haskbot = webServer