96 lines
2.5 KiB
C#
96 lines
2.5 KiB
C#
// 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<MazeInfo> 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 SimplerBot(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<bool> 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;
|
|
}
|
|
} |