@SafeVarargs
    public static Consumer<Throwable> getConsumer(Predicate<Throwable> logFilter,
                                                  Class<? extends Throwable>... ignoredThrowableTypes) {
        return get(logFilter, ignoredThrowableTypes)::apply;
    }
@ SafeVarargs public static Consumer < Throwable > getConsumer ( Predicate < Throwable > logFilter , Class < ? extends Throwable > ... ignoredThrowableTypes ) { return get ( logFilter , ignoredThrowableTypes ) :: apply ; }
Returns a consumer that can for example be used in the {@link TextChannel#typeContinuously(Consumer)} method.
It unwraps {@link CompletionException CompletionExceptions},
{@link InvocationTargetException InvocationTargetExceptions} and {@link ExecutionException ExecutionExceptions}
first, and then adds a fresh {@code CompletionException} as wrapper with the stacktrace of the caller of this
method and logs it afterwards.
The rewrapped exception is only logged if the given {@code logFilter} predicate allows the exception and the
class of it is not in the {@code ignoredThrowableTypes}.

@param logFilter The predicate the unwrapped exception is tested against.
@param ignoredThrowableTypes The throwable types that should never be logged.
@return A consumer which logs the given throwable.