calamity-0.8.0.0: Calamity/Gateway/Intents.hs
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE NoDeriveAnyClass #-}
-- | Discord gateway intents
module Calamity.Gateway.Intents (
Intents (..),
defaultIntents,
intentGuilds,
intentGuildMembers,
intentGuildBans,
intentGuildEmojis,
intentGuildIntegrations,
intentGuildWebhooks,
intentGuildInvites,
intentGuildVoiceStates,
intentGuildPresences,
intentGuildMessages,
intentGuildMessageReactions,
intentGuildMessageTyping,
intentDirectMessages,
intentDirectMessageReactions,
intentDirectMessageTyping,
) where
import Data.Aeson (ToJSON)
import Data.Bits (Bits (shiftL))
import Data.Default.Class (Default (..))
import Data.Flags (allBut, (.+.))
import Data.Flags.TH (bitmaskWrapper)
import Data.Word (Word32)
$( bitmaskWrapper
"Intents"
''Word32
[]
[ ("intentGuilds", 1 `shiftL` 0)
, ("intentGuildMembers", 1 `shiftL` 1)
, ("intentGuildBans", 1 `shiftL` 2)
, ("intentGuildEmojis", 1 `shiftL` 3)
, ("intentGuildIntegrations", 1 `shiftL` 4)
, ("intentGuildWebhooks", 1 `shiftL` 5)
, ("intentGuildInvites", 1 `shiftL` 6)
, ("intentGuildVoiceStates", 1 `shiftL` 7)
, ("intentGuildPresences", 1 `shiftL` 8)
, ("intentGuildMessages", 1 `shiftL` 9)
, ("intentGuildMessageReactions", 1 `shiftL` 10)
, ("intentGuildMessageTyping", 1 `shiftL` 11)
, ("intentDirectMessages", 1 `shiftL` 12)
, ("intentDirectMessageReactions", 1 `shiftL` 13)
, ("intentDirectMessageTyping", 1 `shiftL` 14)
, ("intentGuildScheduledEvents", 1 `shiftL` 16)
]
)
deriving via Word32 instance ToJSON Intents
-- | Default intents are all but the privileged intents: members and intents
defaultIntents :: Intents
defaultIntents = allBut (intentGuildMembers .+. intentGuildPresences)
-- | Default intents are all but the privileged intents: members and intents
instance Default Intents where
def = defaultIntents