76 lines
2.7 KiB
Go
76 lines
2.7 KiB
Go
package permissions
|
|
|
|
// Permission bitflags.
|
|
const (
|
|
VIEW_CHANNEL int64 = 1 << 0
|
|
SEND_MESSAGES int64 = 1 << 1
|
|
MANAGE_MESSAGES int64 = 1 << 2
|
|
KICK_MEMBERS int64 = 1 << 3
|
|
BAN_MEMBERS int64 = 1 << 4
|
|
MANAGE_SERVER int64 = 1 << 5
|
|
MANAGE_CHANNELS int64 = 1 << 6
|
|
ADMINISTRATOR int64 = 1 << 7
|
|
CONNECT_VOICE int64 = 1 << 8
|
|
SPEAK_VOICE int64 = 1 << 9
|
|
SHARE_SCREEN int64 = 1 << 10
|
|
MUTE_MEMBERS int64 = 1 << 11
|
|
CREATE_INSTANT_INVITE int64 = 1 << 12
|
|
CHANGE_NICKNAME int64 = 1 << 13
|
|
MANAGE_NICKNAMES int64 = 1 << 14
|
|
MANAGE_ROLES int64 = 1 << 15
|
|
MANAGE_WEBHOOKS int64 = 1 << 16
|
|
EMBED_LINKS int64 = 1 << 17
|
|
ATTACH_FILES int64 = 1 << 18
|
|
ADD_REACTIONS int64 = 1 << 19
|
|
USE_EXTERNAL_EMOJIS int64 = 1 << 20
|
|
MENTION_EVERYONE int64 = 1 << 21
|
|
)
|
|
|
|
// AllPermissionLabels maps flags to human-friendly names.
|
|
var AllPermissionLabels = []struct {
|
|
Key string
|
|
Flag int64
|
|
}{
|
|
{"VIEW_CHANNEL", VIEW_CHANNEL},
|
|
{"SEND_MESSAGES", SEND_MESSAGES},
|
|
{"MANAGE_MESSAGES", MANAGE_MESSAGES},
|
|
{"KICK_MEMBERS", KICK_MEMBERS},
|
|
{"BAN_MEMBERS", BAN_MEMBERS},
|
|
{"MANAGE_SERVER", MANAGE_SERVER},
|
|
{"MANAGE_CHANNELS", MANAGE_CHANNELS},
|
|
{"ADMINISTRATOR", ADMINISTRATOR},
|
|
{"CONNECT_VOICE", CONNECT_VOICE},
|
|
{"SPEAK_VOICE", SPEAK_VOICE},
|
|
{"SHARE_SCREEN", SHARE_SCREEN},
|
|
{"MUTE_MEMBERS", MUTE_MEMBERS},
|
|
{"CREATE_INSTANT_INVITE", CREATE_INSTANT_INVITE},
|
|
{"CHANGE_NICKNAME", CHANGE_NICKNAME},
|
|
{"MANAGE_NICKNAMES", MANAGE_NICKNAMES},
|
|
{"MANAGE_ROLES", MANAGE_ROLES},
|
|
{"MANAGE_WEBHOOKS", MANAGE_WEBHOOKS},
|
|
{"EMBED_LINKS", EMBED_LINKS},
|
|
{"ATTACH_FILES", ATTACH_FILES},
|
|
{"ADD_REACTIONS", ADD_REACTIONS},
|
|
{"USE_EXTERNAL_EMOJIS", USE_EXTERNAL_EMOJIS},
|
|
{"MENTION_EVERYONE", MENTION_EVERYONE},
|
|
}
|
|
|
|
// DefaultEveryonePermissions is granted to the @everyone role when a server is created.
|
|
// VIEW_CHANNEL | SEND_MESSAGES | CONNECT_VOICE | SPEAK_VOICE | SHARE_SCREEN | CREATE_INSTANT_INVITE | EMBED_LINKS | ATTACH_FILES | ADD_REACTIONS = bits 0,1,8,9,10,12,17,18,19.
|
|
const DefaultEveryonePermissions int64 = VIEW_CHANNEL | SEND_MESSAGES | CONNECT_VOICE | SPEAK_VOICE | SHARE_SCREEN | CREATE_INSTANT_INVITE | EMBED_LINKS | ATTACH_FILES | ADD_REACTIONS
|
|
|
|
// Has reports whether the permission set contains the given permission bits.
|
|
func Has(permissions int64, perm int64) bool {
|
|
return permissions&perm == perm
|
|
}
|
|
|
|
// Add returns permissions with the given bits set.
|
|
func Add(permissions int64, perm int64) int64 {
|
|
return permissions | perm
|
|
}
|
|
|
|
// Remove returns permissions with the given bits cleared.
|
|
func Remove(permissions int64, perm int64) int64 {
|
|
return permissions &^ perm
|
|
}
|