Fix UserChannelPermissions

This commit is contained in:
abalabahaha 2016-03-04 05:50:11 -08:00
parent cd24674ebb
commit 539b9d203f
2 changed files with 20 additions and 22 deletions

View file

@ -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
}
}

View file

@ -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)
@ -400,3 +387,16 @@ const (
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
)