{-# LANGUAGE NoDeriveAnyClass #-}
{-# LANGUAGE TemplateHaskell #-}
module Calamity.Types.Model.Guild.Permissions
( Permissions(..)
, createInstantInvite
, kickMembers
, banMembers
, administrator
, manageChannels
, manageGuild
, addReactions
, viewAuditLog
, prioritySpeaker
, stream
, viewChannel
, sendMessages
, sendTtsMessages
, manageMessages
, embedLinks
, attachFiles
, readMessageHistory
, mentionEveryone
, useExternalEmojis
, viewGuildInsights
, connect
, speak
, muteMembers
, deafenMembers
, moveMembers
, useVad
, changeNickname
, manageNicknames
, manageRoles
, manageWebhooks
, manageEmojis ) where
import Data.Aeson ( FromJSON, ToJSON )
import Data.Flags ()
import Data.Flags.TH
import Data.Word
import TextShow
$(bitmaskWrapper "Permissions" ''Word64 []
[ ("createInstantInvite", 0x00000001)
, ("kickMembers", 0x00000002)
, ("banMembers", 0x00000004)
, ("administrator", 0x00000008)
, ("manageChannels", 0x00000010)
, ("manageGuild", 0x00000020)
, ("addReactions", 0x00000040)
, ("viewAuditLog", 0x00000080)
, ("prioritySpeaker", 0x00000100)
, ("stream", 0x00000200)
, ("viewChannel", 0x00000400)
, ("sendMessages", 0x00000800)
, ("sendTtsMessages", 0x00001000)
, ("manageMessages", 0x00002000)
, ("embedLinks", 0x00004000)
, ("attachFiles", 0x00008000)
, ("readMessageHistory", 0x00010000)
, ("mentionEveryone", 0x00020000)
, ("useExternalEmojis", 0x00040000)
, ("viewGuildInsights", 0x00080000)
, ("connect", 0x00100000)
, ("speak", 0x00200000)
, ("muteMembers", 0x00400000)
, ("deafenMembers", 0x00800000)
, ("moveMembers", 0x01000000)
, ("useVad", 0x02000000)
, ("changeNickname", 0x04000000)
, ("manageNicknames", 0x08000000)
, ("manageRoles", 0x10000000)
, ("manageWebhooks", 0x20000000)
, ("manageEmojis", 0x4000000)])
deriving via Word64 instance ToJSON Permissions
deriving via Word64 instance FromJSON Permissions
deriving via FromStringShow Permissions instance TextShow Permissions