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  }