packages feed

calamity-0.1.26.0: Calamity/Types/Model/Channel/Webhook.hs

-- | Channel webhooks
module Calamity.Types.Model.Channel.Webhook
    ( Webhook(..) ) where

import           Calamity.Internal.AesonThings
import {-# SOURCE #-} Calamity.Types.Model.Channel
import {-# SOURCE #-} Calamity.Types.Model.Guild.Guild
import           Calamity.Types.Model.User
import           Calamity.Types.Snowflake

import           Data.Aeson
import           Data.Text.Lazy                       ( Text )

import           GHC.Generics

import           TextShow
import qualified TextShow.Generic                     as TSG

data Webhook = Webhook
  { id        :: Snowflake Webhook
  , type_     :: Integer
  , guildID   :: Maybe (Snowflake Guild)
  , channelID :: Maybe (Snowflake Channel)
  , user      :: Maybe (Snowflake User)
  , name      :: Text
  , avatar    :: Text
  , token     :: Maybe Text
  }
  deriving ( Eq, Show, Generic )
  deriving ( TextShow ) via TSG.FromGeneric Webhook
  deriving ( FromJSON ) via WithSpecialCases '["user" `ExtractFieldFrom` "id"] Webhook
  deriving ( HasID Webhook ) via HasIDField "id" Webhook