Exemple #1
0
        public async Task AddOverrideAsync(string commandName, GuildModel.GuildSettings._CommandAccess.CustomPermission.AccessType accessType)
        {
            var matched = _service.Commands.FirstOrDefault(x => x.Aliases.Any(a => string.Equals(a, commandName, StringComparison.CurrentCultureIgnoreCase)));

            if (matched == null)
            {
                throw new Exception("Unknown Command Name");
            }

            var modified = false;
            var toEdit   = Context.Server.Settings.CustomPermissions.CustomizedPermission.FirstOrDefault(x => string.Equals(x.Name, matched.Name, StringComparison.CurrentCultureIgnoreCase));

            if (toEdit != null)
            {
                toEdit.Setting = accessType;
                modified       = true;
            }
            else
            {
                Context.Server.Settings.CustomPermissions.CustomizedPermission.Add(new GuildModel.GuildSettings._CommandAccess.CustomPermission
                {
                    Name    = matched.Name,
                    Setting = accessType
                });
            }

            await SimpleEmbedAsync($"Custom Permission override {(modified ? "Modified" : "Added")}, users with {accessType.ToString()} and above permissions, will be able to access it");

            Context.Server.Save();
        }
Exemple #2
0
        public Task <PreconditionResult> CheckPermsAsync(GuildModel.GuildSettings._CommandAccess.CustomPermission.AccessType setting, IGuildUser gUser, GuildModel server)
        {
            if (setting == GuildModel.GuildSettings._CommandAccess.CustomPermission.AccessType.Registered)
            {
                return(Task.FromResult(PreconditionResult.FromSuccess()));
            }

            if (setting == GuildModel.GuildSettings._CommandAccess.CustomPermission.AccessType.Moderator && gUser.RoleIds.Any(x => server.Settings.Moderation.ModRoles.Contains(x)))
            {
                return(Task.FromResult(PreconditionResult.FromSuccess()));
            }

            if (setting == GuildModel.GuildSettings._CommandAccess.CustomPermission.AccessType.Moderator && gUser.RoleIds.Any(x => server.Settings.Moderation.AdminRoles.Contains(x)))
            {
                return(Task.FromResult(PreconditionResult.FromSuccess()));
            }

            if (setting == GuildModel.GuildSettings._CommandAccess.CustomPermission.AccessType.Moderator)
            {
                return(Task.FromResult(PreconditionResult.FromError("This is a server Moderator only command")));
            }

            if (setting == GuildModel.GuildSettings._CommandAccess.CustomPermission.AccessType.Admin && gUser.RoleIds.Any(x => server.Settings.Moderation.AdminRoles.Contains(x)))
            {
                return(Task.FromResult(PreconditionResult.FromSuccess()));
            }

            if (setting == GuildModel.GuildSettings._CommandAccess.CustomPermission.AccessType.Admin)
            {
                return(Task.FromResult(PreconditionResult.FromError("This is a server Admin only command")));
            }

            if (setting == GuildModel.GuildSettings._CommandAccess.CustomPermission.AccessType.ServerOwner)
            {
                return(Task.FromResult(PreconditionResult.FromError("This is a server Owner only command")));
            }

            return(Task.FromResult(PreconditionResult.FromError("Unknown error in permissions")));
        }