{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeOperators #-}
module Telegram.Bot.API.Chat where

import Data.Coerce (coerce)
import Data.Proxy
import Servant.API
import Servant.Client hiding (Response)

import Telegram.Bot.API.Internal.Utils
import Telegram.Bot.API.MakingRequests
import Telegram.Bot.API.Types

-- * Available methods

-- ** 'kickChatMember'
type KickChatMember = "kickChatMember"
  :> RequiredQueryParam "chat_id" ChatId
  :> RequiredQueryParam "user_id" UserId
  :> Get '[JSON] (Response Bool)

-- | Use this method to kick user from chat.
-- On success, the sent Bool is returned.
kickChatMember :: ChatId -> UserId -> ClientM (Response Bool)
kickChatMember :: ChatId -> UserId -> ClientM (Response Bool)
kickChatMember = Proxy KickChatMember -> Client ClientM KickChatMember
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (Proxy KickChatMember
forall k (t :: k). Proxy t
Proxy @KickChatMember)