{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingVia #-} {-# LANGUAGE DuplicateRecordFields #-} module Web.Telegram.API.Sending.Data where import Data.Text (Text) import Deriving.Aeson import Web.Telegram.API.Common import Web.Telegram.Types import Web.Telegram.Types.Interaction import Web.Telegram.Types.Stock data SMessage = SMsg { chatId :: ChatId, text :: Text, disableWebPagePreview :: Maybe Bool, parseMode :: Maybe ParseMode, disableNotification :: Maybe Bool, replyToMessageId :: Maybe Int, replyMarkup :: Maybe ReplyMarkup } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via Snake SMessage data FwdMessage = FwdMsg { chatId :: ChatId, fromChatId :: ChatId, messageId :: Int, disableNotification :: Maybe Bool } deriving (Show, Eq, Generic, Default) deriving (FromJSON, ToJSON) via Snake FwdMessage data PhotoMessage a = PhotoMsg { chatId :: ChatId, photo :: a, caption :: Maybe Text, disableWebPagePreview :: Maybe Bool, parseMode :: Maybe ParseMode, disableNotification :: Maybe Bool, replyToMessageId :: Maybe Int, replyMarkup :: Maybe ReplyMarkup } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via Snake (PhotoMessage a) data AudioMessage a = AudioMsg { chatId :: ChatId, audio :: a, caption :: Maybe Text, duration :: Maybe Int, performer :: Maybe Text, title :: Maybe Text, parseMode :: Maybe ParseMode, disableNotification :: Maybe Bool, replyToMessageId :: Maybe Int, replyMarkup :: Maybe ReplyMarkup } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via Snake (AudioMessage a) data DocMessage a = DocMsg { chatId :: ChatId, document :: a, caption :: Maybe Text, parseMode :: Maybe ParseMode, disableNotification :: Maybe Bool, replyToMessageId :: Maybe Int, replyMarkup :: Maybe ReplyMarkup } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via Snake (DocMessage a) data VidMessage a = VidMsg { chatId :: ChatId, video :: a, duration :: Maybe Int, width :: Maybe Int, height :: Maybe Int, caption :: Maybe Text, supportsStreaming :: Maybe Bool, parseMode :: Maybe ParseMode, disableNotification :: Maybe Bool, replyToMessageId :: Maybe Int, replyMarkup :: Maybe ReplyMarkup } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via Snake (VidMessage a) data AnimationMessage a = AniMsg { chatId :: ChatId, animation :: a, duration :: Maybe Int, width :: Maybe Int, height :: Maybe Int, caption :: Maybe Text, parseMode :: Maybe ParseMode, disableNotification :: Maybe Bool, replyToMessageId :: Maybe Int, replyMarkup :: Maybe ReplyMarkup } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via Snake (AnimationMessage a) data VoiceMessage a = VoiceMsg { chatId :: ChatId, voice :: a, duration :: Maybe Int, caption :: Maybe Text, parseMode :: Maybe ParseMode, disableNotification :: Maybe Bool, replyToMessageId :: Maybe Int, replyMarkup :: Maybe ReplyMarkup } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via Snake (VoiceMessage a) data VNMessage a = VNMsg { chatId :: ChatId, video_note :: Text, duration :: Maybe Int, length :: Maybe Int, parseMode :: Maybe ParseMode, disableNotification :: Maybe Bool, replyToMessageId :: Maybe Int, replyMarkup :: Maybe ReplyMarkup } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via Snake (VNMessage a) data LocationMessage = LocationMsg { chatId :: ChatId, latitude :: Float, longitude :: Float, livePeriod :: Maybe Int, disableNotification :: Maybe Bool, replyToMessageId :: Maybe Int, replyMarkup :: Maybe ReplyMarkup } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via Snake LocationMessage data LocationEdit = LocationEdit { chatId :: Maybe ChatId, messageId :: Maybe Int, inlineMessageId :: Maybe Text, latitude :: Float, longitude :: Float, replyMarkup :: Maybe ReplyMarkup } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via Snake LocationEdit data LocationStop = LocationStop { chatId :: Maybe ChatId, messageId :: Maybe Int, inlineMessageId :: Maybe Text, replyMarkup :: Maybe ReplyMarkup } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via Snake LocationStop data VenueMessage = VenueMessage { chatId :: ChatId, latitude :: Float, longitude :: Float, title :: Text, address :: Text, foursquareId :: Maybe Text, foursquareType :: Maybe Text, disableNotification :: Maybe Bool, replyToMessageId :: Maybe Int, replyMarkup :: Maybe ReplyMarkup } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via Snake VenueMessage data ContactMessage = ContactMessage { chatId :: ChatId, phoneNumber :: Text, firstName :: Text, lastName :: Maybe Text, vcard :: Maybe Text, disableNotification :: Maybe Bool, replyToMessageId :: Maybe Int, replyMarkup :: Maybe ReplyMarkup } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via Snake ContactMessage data PollMessage = PollMsg { chatid :: ChatId, question :: Text, options :: [Text], isAnonymous :: Bool, pollType :: Maybe PollType, allowsMultipleAnswers :: Maybe Bool, correctOptionId :: Maybe Int, isClosed :: Maybe Bool, disableNotification :: Maybe Bool, replyToMessageId :: Maybe Int, replyMarkup :: Maybe ReplyMarkup } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via PrefixedSnake "poll" PollMessage data DiceMessage = DiceMessage { chatId :: ChatId, disableNotification :: Maybe Bool, replyToMessageId :: Maybe Int, replyMarkup :: Maybe ReplyMarkup } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via Snake DiceMessage data ChatAction = ChatAction { chatId :: ChatId, action :: Action } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via ChatAction data StickerMessage = StickerMessage { chatId :: ChatId, sticker :: Text, disableNotification :: Maybe Bool, replyToMessageId :: Maybe Int, replyMarkup :: Maybe ReplyMarkup } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via Snake StickerMessage