public async Task <IClaimCollection> GetClaimCollectionAsync(IUser user)
        {
            if (user is SocketGuildUser guildUser)
            {
                var claims          = new List <Claim>();
                var guildId         = guildUser.Guild.Id;
                var claimCollection = await _claimManager.GetClaimCollectionAsync(new GuildSubject(SubjectType.User, user.Id, guildId), default).ConfigureAwait(false);

                claims.AddRange(claimCollection !.Claims);

                foreach (var role in guildUser.Roles)
                {
                    claimCollection = await _claimManager.GetClaimCollectionAsync(new GuildSubject(SubjectType.Role, role.Id, guildId), default).ConfigureAwait(false);

                    claims.AddRange(claimCollection !.Claims);
                }

                return(new ClaimCollection(new GuildSubject(SubjectType.User, user.Id, guildId), claims));
            }

            return(new ClaimCollection(new GuildSubject(SubjectType.User, user.Id, 0), Array.Empty <Claim>()));
        }
示例#2
0
        public async Task ListAsync(SocketGuildUser user)
        {
            var claims = await _claimManager.GetClaimCollectionAsync(GuildSubject.FromGuildUser(user), default);

            await ReplyPermissions(claims !);
        }