packages feed

calamity-0.1.9.0: src/Calamity/Commands/Context.hs

-- | Command invokation context
module Calamity.Commands.Context
    ( Context(..) ) where

import {-# SOURCE #-} Calamity.Commands.Command
import           Calamity.Types.Model.Channel
import           Calamity.Types.Model.Guild
import           Calamity.Types.Model.User
import           Calamity.Types.Snowflake
import           Calamity.Types.Tellable

import qualified Data.Text.Lazy               as L

import           GHC.Generics

import           TextShow
import qualified TextShow.Generic             as TSG

data Context = Context
  { message        :: Message
  , guild          :: Maybe Guild
  , member         :: Maybe Member
  , channel        :: Channel
  , user           :: User
  , command        :: Command
  , prefix         :: L.Text
  , unparsedParams :: L.Text
    -- ^ The message remaining after consuming the prefix
  }
  deriving ( Show, Generic )
  deriving ( TextShow ) via TSG.FromGeneric Context

instance Tellable Context where
  getChannel Context { channel } = pure . getID $ channel