{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeOperators #-}
module Telegram.Bot.API.Methods where
import Data.Aeson
import Data.Proxy
import Data.Text (Text)
import GHC.Generics (Generic)
import Servant.API
import Servant.Client hiding (Response)
import Telegram.Bot.API.Internal.Utils
import Telegram.Bot.API.MakingRequests
import Telegram.Bot.API.Types
type GetMe = "getMe" :> Get '[JSON] (Response User)
getMe :: ClientM (Response User)
getMe = client (Proxy @GetMe)
type DeleteMessage = "deleteMessage"
:> RequiredQueryParam "chat_id" ChatId
:> RequiredQueryParam "message_id" MessageId
:> Get '[JSON] (Response Bool)
deleteMessage :: ChatId -> MessageId -> ClientM (Response Bool)
deleteMessage = client (Proxy @DeleteMessage)
type SendMessage
= "sendMessage" :> ReqBody '[JSON] SendMessageRequest :> Post '[JSON] (Response Message)
sendMessage :: SendMessageRequest -> ClientM (Response Message)
sendMessage = client (Proxy @SendMessage)
data SomeChatId
= SomeChatId ChatId
| SomeChatUsername Text
deriving (Generic)
instance ToJSON SomeChatId where toJSON = genericSomeToJSON
instance FromJSON SomeChatId where parseJSON = genericSomeParseJSON
data SomeReplyMarkup
= SomeInlineKeyboardMarkup InlineKeyboardMarkup
| SomeReplyKeyboardMarkup ReplyKeyboardMarkup
| SomeReplyKeyboardRemove ReplyKeyboardRemove
| SomeForceReply ForceReply
deriving (Generic)
instance ToJSON SomeReplyMarkup where toJSON = genericSomeToJSON
instance FromJSON SomeReplyMarkup where parseJSON = genericSomeParseJSON
data ParseMode
= Markdown
| HTML
deriving (Generic)
instance ToJSON ParseMode
instance FromJSON ParseMode
data SendMessageRequest = SendMessageRequest
{ sendMessageChatId :: SomeChatId
, sendMessageText :: Text
, sendMessageParseMode :: Maybe ParseMode
, sendMessageDisableWebPagePreview :: Maybe Bool
, sendMessageDisableNotification :: Maybe Bool
, sendMessageReplyToMessageId :: Maybe MessageId
, sendMessageReplyMarkup :: Maybe SomeReplyMarkup
} deriving (Generic)
instance ToJSON SendMessageRequest where toJSON = gtoJSON
instance FromJSON SendMessageRequest where parseJSON = gparseJSON