// See https://aka.ms/new-console-template for more information using Bobo.System.Maze.Bot; using Bobo.System.Maze.Bot.Interface; using HightechICT.Amazeing.Client.Rest; using Microsoft.Extensions.Logging; using Serilog; using Serilog.Core; using System.Net; string apiAuthorization = "HTI Thanks You [OZL]"; string baseUrl = @"https://maze.hightechict.nl/"; string username = "Hi Hightech!"; string mazeName = "Example Maze"; Logger serilogger = new LoggerConfiguration() .WriteTo.Console().CreateLogger(); var loggerFactory = new LoggerFactory() .AddSerilog(serilogger); Microsoft.Extensions.Logging.ILogger logger = loggerFactory.CreateLogger("Logger"); logger.Log(LogLevel.Information, "Starting bot..."); HttpClient httpClient = new (); httpClient.DefaultRequestHeaders.Add("Authorization", apiAuthorization); AmazeingClient mazeClient = new AmazeingClient(baseUrl, httpClient); ICollection mazes = await mazeClient.AllMazes(); bool registered = await RegisterPlayer(username, true); if (!registered) { logger.Log(LogLevel.Information, $"Player '{username}' failed to register", username); return; } logger.Log(LogLevel.Information, $"Player '{username}' registered", username); logger.Log(LogLevel.Information, $"Starting SimplerBot"); BaseBot bot = new SimpleBot(mazeClient, logger); foreach (MazeInfo maze in mazes) { int collected = await bot.Run(maze); logger.Log(LogLevel.Information, $"Collected {collected}/{maze.PotentialReward}", collected, maze.PotentialReward); } async Task RegisterPlayer(string username, bool reset = false) { PlayerInfo? info = null; try { info = await mazeClient.GetPlayerInfo(); } catch (ApiException apiEx) when (apiEx.StatusCode == (int)HttpStatusCode.NotFound) { // no player registered. // do some logging } if (info != null && reset == false) { // player already registered and no re-register needed. return true; } if (info != null && reset == true) { // player already registered and re-register needed. try { // forget the player. await mazeClient.ForgetPlayer(); } catch (ApiException apiEx) { // do some logging return false; } } try { // register the player. await mazeClient.RegisterPlayer(username); return true; } catch (ApiException apiEx) { // do some logging return false; } }