/// <summary> /// Load permission from files. /// </summary> /// <returns></returns> public async Task LoadPermissions() { if (!Directory.Exists("Permissions")) { Directory.CreateDirectory("Permissions"); } int succsess = 0; string[] paths = Directory.GetFiles("Permissions", "*.prm", SearchOption.AllDirectories); for (int i = 0; i < paths.Length; i++) { using (StreamReader reader = new StreamReader(paths[i])) { string name = Path.GetFileNameWithoutExtension(paths[i]); string file = await reader.ReadToEndAsync(); lexer.Lex(file.Split(new[] { Environment.NewLine, " " }, StringSplitOptions.None)); try { PermissionClass @class = PermissionClass.Parse(lexer, name); Permissions.Add(@class.Name, @class); succsess++; } catch (Exception e) { await Bot.LoggingManager.LogMessage(LogLevel.Warning, $"Unable to parse {name}.prm", "PermissionManager"); await Bot.LoggingManager.LogMessage(e, "PermissionManager"); } } } await Bot.LoggingManager.LogMessage(LogLevel.Message, $"Parsed {succsess}/{paths.Length} permission{(paths.Length == 1 ? "" : "s")} files.", "PermissionManager"); }