public void update_conf() { foreach (bot bot_instance in bot_instances) { List <Bot.Modules.Module> module_list = bot_instance.Conf.Modules; bot_instance.Conf = get_bot_conf(bot_instance.Conf.Server_Name); foreach (Bot.Modules.Module module in module_list) { Bot.Modules.Module new_module = get_module_conf(bot_instance.Conf.Server_Name, module.Class_Name); module.Loaded = true; module.Blacklist = new_module.Blacklist; module.Class_Name = new_module.Class_Name; module.Commands = new_module.Commands; module.Enabled = new_module.Enabled; module.Name = new_module.Name; module.Options = new_module.Options; bot_instance.Conf.Modules.Add(module); } } }
internal Bot.Modules.Module get_module_conf(string server_name, string module_class_name) { Bot.Modules.Module module_conf = new Bot.Modules.Module(); module_conf.Blacklist = new List <string>(); module_conf.Commands = new List <Bot.Modules.Command>(); module_conf.Options = new Dictionary <string, dynamic>(); XmlDocument xmlDocModules = new XmlDocument(); xmlDocModules = get_module_xml(server_name); XmlNode xnNode = xmlDocModules.SelectSingleNode("/modules"); XmlNodeList xnList = xnNode.ChildNodes; foreach (XmlNode xn_module in xnList) { if (xn_module["class_name"].InnerText.Equals(module_class_name)) { module_conf.Name = xn_module["name"].InnerText; module_conf.Class_Name = xn_module["class_name"].InnerText; module_conf.Enabled = Convert.ToBoolean(xn_module["enabled"].InnerText); module_conf.Blacklist.AddRange(xn_module["blacklist"].InnerText.Split(',')); module_conf.Loaded = false; XmlNodeList optionList = xn_module.ChildNodes; foreach (XmlNode option in optionList) { if (option.Name.Equals("commands")) { XmlNodeList Options = option.ChildNodes; foreach (XmlNode options in Options) { Bot.Modules.Command tmp_command = new Bot.Modules.Command(); tmp_command.Triggers = new List <string>(); tmp_command.Blacklist = new List <string>(); tmp_command.Name = options["name"].InnerText; tmp_command.Description = options["description"].InnerText; tmp_command.Triggers.AddRange(options["triggers"].InnerText.Split('|')); tmp_command.Syntax = options["syntax"].InnerText; tmp_command.Access = Convert.ToInt32(options["access_level"].InnerText); tmp_command.Blacklist.AddRange(options["blacklist"].InnerText.Split(',')); tmp_command.Show_Help = Convert.ToBoolean(options["show_help"].InnerText); tmp_command.Spam_Check = Convert.ToBoolean(options["spam_check"].InnerText); module_conf.Commands.Add(tmp_command); } } if (option.Name.Equals("options")) { XmlNodeList Options = option.ChildNodes; foreach (XmlNode options in Options) { dynamic value = null; switch (options["type"].InnerText) { case "textbox": value = options["value"].InnerText; break; case "checkbox": value = Convert.ToBoolean(options["checked"].InnerText); break; } module_conf.Options.Add(options.Name, value); } } } } } return(module_conf); }