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; } await PurgeNexusCache(arg, parts[2]); } else if (parts[1] == "quick-sync") { var options = await _quickSync.Report(); if (parts.Length != 3) { var optionsStr = string.Join(", ", options.Select(o => o.Key.Name)); await ReplyTo(arg, $"Can't expect me to quicksync the whole damn world! Try: {optionsStr}"); } else { foreach (var pair in options.Where(o => o.Key.Name == parts[2])) { await _quickSync.Notify(pair.Key); await ReplyTo(arg, $"Notified {pair.Key}"); } } } else if (parts[1] == "purge-list") { if (parts.Length != 3) { await ReplyTo(arg, $"Yeah, I'm not gonna purge the whole server..."); } else { var deleted = await _sql.PurgeList(parts[2]); await _quickSync.Notify <ModListDownloader>(); await ReplyTo(arg, $"Purged all traces of #{parts[2]} from the server, triggered list downloading. {deleted} records removed"); } } } }
private async Task PurgeNexusCache(SocketMessage arg, string mod) { if (Uri.TryCreate(mod, UriKind.Absolute, out var url)) { mod = url.AbsolutePath.Split("/", StringSplitOptions.RemoveEmptyEntries).Last(); } if (int.TryParse(mod, out var mod_id)) { await _sql.PurgeNexusCache(mod_id); await _quickSync.Notify <ListValidator>(); await ReplyTo(arg, $"It is done, {mod_id} has been purged, list validation has been triggered"); } }