telegram-bot-api-7.3: src/Telegram/Bot/API/Methods/SendChatAction.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeOperators #-}
module Telegram.Bot.API.Methods.SendChatAction where
import Data.Aeson (ToJSON (..))
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
data SendChatActionRequest = SendChatActionRequest
{ sendChatActionBusinessConnectionId :: Maybe BusinessConnectionId -- ^ Unique identifier of the business connection on behalf of which the action will be sent.
, sendChatActionChatId :: ChatId -- ^ Unique identifier for the target chat or username of the target channel (in the format @\@channelusername@).
, sendChatActionMessageThreadId :: Maybe MessageThreadId -- ^ Unique identifier for the target message thread; for supergroups only.
, sendChatActionAction :: Text -- ^ Type of action to broadcast. Choose one, depending on what the user is about to receive: typing for text messages, upload_photo for photos, record_video or upload_video for videos, record_voice or upload_voice for voice notes, upload_document for general files, choose_sticker for stickers, find_location for location data, record_video_note or upload_video_note for video notes.
}
deriving Generic
instance ToJSON SendChatActionRequest where toJSON = gtoJSON
type SendChatAction = "sendChatAction"
:> ReqBody '[JSON] SendChatActionRequest
:> Post '[JSON] (Response Bool)
-- | Use this method when you need to tell the
-- user that something is happening on the bot's side.
-- The status is set for 5 seconds or less
-- (when a message arrives from your bot, Telegram
-- clients clear its typing status).
-- Returns True on success.
--
-- Example: The ImageBot needs some time to
-- process a request and upload the image.
-- Instead of sending a text message along
-- the lines of “Retrieving image, please wait…”,
-- the bot may use sendChatAction with action = upload_photo.
-- The user will see a “sending photo” status for the bot.
--
-- We only recommend using this method when a
-- response from the bot will take a noticeable
-- amount of time to arrive.
sendChatAction :: SendChatActionRequest -> ClientM (Response Bool)
sendChatAction = client (Proxy @SendChatAction)