#[derive(strum::FromRepr, Debug, PartialEq, Eq, Clone)]
#[repr(u8)]
pub enum Permission {
CreateInvite,
KickMembers,
BanMembers,
Admin,
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,
ManageEmojiAndStickers,
UseSlashCommands,
RequestToSpeak,
ManageEvents,
ManageThreads,
CreatePublicThreads,
CreatePrivateThreads,
UseExternalStickers,
SendMessageInThreads,
UseEmbeddedActivities,
ModerateMembers,
Size,
}
use Permission::*;
impl Permission {
pub fn get_permissions(bitfield: u64) -> Vec<Permission> {
let mut result = vec![];
for i in 0..Size as u8 {
if bitfield & (1 << i) > 0 {
result.push(Permission::from_repr(i).unwrap());
}
}
result
}
}