Browse Source

Merge pull request #221 from iopred/permstate

Use State for UserChannelPermissions when possible.
Bruce 8 years ago
parent
commit
5f6a972b91
1 changed files with 18 additions and 10 deletions
  1. 18 10
      restapi.go

+ 18 - 10
restapi.go

@@ -380,15 +380,20 @@ func (s *Session) UserGuildSettingsEdit(guildID string, settings *UserGuildSetti
 // userID    : The ID of the user to calculate permissions for.
 // channelID : The ID of the channel to calculate permission for.
 func (s *Session) UserChannelPermissions(userID, channelID string) (apermissions int, err error) {
-
-	channel, err := s.Channel(channelID)
-	if err != nil {
-		return
+	channel, err := s.State.Channel(channelID)
+	if err != nil || channel == nil {
+		channel, err = s.Channel(channelID)
+		if err != nil {
+			return
+		}
 	}
 
-	guild, err := s.Guild(channel.GuildID)
-	if err != nil {
-		return
+	guild, err := s.State.Guild(channel.GuildID)
+	if err != nil || guild == nil {
+		guild, err = s.Guild(channel.GuildID)
+		if err != nil {
+			return
+		}
 	}
 
 	if userID == guild.OwnerID {
@@ -396,9 +401,12 @@ func (s *Session) UserChannelPermissions(userID, channelID string) (apermissions
 		return
 	}
 
-	member, err := s.GuildMember(guild.ID, userID)
-	if err != nil {
-		return
+	member, err := s.State.Member(guild.ID, userID)
+	if err != nil || member == nil {
+		member, err = s.GuildMember(guild.ID, userID)
+		if err != nil {
+			return
+		}
 	}
 
 	for _, role := range guild.Roles {