示例#1
0
        /// <inheritdoc />
        public async Task <bool> HasBypassAuthority(SocketMessage message, FilterType type)
        {
            var settings =
                await _moderationModuleUtils.GetModerationSettings(((SocketGuildUser)message.Author).Guild.Id);

            var whitelistedChannels = settings?.WhitelistedChannels.Where(c => c.WhitelistType == type);

            var whitelistedRoles = settings?.WhitelistedRoles.Where(r => r.WhitelistType == type);

            var whitelistedFields = new WhitelistedFields
            {
                WhitelistedChannels = whitelistedChannels,
                WhitelistedRoles    = whitelistedRoles
            };

            var author = (SocketGuildUser)message.Author;

            var channelPostedId = message.Channel.Id;

            return(CheckWhitelisted(author, channelPostedId, whitelistedFields));
        }
示例#2
0
        private bool CheckWhitelisted(SocketGuildUser author, ulong postedChannelId,
                                      WhitelistedFields fields)
        {
            // Bots bypass check.
            if (author.IsBot)
            {
                return(true);
            }

            // Check if channel id is whitelisted.
            if (fields.WhitelistedChannels.Any(x => x.ChannelId == postedChannelId))
            {
                return(true);
            }

            // Check for whitelisted role.
            if (author.Roles.Any(r => fields.WhitelistedRoles.Any(w => w.RoleId == r.Id)))
            {
                return(true);
            }

            return(false);
        }