mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
Re-add discord code
This commit is contained in:
parent
b7119c8bf8
commit
035b8e7aa7
@ -22,15 +22,7 @@ public class CommandLineBuilder
|
|||||||
var root = new RootCommand();
|
var root = new RootCommand();
|
||||||
foreach (var verb in _verbs)
|
foreach (var verb in _verbs)
|
||||||
root.Add(verb.MakeCommand());
|
root.Add(verb.MakeCommand());
|
||||||
|
|
||||||
/*
|
|
||||||
foreach (var verb in _verbs)
|
|
||||||
root.AddCommand(verb.MakeCommand());
|
|
||||||
var builder = new System.CommandLine.Builder.CommandLineBuilder(root);
|
|
||||||
var built = builder.Build();
|
|
||||||
var parsed = built.Parse(args);
|
|
||||||
return await parsed.InvokeAsync(_console);*/
|
|
||||||
|
|
||||||
return await root.InvokeAsync(args);
|
return await root.InvokeAsync(args);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -17,6 +17,8 @@ public class AppSettings
|
|||||||
public AbsolutePath TempPath => (AbsolutePath) TempFolder;
|
public AbsolutePath TempPath => (AbsolutePath) TempFolder;
|
||||||
public string SpamWebHook { get; set; } = null;
|
public string SpamWebHook { get; set; } = null;
|
||||||
public string HamWebHook { get; set; } = null;
|
public string HamWebHook { get; set; } = null;
|
||||||
|
|
||||||
|
public string DiscordKey { get; set; }
|
||||||
|
|
||||||
public string AuthoredFilesFolder { get; set; }
|
public string AuthoredFilesFolder { get; set; }
|
||||||
|
|
||||||
|
104
Wabbajack.Server/Services/DiscordBackend.cs
Normal file
104
Wabbajack.Server/Services/DiscordBackend.cs
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
using Discord;
|
||||||
|
using Discord.WebSocket;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using Wabbajack.BuildServer;
|
||||||
|
|
||||||
|
namespace Wabbajack.Server.Services;
|
||||||
|
|
||||||
|
public class DiscordBackend
|
||||||
|
{
|
||||||
|
private readonly AppSettings _settings;
|
||||||
|
private readonly ILogger<DiscordBackend> _logger;
|
||||||
|
private readonly DiscordSocketClient _client;
|
||||||
|
private readonly NexusCacheManager _nexusCacheManager;
|
||||||
|
|
||||||
|
public DiscordBackend(ILogger<DiscordBackend> logger, AppSettings settings, NexusCacheManager nexusCacheManager)
|
||||||
|
{
|
||||||
|
_settings = settings;
|
||||||
|
_logger = logger;
|
||||||
|
_nexusCacheManager = nexusCacheManager;
|
||||||
|
_client = new DiscordSocketClient(new DiscordSocketConfig()
|
||||||
|
{
|
||||||
|
|
||||||
|
});
|
||||||
|
_client.Log += LogAsync;
|
||||||
|
_client.Ready += ReadyAsync;
|
||||||
|
_client.MessageReceived += MessageReceivedAsync;
|
||||||
|
Task.Run(async () =>
|
||||||
|
{
|
||||||
|
await _client.LoginAsync(TokenType.Bot, settings.DiscordKey);
|
||||||
|
await _client.StartAsync();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task MessageReceivedAsync(SocketMessage arg)
|
||||||
|
{
|
||||||
|
_logger.LogInformation(arg.Content);
|
||||||
|
|
||||||
|
if (arg.Content.StartsWith("!dervenin"))
|
||||||
|
{
|
||||||
|
var parts = arg.Content.Split(" ", StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
if (parts[0] != "!dervenin")
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (parts.Length == 1)
|
||||||
|
{
|
||||||
|
await ReplyTo(arg, "Wat?");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parts[1] == "purge-nexus-cache")
|
||||||
|
{
|
||||||
|
if (parts.Length != 3)
|
||||||
|
{
|
||||||
|
await ReplyTo(arg, "Welp you did that wrong, gotta give me a mod-id or url");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var rows = await _nexusCacheManager.Purge(parts[2]);
|
||||||
|
await ReplyTo(arg, $"Purged {rows} rows");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parts[1] == "nft")
|
||||||
|
{
|
||||||
|
await ReplyTo(arg, "No Fucking Thanks.");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task ReplyTo(SocketMessage socketMessage, string message)
|
||||||
|
{
|
||||||
|
await socketMessage.Channel.SendMessageAsync(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private async Task ReadyAsync()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task LogAsync(LogMessage arg)
|
||||||
|
{
|
||||||
|
switch (arg.Severity)
|
||||||
|
{
|
||||||
|
case LogSeverity.Info:
|
||||||
|
_logger.LogInformation(arg.Message);
|
||||||
|
break;
|
||||||
|
case LogSeverity.Warning:
|
||||||
|
_logger.LogWarning(arg.Message);
|
||||||
|
break;
|
||||||
|
case LogSeverity.Critical:
|
||||||
|
_logger.LogCritical(arg.Message);
|
||||||
|
break;
|
||||||
|
case LogSeverity.Error:
|
||||||
|
_logger.LogError(arg.Exception, arg.Message);
|
||||||
|
break;
|
||||||
|
case LogSeverity.Verbose:
|
||||||
|
_logger.LogTrace(arg.Message);
|
||||||
|
break;
|
||||||
|
case LogSeverity.Debug:
|
||||||
|
_logger.LogDebug(arg.Message);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new ArgumentOutOfRangeException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -145,4 +145,25 @@ public class NexusCacheManager
|
|||||||
_lockObject.Release();
|
_lockObject.Release();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<int> Purge(string mod)
|
||||||
|
{
|
||||||
|
if (Uri.TryCreate(mod, UriKind.Absolute, out var url))
|
||||||
|
{
|
||||||
|
mod = Enumerable.Last(url.AbsolutePath.Split("/", StringSplitOptions.RemoveEmptyEntries));
|
||||||
|
}
|
||||||
|
|
||||||
|
var count = 0;
|
||||||
|
if (!int.TryParse(mod, out var mod_id)) return count;
|
||||||
|
|
||||||
|
foreach (var file in _cacheFolder.EnumerateFiles())
|
||||||
|
{
|
||||||
|
if (!file.FileName.ToString().Contains($"_{mod_id}")) continue;
|
||||||
|
|
||||||
|
await PurgeCacheEntry(file);
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return count;
|
||||||
|
}
|
||||||
}
|
}
|
@ -75,6 +75,7 @@ public class Startup
|
|||||||
services.AddSingleton<Client>();
|
services.AddSingleton<Client>();
|
||||||
services.AddSingleton<NexusCacheManager>();
|
services.AddSingleton<NexusCacheManager>();
|
||||||
services.AddSingleton<NexusApi>();
|
services.AddSingleton<NexusApi>();
|
||||||
|
services.AddSingleton<DiscordBackend>();
|
||||||
services.AddAllSingleton<ITokenProvider<NexusApiState>, NexusApiTokenProvider>();
|
services.AddAllSingleton<ITokenProvider<NexusApiState>, NexusApiTokenProvider>();
|
||||||
services.AddAllSingleton<IResource, IResource<HttpClient>>(s => new Resource<HttpClient>("Web Requests", 12));
|
services.AddAllSingleton<IResource, IResource<HttpClient>>(s => new Resource<HttpClient>("Web Requests", 12));
|
||||||
// Application Info
|
// Application Info
|
||||||
@ -176,6 +177,7 @@ public class Startup
|
|||||||
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
|
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
|
||||||
|
|
||||||
// Trigger the internal update code
|
// Trigger the internal update code
|
||||||
var _ = app.ApplicationServices.GetRequiredService<NexusCacheManager>();
|
app.ApplicationServices.GetRequiredService<NexusCacheManager>();
|
||||||
|
app.ApplicationServices.GetRequiredService<DiscordBackend>();
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -14,8 +14,6 @@
|
|||||||
"PatchesFilesFolder": "c:\\tmp\\patches",
|
"PatchesFilesFolder": "c:\\tmp\\patches",
|
||||||
"MirrorFilesFolder": "c:\\tmp\\mirrors",
|
"MirrorFilesFolder": "c:\\tmp\\mirrors",
|
||||||
"NexusCacheFolder": "c:\\tmp\\nexus-cache",
|
"NexusCacheFolder": "c:\\tmp\\nexus-cache",
|
||||||
"HamWebHook": "https://discordapp.com/api/webhooks/710264989646323772/2VI5Y0rYLOtq1o1KeSR6S2xTRNIOdxONiCju81rnoEUKtcdbVZDdC_PnLdEpYOdiMHCt",
|
|
||||||
"SpamWebHook": "https://discordapp.com/api/webhooks/710264989646323772/2VI5Y0rYLOtq1o1KeSR6S2xTRNIOdxONiCju81rnoEUKtcdbVZDdC_PnLdEpYOdiMHCt",
|
|
||||||
"GitHubKey": ""
|
"GitHubKey": ""
|
||||||
},
|
},
|
||||||
"AllowedHosts": "*"
|
"AllowedHosts": "*"
|
||||||
|
Loading…
Reference in New Issue
Block a user