{-# LANGUAGE NoDeriveAnyClass #-} {-# LANGUAGE TemplateHaskell #-} -- | Guild permissions 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