github.com/starshine-sys/bcr@v0.21.0/perm_strings.go (about) 1 package bcr 2 3 import "github.com/diamondburned/arikawa/v3/discord" 4 5 // Perm is a single permission 6 type Perm struct { 7 Permission discord.Permissions 8 Name string 9 } 10 11 // Permission constants that Arikawa is missing 12 const ( 13 PermissionViewServerInsights = 1 << 19 14 PermissionUseSlashCommands = 1 << 31 15 PermissionRequestToSpeak = 1 << 32 16 ) 17 18 // All permissions 19 var ( 20 MajorPerms = []Perm{ 21 {discord.PermissionAdministrator, "Administrator"}, 22 {discord.PermissionManageGuild, "Manage Server"}, 23 {discord.PermissionManageWebhooks, "Manage Webhooks"}, 24 {discord.PermissionManageChannels, "Manage Channels"}, 25 26 {discord.PermissionBanMembers, "Ban Members"}, 27 {discord.PermissionKickMembers, "Kick Members"}, 28 29 {discord.PermissionManageRoles, "Manage Roles"}, 30 {discord.PermissionManageNicknames, "Manage Nicknames"}, 31 {discord.PermissionManageEmojisAndStickers, "Manage Emojis and Stickers"}, 32 {discord.PermissionManageMessages, "Manage Messages"}, 33 34 {discord.PermissionMentionEveryone, "Mention Everyone"}, 35 36 {discord.PermissionMuteMembers, "Voice Mute Members"}, 37 {discord.PermissionDeafenMembers, "Voice Deafen Members"}, 38 {discord.PermissionMoveMembers, "Voice Move Members"}, 39 } 40 41 NotablePerms = []Perm{ 42 {discord.PermissionViewAuditLog, "View Audit Log"}, 43 {PermissionViewServerInsights, "View Server Insights"}, 44 45 {discord.PermissionPrioritySpeaker, "Priority Speaker"}, 46 {discord.PermissionSendTTSMessages, "Send TTS Messages"}, 47 48 {discord.PermissionCreateInstantInvite, "Create Invite"}, 49 } 50 51 MinorPerms = []Perm{ 52 {discord.PermissionStream, "Video"}, 53 {discord.PermissionUseVAD, "Use Voice Activity"}, 54 {discord.PermissionSpeak, "Speak"}, 55 {discord.PermissionConnect, "Connect"}, 56 {PermissionRequestToSpeak, "Request to Speak"}, 57 58 {discord.PermissionAttachFiles, "Attach Files"}, 59 {discord.PermissionEmbedLinks, "Embed Links"}, 60 61 {discord.PermissionAddReactions, "Add Reactions"}, 62 {discord.PermissionSendMessages, "Send Messages"}, 63 64 {discord.PermissionReadMessageHistory, "Read Message History"}, 65 {discord.PermissionViewChannel, "View Channel"}, 66 67 {PermissionUseSlashCommands, "Use Slash Commands"}, 68 69 {discord.PermissionChangeNickname, "Change Nickname"}, 70 {discord.PermissionUseExternalEmojis, "Use External Emojis"}, 71 } 72 73 AllPerms = append(MajorPerms, append(NotablePerms, MinorPerms...)...) 74 ) 75 76 // PermStrings gives permission strings for all Discord permissions 77 func PermStrings(p discord.Permissions) []string { 78 return PermStringsFor(AllPerms, p) 79 } 80 81 // PermStringsFor gives permission strings for the given Perm slice 82 func PermStringsFor(m []Perm, p discord.Permissions) []string { 83 var out = make([]string, 0, 32) 84 for _, perm := range m { 85 if p&perm.Permission == perm.Permission { 86 out = append(out, perm.Name) 87 } 88 } 89 90 return out 91 }