using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Data; using System.Threading; using TechBot.IRCLibrary; namespace TechBot.Library { public abstract class TechBotService { protected IServiceOutput serviceOutput; private string chmPath; private string mainChm; public TechBotService(IServiceOutput serviceOutput, string chmPath, string mainChm) { this.serviceOutput = serviceOutput; this.chmPath = chmPath; this.mainChm = mainChm; } public virtual void Run() { CommandFactory.LoadPlugins(); } public IServiceOutput ServiceOutput { get { return serviceOutput; } } public CommandBuilderCollection Commands { get { return CommandFactory.Commands; } } public void InjectMessage(MessageContext context, string message) { ParseCommandMessage(context, message); } private bool IsCommandMessage(string message) { return message.StartsWith("!"); } public void ParseCommandMessage(MessageContext context, string message) { if (!IsCommandMessage(message)) return; message = message.Substring(1).Trim(); int index = message.IndexOf(' '); string commandName; string commandParams = ""; if (index != -1) { commandName = message.Substring(0, index).Trim(); commandParams = message.Substring(index).Trim(); } else commandName = message.Trim(); foreach (CommandBuilder command in Commands) { if (command.Name == commandName) { //Create a new instance of the required command type Command cmd = command.CreateCommand(); cmd.TechBot = this; cmd.Context = context; cmd.ParseParameters(message); cmd.ExecuteCommand(); return; } } } } }