packages feed

calamity-0.2.0.0: Calamity/Types/Model/Voice/VoiceState.hs

module Calamity.Types.Model.Voice.VoiceState (VoiceState (..)) where

import Calamity.Internal.AesonThings
import Calamity.Types.Model.Channel.Guild.Voice
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 Control.DeepSeq (NFData)
import TextShow
import qualified TextShow.Generic as TSG

data VoiceState = VoiceState
  { guildID :: Maybe (Snowflake Guild)
  , channelID :: Maybe (Snowflake VoiceChannel)
  , userID :: Snowflake User
  , sessionID :: Text
  , deaf :: Bool
  , mute :: Bool
  , selfDeaf :: Bool
  , selfMute :: Bool
  , suppress :: Bool
  }
  deriving (Show, Eq, Generic, NFData)
  deriving (TextShow) via TSG.FromGeneric VoiceState
  deriving (ToJSON, FromJSON) via CalamityJSON VoiceState