public EvalCommand(TwitchClient twitchClient, Options options, Settings settings) : base(twitchClient, options, settings) { if (settings.Engines.Length == 0) { throw new Exception("No engines are registered."); } this.defaultEngine = settings.Engines.FirstOrDefault()?.Names?.FirstOrDefault()?.ToLower().Trim(); this.engines = new Dictionary <string, IPositionEvaluator>(); foreach (var engineSettings in settings.Engines) { var typeName = $"TcecEvaluationBot.ConsoleUI.Services.{engineSettings.PositionEvaluator}"; var type = typeof(IPositionEvaluator).Assembly.GetType(typeName); if (Activator.CreateInstance( type, options, engineSettings.Executable, engineSettings.Title, engineSettings.Arguments, engineSettings.CommandLineInputs) is IPositionEvaluator evaluator) { foreach (var engineName in engineSettings.Names) { this.engines.Add(engineName.ToLower().Trim(), evaluator); } } } this.currentGameInfoProvider = new CurrentGameInfoProvider(settings.LivePgnUrl); }
public Task OutputMovesTask() { return(Task.Run( () => { Thread.Sleep(5000); Console.WriteLine("Output moves task is running..."); var infoProvider = new CurrentGameInfoProvider(this.settings.LivePgnUrl); var lastFen = string.Empty; while (true) { if (this.settings.OutputMoves) { var info = infoProvider.GetInfo(); if (!string.IsNullOrWhiteSpace(info.Fen) && !string.IsNullOrWhiteSpace(info.LastMove) && info.Fen != lastFen) { lastFen = info.Fen; var message = $"New move: {info.LastMove}"; this.twitchClient.SendMessage( this.options.TwitchChannelName, $"/me [{DateTime.UtcNow:HH:mm:ss}] {message}"); } } Thread.Sleep(2000); } })); }
public IccfDbCommand(TwitchClient twitchClient, Options options, Settings settings) : base(twitchClient, options, settings) { this.currentGameInfoProvider = new CurrentGameInfoProvider(settings.LivePgnUrl); if (string.IsNullOrWhiteSpace(settings.IccfDatabasePath) || string.IsNullOrWhiteSpace(settings.IccfDatabaseIp)) { this.database = null; } else { try { this.database = new ChessPosDbProxy(settings.IccfDatabaseIp, settings.IccfDatabasePort); this.database.Open(settings.IccfDatabasePath); } catch (Exception e) { Console.WriteLine(e.Message); this.database = null; } } if (this.database != null && this.database.IsOpen) { Console.WriteLine($"Exposing database at: {this.database.Path}"); } else { Console.WriteLine($"Database at \"{settings.IccfDatabasePath}\" couldn't be opened."); } }
public StaticCommand(TwitchClient twitchClient, Options options, Settings settings) : base(twitchClient, options, settings) { this.currentGameInfoProvider = new CurrentGameInfoProvider(settings.LivePgnUrl); }
public DbCommand(TwitchClient twitchClient, Options options, Settings settings) : base(twitchClient, options, settings) { this.currentGameInfoProvider = new CurrentGameInfoProvider(settings.LivePgnUrl); this.lichessApiClient = new LichessApiClient(); }
public ChessDbcnCommand(TwitchClient twitchClient, Options options, Settings settings) : base(twitchClient, options, settings) { this.currentGameInfoProvider = new CurrentGameInfoProvider(settings.LivePgnUrl); this.chessDbcnScoreProvider = new ChessDbcnScoreProvider(); }