public BotInfo CreateBot(/*Ts3FullClientData bot*/) { bool removeBot = false; var bot = new Bot { Injector = CoreInjector.CloneRealm <BotInjector>() }; if (!CoreInjector.TryInject(bot)) { Log.Warn("Partial bot dependency loaded only"); } lock (bot.SyncRoot) { if (bot.InitializeBot()) { lock (lockObj) { activeBots.Add(bot); bot.Id = activeBots.Count - 1; removeBot = !isRunning; } } if (removeBot) { StopBot(bot); return(null); } } return(bot.GetInfo()); }
public R <BotInfo, string> RunBot(ConfBot config, string name = null) { var bot = new Bot(config) { Injector = CoreInjector.CloneRealm <BotInjector>(), Name = name }; if (!CoreInjector.TryInject(bot)) { Log.Warn("Partial bot dependency loaded only"); } lock (bot.SyncRoot) { var initializeResult = bot.InitializeBot(); var removeBot = false; if (initializeResult.Ok) { lock (lockObj) { if (!InsertIntoFreeId(bot)) { removeBot = true; } } } else { return($"Bot failed to connect ({initializeResult.Error})"); } if (removeBot) { StopBot(bot); return("BotManager is shutting down"); } } return(bot.GetInfo()); }