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(); }
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"))); }