content: {-# LANGUAGE DataKinds #-}
  {-# LANGUAGE DeriveGeneric #-}
  {-# LANGUAGE TypeApplications #-}
  {-# LANGUAGE TypeOperators #-}
  module Telegram.Bot.API.Methods.SetMyDefaultAdministratorRights where
  
  import Data.Aeson (FromJSON (..), ToJSON (..))
  import Data.Proxy
  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
  import Telegram.Bot.API.Internal.TH
  
  -- ** 'setMyDefaultAdministratorRights'
  
  -- | Request parameters for 'setMyDefaultAdministratorRights'.
  data SetMyDefaultAdministratorRightsRequest = SetMyDefaultAdministratorRightsRequest
    { setMyDefaultAdministratorRightsRequestRights      :: Maybe ChatAdministratorRights -- ^ A JSON-serialized object describing new default administrator rights. If not specified, the default administrator rights will be cleared.
    , setMyDefaultAdministratorRightsRequestForChannels :: Maybe Bool -- ^ Pass 'True' to change the default administrator rights of the bot in channels. Otherwise, the default administrator rights of the bot for groups and supergroups will be changed.
    }
    deriving Generic
  
  instance ToJSON   SetMyDefaultAdministratorRightsRequest where toJSON = gtoJSON
  instance FromJSON SetMyDefaultAdministratorRightsRequest where parseJSON = gparseJSON
  
  type SetMyDefaultAdministratorRights = "setMyDefaultAdministratorRights"
    :> ReqBody '[JSON] SetMyDefaultAdministratorRightsRequest
    :> Post '[JSON] (Response Bool)
  
  -- | Use this method to change the default administrator rights requested by the bot when it's added as an administrator to groups or channels. These rights will be suggested to users, but they are are free to modify the list before adding the bot. Returns 'True' on success.
  setMyDefaultAdministratorRights
    :: SetMyDefaultAdministratorRightsRequest -> ClientM (Response Bool)
  setMyDefaultAdministratorRights = client (Proxy @SetMyDefaultAdministratorRights)
  
  makeDefault ''SetMyDefaultAdministratorRightsRequest
  