packages feed

proof-assistant-bot-0.2.0: src/Proof/Assistant/Request.hs

module Proof.Assistant.Request where

import Data.ByteString (ByteString)
import Data.Text.Encoding (encodeUtf8)
import Telegram.Bot.API
import Telegram.Bot.Simple.UpdateParser

-- | Request from Telegram.
data InterpreterRequest = InterpreterRequest
  { interpreterRequestTelegramChatId :: !ChatId -- ^ Telegram ChatId (for reply and isolation).
  , interpreterRequestTelegramMessageId :: !MessageId -- ^ Telegram MessageId (for reply).
  , interpreterRequestMessage :: !ByteString -- ^ Message content.
  }

-- | Cast Telegram Update to 'InterpreterRequest'.
updateToRequest :: Update -> Maybe InterpreterRequest
updateToRequest upd = InterpreterRequest
  <$> updateChatId upd -- chatId
  <*> (fmap messageMessageId . extractUpdateMessage) upd -- messageId
  <*> (encodeUtf8 <$> updateMessageText upd)