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)