Add Button Interaction with specific method parameter support.
This commit is contained in:
parent
11fd16fa77
commit
0ce0b3eb4f
@ -0,0 +1,5 @@
|
|||||||
|
package net.tomatentum.marinara.interaction.annotation;
|
||||||
|
|
||||||
|
public @interface Button {
|
||||||
|
public String customId();
|
||||||
|
}
|
40
lib/src/main/java/net/tomatentum/marinara/interaction/methods/ButtonInteractionMethod.java
Normal file
40
lib/src/main/java/net/tomatentum/marinara/interaction/methods/ButtonInteractionMethod.java
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
package net.tomatentum.marinara.interaction.methods;
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
|
||||||
|
import net.tomatentum.marinara.interaction.InteractionHandler;
|
||||||
|
import net.tomatentum.marinara.interaction.InteractionType;
|
||||||
|
import net.tomatentum.marinara.interaction.annotation.Button;
|
||||||
|
import net.tomatentum.marinara.wrapper.LibraryWrapper;
|
||||||
|
|
||||||
|
public class ButtonInteractionMethod extends InteractionMethod {
|
||||||
|
|
||||||
|
private String customId;
|
||||||
|
|
||||||
|
ButtonInteractionMethod(Method method, InteractionHandler handler, LibraryWrapper wrapper) {
|
||||||
|
super(method, handler, wrapper);
|
||||||
|
parseMethod();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object getParameter(Object parameter, int index) {
|
||||||
|
Class<?> type = getMethod().getParameterTypes()[index];
|
||||||
|
return wrapper.getComponentContextObject(parameter, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canRun(Object context) {
|
||||||
|
return wrapper.getButtonId(context).equals(customId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public InteractionType getType() {
|
||||||
|
return InteractionType.BUTTON;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void parseMethod() {
|
||||||
|
Button button = getMethod().getAnnotation(Button.class);
|
||||||
|
this.customId = button.customId();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -17,7 +17,6 @@ public abstract class LibraryWrapper {
|
|||||||
interactionSubscriber = new ArrayList<>();
|
interactionSubscriber = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void registerSlashCommands(SlashCommandDefinition[] defs);
|
|
||||||
|
|
||||||
public void handleInteraction(Object context) {
|
public void handleInteraction(Object context) {
|
||||||
interactionSubscriber.forEach((o) -> o.accept(context));
|
interactionSubscriber.forEach((o) -> o.accept(context));
|
||||||
@ -31,6 +30,11 @@ public abstract class LibraryWrapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public abstract InteractionType getInteractionType(Class<?> clazz);
|
public abstract InteractionType getInteractionType(Class<?> clazz);
|
||||||
|
|
||||||
|
public abstract void registerSlashCommands(SlashCommandDefinition[] defs);
|
||||||
public abstract Object convertCommandOption(Object context, SlashCommandOptionType type, String optionName);
|
public abstract Object convertCommandOption(Object context, SlashCommandOptionType type, String optionName);
|
||||||
public abstract ExecutableSlashCommandDefinition getCommandDefinition(Object context);
|
public abstract ExecutableSlashCommandDefinition getCommandDefinition(Object context);
|
||||||
|
|
||||||
|
public abstract String getButtonId(Object context);
|
||||||
|
public abstract Object getComponentContextObject(Object context, Class<?> type);
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user