packages feed

calamity-0.2.0.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 (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