From 539b9d203fae7212f4a81a15617cbcf96831d653 Mon Sep 17 00:00:00 2001 From: abalabahaha Date: Fri, 4 Mar 2016 05:50:11 -0800 Subject: [PATCH] Fix UserChannelPermissions --- restapi.go | 16 +++++++--------- structs.go | 26 +++++++++++++------------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/restapi.go b/restapi.go index 48e4f7a..7534cae 100644 --- a/restapi.go +++ b/restapi.go @@ -352,27 +352,25 @@ func (s *Session) UserChannelPermissions(userID, channelID string) (apermissions return } - apermissions = 0 - for _, role := range guild.Roles { for _, roleID := range member.Roles { if role.ID == roleID { - apermissions = apermissions | role.Permissions + apermissions |= role.Permissions break } } } - if apermissions & (PermissionManageRoles) > 0 { - apermissions = PermissionAll + if apermissions & PermissionManageRoles > 0 { + apermissions |= PermissionAll } // Member overwrites can override role overrides, so do two passes for _, overwrite := range channel.PermissionOverwrites { for _, roleID := range member.Roles { if overwrite.Type == "role" && roleID == overwrite.ID { - apermissions = apermissions & ^overwrite.Deny - apermissions = apermissions | overwrite.Allow + apermissions &= ^overwrite.Deny + apermissions |= overwrite.Allow break } } @@ -380,8 +378,8 @@ func (s *Session) UserChannelPermissions(userID, channelID string) (apermissions for _, overwrite := range channel.PermissionOverwrites { if overwrite.Type == "member" && overwrite.ID == userID { - apermissions = apermissions & ^overwrite.Deny - apermissions = apermissions | overwrite.Allow + apermissions &= ^overwrite.Deny + apermissions |= overwrite.Allow break } } diff --git a/structs.go b/structs.go index e9396d6..cc5e113 100644 --- a/structs.go +++ b/structs.go @@ -366,19 +366,6 @@ type State struct { MaxMessageCount int } -// Constants for the different bit offsets of general permissions -const ( - PermissionCreateInstantInvite = 1 << iota - PermissionKickMembers - PermissionBanMembers - PermissionManageRoles - PermissionManageChannels - PermissionManageServer - - PermissionAll = 66321471 - PermissionAllChannel = 66321433 -) - // Constants for the different bit offsets of text channel permissions const ( PermissionReadMessages = 1 << (iota + 10) @@ -399,4 +386,17 @@ const ( PermissionVoiceDeafenMembers PermissionVoiceMoveMembers PermissionVoiceUseVAD +) + +// Constants for the different bit offsets of general permissions +const ( + PermissionCreateInstantInvite = 1 << iota + PermissionKickMembers + PermissionBanMembers + PermissionManageRoles + PermissionManageChannels + PermissionManageServer + + PermissionAllChannel = PermissionReadMessages | PermissionSendMessages | PermissionSendTTSMessages | PermissionManageMessages | PermissionEmbedLinks | PermissionAttachFiles | PermissionReadMessageHistory | PermissionMentionEveryone | PermissionVoiceConnect | PermissionVoiceSpeak | PermissionVoiceMuteMembers | PermissionVoiceDeafenMembers | PermissionVoiceMoveMembers | PermissionVoiceUseVAD | PermissionCreateInstantInvite | PermissionManageRoles | PermissionManageChannels + PermissionAll = PermissionAllChannel | PermissionKickMembers | PermissionBanMembers | PermissionManageServer ) \ No newline at end of file