{-# LANGUAGE OverloadedStrings #-}
module Main where
import Data.Text (Text)
import qualified Data.Text as Text
import Telegram.Bot.API
import Telegram.Bot.Simple
import Telegram.Bot.Simple.UpdateParser (updateMessageText)
type Model = ()
data Action
= NoOp
| Echo Text
echoBot :: BotApp Model Action
echoBot = BotApp
{ botInitialModel = ()
, botAction = updateToAction
, botHandler = handleAction
, botJobs = []
}
updateToAction :: Update -> Model -> Maybe Action
updateToAction update _ =
case updateMessageText update of
Just text -> Just (Echo text)
Nothing -> Nothing
handleAction :: Action -> Model -> Eff Action Model
handleAction action model = case action of
NoOp -> pure model
Echo msg -> model <# do
replyText msg
return NoOp
run :: Token -> IO ()
run token = do
env <- defaultTelegramClientEnv token
startBot_ (conversationBot updateChatId echoBot) env
main :: IO ()
main = do
putStrLn "Please, enter Telegram bot's API token:"
token <- Token . Text.pack <$> getLine
run token