
com.freya02.botcommands.api.parameters.ParameterResolver Maven / Gradle / Ivy
package com.freya02.botcommands.api.parameters;
import com.freya02.botcommands.api.Logging;
import com.freya02.botcommands.internal.UtilsKt;
import kotlin.reflect.KClass;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.Message;
import net.dv8tion.jda.api.entities.Role;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.entities.channel.middleman.GuildChannel;
import net.dv8tion.jda.api.entities.emoji.Emoji;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
/**
* Base class for parameter resolvers used in regex commands, application commands and buttons callbacks
*
* Parameters supported by default:
*
* - {@linkplain String}
*
* - boolean
* - long
* - double
*
* - {@linkplain Emoji}
*
* - {@linkplain Role}
* - {@linkplain User}
* - {@linkplain Member}
* - {@linkplain GuildChannel all guild channels subtypes (in theory)}
* - {@linkplain Message} (only message context commands)
*
*
* You can also check loaded parameter resolvers in the logs, on the "trace" level
*
* @see RegexParameterResolver
* @see QuotableRegexParameterResolver
* @see ComponentParameterResolver
* @see SlashParameterResolver
* @see MessageContextParameterResolver
* @see UserContextParameterResolver
* @see ICustomResolver
*/
@SuppressWarnings("unused") //T is used for the inheritance constraint
public abstract class ParameterResolver, R> {
protected final Logger LOGGER = Logging.getLogger(this);
private final KClass jvmErasure;
/**
* Constructs a new parameter resolver
*
* @param clazz Class of the parameter being resolved
*/
public ParameterResolver(@NotNull Class clazz) {
this.jvmErasure = UtilsKt.toKotlin(clazz);
}
/**
* Constructs a new parameter resolver
*
* @param clazz Class of the parameter being resolved
*/
public ParameterResolver(@NotNull KClass clazz) {
this.jvmErasure = clazz;
}
public KClass getJvmErasure() {
return jvmErasure;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy