{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DerivingVia #-} {-# LANGUAGE DuplicateRecordFields #-} module Web.Telegram.API.Actions.Data where import Data.Text (Text) import Data.Time.Clock.POSIX import Deriving.Aeson import Web.Telegram.API.Common import Web.Telegram.Types import Web.Telegram.Types.Inline import Web.Telegram.Types.Stock import Web.Telegram.Types.Update data Kick = Kick { chatId :: ChatId, userId :: Int, untilDate :: Maybe POSIXTime } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via Snake Kick data Unban = Unban { chatId :: ChatId, userId :: Int } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via Snake Unban data Restriction = Restriction { chatId :: ChatId, userId :: Int, permissions :: ChatPermissions, untilDate :: Maybe POSIXTime } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via Snake Restriction data Promotion = Promotion { chatId :: ChatId, userId :: Int, canChangeInfo :: Maybe Bool, canPostMessages :: Maybe Bool, canEditMessages :: Maybe Bool, canDeleteMessages :: Maybe Bool, canInviteUsers :: Maybe Bool, canRestrictMembers :: Maybe Bool, canPinMessages :: Maybe Bool, canPromoteMembers :: Maybe Bool } deriving (Show, Eq, Generic, Default) deriving (ToJSON) via Snake Promotion data InlineQueryAnswer = InlineQueryAnswer { inlineQueryId :: Text, results :: [InlineQueryResult], cacheTime :: Maybe Int, isPersonal :: Maybe Bool, nextOffset :: Maybe Text, switchPmText :: Maybe Text, switchPmParameter :: Maybe Text } deriving (Show, Eq, Generic, Default) deriving (ToJSON, FromJSON) via Snake InlineQueryAnswer data CallbackQueryAnswer = CQAns { callbackQueryId :: Text, text :: Maybe Text, showAlert :: Maybe Bool, url :: Maybe Text, cacheTime :: Maybe Int } deriving (Show, Eq, Generic, Default) deriving (ToJSON, FromJSON) via Snake CallbackQueryAnswer newtype CommandSet = CommandSet { commands :: [BotCommand] } deriving (Show, Eq, Generic, Default) deriving (ToJSON, FromJSON) via Snake CommandSet