Fix UserChannelPermissions
This commit is contained in:
parent
cd24674ebb
commit
539b9d203f
2 changed files with 20 additions and 22 deletions
16
restapi.go
16
restapi.go
|
@ -352,27 +352,25 @@ func (s *Session) UserChannelPermissions(userID, channelID string) (apermissions
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
apermissions = 0
|
|
||||||
|
|
||||||
for _, role := range guild.Roles {
|
for _, role := range guild.Roles {
|
||||||
for _, roleID := range member.Roles {
|
for _, roleID := range member.Roles {
|
||||||
if role.ID == roleID {
|
if role.ID == roleID {
|
||||||
apermissions = apermissions | role.Permissions
|
apermissions |= role.Permissions
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if apermissions & (PermissionManageRoles) > 0 {
|
if apermissions & PermissionManageRoles > 0 {
|
||||||
apermissions = PermissionAll
|
apermissions |= PermissionAll
|
||||||
}
|
}
|
||||||
|
|
||||||
// Member overwrites can override role overrides, so do two passes
|
// Member overwrites can override role overrides, so do two passes
|
||||||
for _, overwrite := range channel.PermissionOverwrites {
|
for _, overwrite := range channel.PermissionOverwrites {
|
||||||
for _, roleID := range member.Roles {
|
for _, roleID := range member.Roles {
|
||||||
if overwrite.Type == "role" && roleID == overwrite.ID {
|
if overwrite.Type == "role" && roleID == overwrite.ID {
|
||||||
apermissions = apermissions & ^overwrite.Deny
|
apermissions &= ^overwrite.Deny
|
||||||
apermissions = apermissions | overwrite.Allow
|
apermissions |= overwrite.Allow
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -380,8 +378,8 @@ func (s *Session) UserChannelPermissions(userID, channelID string) (apermissions
|
||||||
|
|
||||||
for _, overwrite := range channel.PermissionOverwrites {
|
for _, overwrite := range channel.PermissionOverwrites {
|
||||||
if overwrite.Type == "member" && overwrite.ID == userID {
|
if overwrite.Type == "member" && overwrite.ID == userID {
|
||||||
apermissions = apermissions & ^overwrite.Deny
|
apermissions &= ^overwrite.Deny
|
||||||
apermissions = apermissions | overwrite.Allow
|
apermissions |= overwrite.Allow
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
26
structs.go
26
structs.go
|
@ -366,19 +366,6 @@ type State struct {
|
||||||
MaxMessageCount int
|
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
|
// Constants for the different bit offsets of text channel permissions
|
||||||
const (
|
const (
|
||||||
PermissionReadMessages = 1 << (iota + 10)
|
PermissionReadMessages = 1 << (iota + 10)
|
||||||
|
@ -399,4 +386,17 @@ const (
|
||||||
PermissionVoiceDeafenMembers
|
PermissionVoiceDeafenMembers
|
||||||
PermissionVoiceMoveMembers
|
PermissionVoiceMoveMembers
|
||||||
PermissionVoiceUseVAD
|
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
|
||||||
)
|
)
|
Loading…
Reference in a new issue