{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE TemplateHaskell #-}
module Telegram.Bot.API.UpdatingMessages where
import Data.Aeson
import Data.Proxy
import Data.Text (Text)
import GHC.Generics (Generic)
import Servant.API
import Servant.Client (ClientM, client)
import Telegram.Bot.API.Internal.Utils (deriveJSON', gtoJSON)
import Telegram.Bot.API.MakingRequests
import Telegram.Bot.API.Methods
import Telegram.Bot.API.Types
import Telegram.Bot.API.Internal.TH (makeDefault)
data EditMessageResponse
= EditedInlineMessage Bool
| EditedMessage Message
deriving (Int -> EditMessageResponse -> ShowS
[EditMessageResponse] -> ShowS
EditMessageResponse -> String
(Int -> EditMessageResponse -> ShowS)
-> (EditMessageResponse -> String)
-> ([EditMessageResponse] -> ShowS)
-> Show EditMessageResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> EditMessageResponse -> ShowS
showsPrec :: Int -> EditMessageResponse -> ShowS
$cshow :: EditMessageResponse -> String
show :: EditMessageResponse -> String
$cshowList :: [EditMessageResponse] -> ShowS
showList :: [EditMessageResponse] -> ShowS
Show, (forall x. EditMessageResponse -> Rep EditMessageResponse x)
-> (forall x. Rep EditMessageResponse x -> EditMessageResponse)
-> Generic EditMessageResponse
forall x. Rep EditMessageResponse x -> EditMessageResponse
forall x. EditMessageResponse -> Rep EditMessageResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. EditMessageResponse -> Rep EditMessageResponse x
from :: forall x. EditMessageResponse -> Rep EditMessageResponse x
$cto :: forall x. Rep EditMessageResponse x -> EditMessageResponse
to :: forall x. Rep EditMessageResponse x -> EditMessageResponse
Generic)
instance FromJSON EditMessageResponse where
parseJSON :: Value -> Parser EditMessageResponse
parseJSON (Data.Aeson.Bool Bool
b) = EditMessageResponse -> Parser EditMessageResponse
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Bool -> EditMessageResponse
EditedInlineMessage Bool
b)
parseJSON o :: Value
o@(Data.Aeson.Object Object
_) = Message -> EditMessageResponse
EditedMessage (Message -> EditMessageResponse)
-> Parser Message -> Parser EditMessageResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Value -> Parser Message
forall a. FromJSON a => Value -> Parser a
parseJSON Value
o
parseJSON Value
_ = String -> Parser EditMessageResponse
forall a. String -> Parser a
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"Unable to parse EditMessageResponse: expected either a Bool or a Message"
data EditMessageTextRequest = EditMessageTextRequest
{ EditMessageTextRequest -> Maybe SomeChatId
editMessageTextChatId :: Maybe SomeChatId
, EditMessageTextRequest -> Maybe MessageId
editMessageTextMessageId :: Maybe MessageId
, EditMessageTextRequest -> Maybe MessageId
editMessageTextInlineMessageId :: Maybe MessageId
, EditMessageTextRequest -> Text
editMessageTextText :: Text
, EditMessageTextRequest -> Maybe ParseMode
editMessageTextParseMode :: Maybe ParseMode
, EditMessageTextRequest -> Maybe [MessageEntity]
editMessageEntities :: Maybe [MessageEntity]
, EditMessageTextRequest -> Maybe LinkPreviewOptions
editMessageTextLinkPreviewOptions :: Maybe LinkPreviewOptions
, EditMessageTextRequest -> Maybe SomeReplyMarkup
editMessageTextReplyMarkup :: Maybe SomeReplyMarkup
} deriving ((forall x. EditMessageTextRequest -> Rep EditMessageTextRequest x)
-> (forall x.
Rep EditMessageTextRequest x -> EditMessageTextRequest)
-> Generic EditMessageTextRequest
forall x. Rep EditMessageTextRequest x -> EditMessageTextRequest
forall x. EditMessageTextRequest -> Rep EditMessageTextRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. EditMessageTextRequest -> Rep EditMessageTextRequest x
from :: forall x. EditMessageTextRequest -> Rep EditMessageTextRequest x
$cto :: forall x. Rep EditMessageTextRequest x -> EditMessageTextRequest
to :: forall x. Rep EditMessageTextRequest x -> EditMessageTextRequest
Generic)
data EditMessageCaptionRequest = EditMessageCaptionRequest
{ EditMessageCaptionRequest -> Maybe SomeChatId
editMessageCaptionChatId :: Maybe SomeChatId
, EditMessageCaptionRequest -> Maybe MessageId
editMessageCaptionMessageId :: Maybe MessageId
, EditMessageCaptionRequest -> Maybe MessageId
editMessageCaptionInlineMessageId :: Maybe MessageId
, EditMessageCaptionRequest -> Maybe Text
editMessageCaptionCaption :: Maybe Text
, EditMessageCaptionRequest -> Maybe ParseMode
editMessageCaptionParseMode :: Maybe ParseMode
, EditMessageCaptionRequest -> Maybe [MessageEntity]
editMessageCaptionCaptionEntities :: Maybe [MessageEntity]
, EditMessageCaptionRequest -> Maybe SomeReplyMarkup
editMessageCaptionReplyMarkup :: Maybe SomeReplyMarkup
} deriving ((forall x.
EditMessageCaptionRequest -> Rep EditMessageCaptionRequest x)
-> (forall x.
Rep EditMessageCaptionRequest x -> EditMessageCaptionRequest)
-> Generic EditMessageCaptionRequest
forall x.
Rep EditMessageCaptionRequest x -> EditMessageCaptionRequest
forall x.
EditMessageCaptionRequest -> Rep EditMessageCaptionRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
EditMessageCaptionRequest -> Rep EditMessageCaptionRequest x
from :: forall x.
EditMessageCaptionRequest -> Rep EditMessageCaptionRequest x
$cto :: forall x.
Rep EditMessageCaptionRequest x -> EditMessageCaptionRequest
to :: forall x.
Rep EditMessageCaptionRequest x -> EditMessageCaptionRequest
Generic)
data EditMessageMediaRequest = EditMessageMediaRequest
{ EditMessageMediaRequest -> Maybe SomeChatId
editMessageMediaChatId :: Maybe SomeChatId
, EditMessageMediaRequest -> Maybe MessageId
editMessageMediaMessageId :: Maybe MessageId
, EditMessageMediaRequest -> Maybe MessageId
editMessageMediaInlineMessageId :: Maybe MessageId
, EditMessageMediaRequest -> InputMedia
editMessageMediaMedia :: InputMedia
, EditMessageMediaRequest -> Maybe SomeReplyMarkup
editMessageMediaReplyMarkup :: Maybe SomeReplyMarkup
} deriving ((forall x.
EditMessageMediaRequest -> Rep EditMessageMediaRequest x)
-> (forall x.
Rep EditMessageMediaRequest x -> EditMessageMediaRequest)
-> Generic EditMessageMediaRequest
forall x. Rep EditMessageMediaRequest x -> EditMessageMediaRequest
forall x. EditMessageMediaRequest -> Rep EditMessageMediaRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. EditMessageMediaRequest -> Rep EditMessageMediaRequest x
from :: forall x. EditMessageMediaRequest -> Rep EditMessageMediaRequest x
$cto :: forall x. Rep EditMessageMediaRequest x -> EditMessageMediaRequest
to :: forall x. Rep EditMessageMediaRequest x -> EditMessageMediaRequest
Generic)
instance ToJSON EditMessageMediaRequest where toJSON :: EditMessageMediaRequest -> Value
toJSON = EditMessageMediaRequest -> Value
forall a (d :: Meta) (f :: * -> *).
(Generic a, GToJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
a -> Value
gtoJSON
data EditMessageReplyMarkupRequest = EditMessageReplyMarkupRequest
{ EditMessageReplyMarkupRequest -> Maybe SomeChatId
editMessageReplyMarkupChatId :: Maybe SomeChatId
, EditMessageReplyMarkupRequest -> Maybe MessageId
editMessageReplyMarkupMessageId :: Maybe MessageId
, EditMessageReplyMarkupRequest -> Maybe MessageId
editMessageReplyMarkupInlineMessageId :: Maybe MessageId
, EditMessageReplyMarkupRequest -> Maybe SomeReplyMarkup
editMessageReplyMarkupReplyMarkup :: Maybe SomeReplyMarkup
} deriving ((forall x.
EditMessageReplyMarkupRequest
-> Rep EditMessageReplyMarkupRequest x)
-> (forall x.
Rep EditMessageReplyMarkupRequest x
-> EditMessageReplyMarkupRequest)
-> Generic EditMessageReplyMarkupRequest
forall x.
Rep EditMessageReplyMarkupRequest x
-> EditMessageReplyMarkupRequest
forall x.
EditMessageReplyMarkupRequest
-> Rep EditMessageReplyMarkupRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
EditMessageReplyMarkupRequest
-> Rep EditMessageReplyMarkupRequest x
from :: forall x.
EditMessageReplyMarkupRequest
-> Rep EditMessageReplyMarkupRequest x
$cto :: forall x.
Rep EditMessageReplyMarkupRequest x
-> EditMessageReplyMarkupRequest
to :: forall x.
Rep EditMessageReplyMarkupRequest x
-> EditMessageReplyMarkupRequest
Generic)
data StopPollRequest = StopPollRequest
{ StopPollRequest -> SomeChatId
stopPollChatId :: SomeChatId
, StopPollRequest -> MessageId
stopPollMessageId :: MessageId
, StopPollRequest -> Maybe SomeReplyMarkup
stopPollReplyMarkup :: Maybe SomeReplyMarkup
} deriving ((forall x. StopPollRequest -> Rep StopPollRequest x)
-> (forall x. Rep StopPollRequest x -> StopPollRequest)
-> Generic StopPollRequest
forall x. Rep StopPollRequest x -> StopPollRequest
forall x. StopPollRequest -> Rep StopPollRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. StopPollRequest -> Rep StopPollRequest x
from :: forall x. StopPollRequest -> Rep StopPollRequest x
$cto :: forall x. Rep StopPollRequest x -> StopPollRequest
to :: forall x. Rep StopPollRequest x -> StopPollRequest
Generic)
foldMap deriveJSON'
[ ''EditMessageTextRequest
, ''EditMessageCaptionRequest
, ''EditMessageReplyMarkupRequest
, ''StopPollRequest
]
type EditMessageText
= "editMessageText"
:> ReqBody '[JSON] EditMessageTextRequest
:> Post '[JSON] (Response EditMessageResponse)
editMessageText :: EditMessageTextRequest -> ClientM (Response EditMessageResponse)
editMessageText :: EditMessageTextRequest -> ClientM (Response EditMessageResponse)
editMessageText = Proxy EditMessageText -> Client ClientM EditMessageText
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @EditMessageText)
type EditMessageCaption = "editMessageCaption"
:> ReqBody '[JSON] EditMessageCaptionRequest
:> Post '[JSON] (Response EditMessageResponse)
editMessageCaption :: EditMessageCaptionRequest -> ClientM (Response EditMessageResponse)
editMessageCaption :: EditMessageCaptionRequest -> ClientM (Response EditMessageResponse)
editMessageCaption = Proxy EditMessageCaption -> Client ClientM EditMessageCaption
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @EditMessageCaption)
type EditMessageMedia = "editMessageMedia"
:> ReqBody '[JSON] EditMessageMediaRequest
:> Post '[JSON] (Response EditMessageResponse)
editMessageMedia :: EditMessageMediaRequest -> ClientM (Response EditMessageResponse)
editMessageMedia :: EditMessageMediaRequest -> ClientM (Response EditMessageResponse)
editMessageMedia = Proxy EditMessageMedia -> Client ClientM EditMessageMedia
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @EditMessageMedia)
type EditMessageReplyMarkup = "editMessageReplyMarkup"
:> ReqBody '[JSON] EditMessageReplyMarkupRequest
:> Post '[JSON] (Response EditMessageResponse)
editMessageReplyMarkup :: EditMessageReplyMarkupRequest -> ClientM (Response EditMessageResponse)
editMessageReplyMarkup :: EditMessageReplyMarkupRequest
-> ClientM (Response EditMessageResponse)
editMessageReplyMarkup = Proxy EditMessageReplyMarkup
-> Client ClientM EditMessageReplyMarkup
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @EditMessageReplyMarkup)
type StopPoll = "stopPoll"
:> ReqBody '[JSON] StopPollRequest
:> Post '[JSON] (Response Poll)
stopPoll :: StopPollRequest -> ClientM (Response Poll)
stopPoll :: StopPollRequest -> ClientM (Response Poll)
stopPoll = Proxy StopPoll -> Client ClientM StopPoll
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @StopPoll)
foldMap makeDefault
[ ''EditMessageTextRequest
, ''EditMessageCaptionRequest
, ''EditMessageReplyMarkupRequest
, ''StopPollRequest
]