diff --git a/Commands/MinecraftSocket.cs b/Commands/MinecraftSocket.cs index 89f96cc..e3c87fc 100644 --- a/Commands/MinecraftSocket.cs +++ b/Commands/MinecraftSocket.cs @@ -207,6 +207,7 @@ static MinecraftSocket() Commands.Add(); Commands.Add("license"); Commands.Add(); + Commands.Add(); Commands.Add(); Commands.Add(); Commands.Add("craft"); diff --git a/Commands/Utility/UnVerifyCommand.cs b/Commands/Utility/UnVerifyCommand.cs new file mode 100644 index 0000000..6b0b63e --- /dev/null +++ b/Commands/Utility/UnVerifyCommand.cs @@ -0,0 +1,47 @@ +using System; +using System.Linq; +using System.Threading.Tasks; +using Coflnet.Sky.Commands.Shared; +using Coflnet.Sky.McConnect.Api; + +namespace Coflnet.Sky.Commands.MC; + +public class UnVerifyCommand : McCommand +{ + public override bool IsPublic => true; + public override async Task Execute(MinecraftSocket socket, string arguments) + { + var accountsTask = socket.sessionLifesycle.GetMinecraftAccountUuids(); + var passedName = arguments.Trim('"'); + var uuid = await GetUserIdFromMcName(socket, passedName); + var accounts = (await accountsTask).ToHashSet(); + if (!accounts.Contains(uuid)) + { + socket.Dialog(db => db.MsgLine("This account is/was not verified.")); + return; + } + var trackingService = socket.GetService(); + var delayInfo = await trackingService.GetSpeedComp(accounts); + if (delayInfo.BadIds.Count > 0) + { + socket.Dialog(db => db.MsgLine("You can't unverify accounts as one of them was blacklisted.")); + return; + } + var connectApi = socket.GetService(); + var user = await connectApi.ConnectMinecraftMcUuidGetAsync(uuid); + if (user.ExternalId == socket.AccountInfo.UserId) + { + socket.Dialog(db => db.MsgLine("You can't unverify your own account.")); + return; + } + var premiumService = socket.GetService(); + var isPremium = await premiumService.ExpiresWhen(user.ExternalId); + if (isPremium > DateTime.UtcNow + TimeSpan.FromDays(7)) + { + socket.Dialog(db => db.MsgLine("The new account doesn't have more than 7 days of premium left, thats required to proof its not a throwaway account.")); + return; + } + await connectApi.ConnectUserUserIdMcUuidDeleteAsync(user.ExternalId, uuid); + socket.Dialog(db => db.MsgLine("Account unverified, have a nice day.")); + } +} diff --git a/Startup.cs b/Startup.cs index 6f0f647..3198c99 100644 --- a/Startup.cs +++ b/Startup.cs @@ -78,6 +78,7 @@ public void ConfigureServices(IServiceCollection services) services.AddSingleton(); services.AddSingleton(); services.AddSingleton(s => new Sniper.Client.Api.AuctionApi(Configuration["SNIPER_BASE_URL"])); + services.AddSingleton(s => new McConnect.Api.ConnectApi(Configuration["MCCONNECT_BASE_URL"])); services.AddSingleton(); services.AddSingleton(di=>di.GetRequiredService()); services.AddSingleton(); diff --git a/appsettings.json b/appsettings.json index 2e3998b..093d32e 100644 --- a/appsettings.json +++ b/appsettings.json @@ -81,6 +81,6 @@ }, "JAEGER_SAMPLER_PARAM": "2", "MARIADB_VERSION": "10.5.5", - "JAEGER_AGENT_HOST": "jaeger", + "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT": "http://jaeger", "JAEGER_SERVICE_NAME": "sky-commands-mod" } \ No newline at end of file