module Calamity.Types.Model.Channel.Guild.Text
( TextChannel(..) ) where
import Calamity.Internal.AesonThings
import Calamity.Internal.Utils ()
import {-# SOURCE #-} Calamity.Types.Model.Channel
import {-# SOURCE #-} Calamity.Types.Model.Channel.Guild.Category
import {-# SOURCE #-} Calamity.Types.Model.Channel.Message
import {-# SOURCE #-} Calamity.Types.Model.Guild.Guild
import Calamity.Types.Model.Guild.Overwrite
import Calamity.Types.Snowflake
import Data.Aeson
import Data.Text.Lazy ( Text )
import Data.Time
import GHC.Generics
import TextShow
import qualified TextShow.Generic as TSG
data TextChannel = TextChannel
{ id :: Snowflake TextChannel
, guildID :: Snowflake Guild
, position :: Int
, permissionOverwrites :: [Overwrite]
, name :: Text
, topic :: Maybe Text
, nsfw :: Bool
, lastMessageID :: Maybe (Snowflake Message)
, lastPinTimestamp :: Maybe UTCTime
, rateLimitPerUser :: Maybe Int
, parentID :: Maybe (Snowflake Category)
}
deriving ( Show, Eq, Generic )
deriving ( TextShow ) via TSG.FromGeneric TextChannel
deriving ( ToJSON ) via CalamityJSON TextChannel
deriving ( FromJSON ) via WithSpecialCases '[IfNoneThen "nsfw" DefaultToFalse]
TextChannel
deriving ( HasID TextChannel ) via HasIDField "id" TextChannel
deriving ( HasID Channel ) via HasIDFieldCoerce' "id" TextChannel
deriving ( HasID Guild ) via HasIDField "guildID" TextChannel