using DiscordBotCore.PluginCore; using DiscordBotCore.PluginCore.Interfaces; using DiscordBotCore.Utilities; namespace DiscordBotCore.PluginManagement.Loading; public class PluginLoaderResult { private Option3 _Result; public static PluginLoaderResult FromIDbCommand(IDbCommand command) => new PluginLoaderResult(new Option3(command)); public static PluginLoaderResult FromIDbEvent(IDbEvent dbEvent) => new PluginLoaderResult(new Option3(dbEvent)); public static PluginLoaderResult FromIDbSlashCommand(IDbSlashCommand slashCommand) => new PluginLoaderResult(new Option3(slashCommand)); public static PluginLoaderResult FromException(Exception exception) => new PluginLoaderResult(new Option3(exception)); private PluginLoaderResult(Option3 result) { _Result = result; } public void Match(Action commandAction, Action eventAction, Action slashCommandAction, Action exceptionAction) { _Result.Match(commandAction, eventAction, slashCommandAction, exceptionAction); } public TResult Match(Func commandFunc, Func eventFunc, Func slashCommandFunc, Func exceptionFunc) { return _Result.Match(commandFunc, eventFunc, slashCommandFunc, exceptionFunc); } }