Add Button Interaction with specific method parameter support.
This commit is contained in:
		| @@ -0,0 +1,5 @@ | ||||
| package net.tomatentum.marinara.interaction.annotation; | ||||
|  | ||||
| public @interface Button { | ||||
|     public String customId(); | ||||
| } | ||||
| @@ -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<>(); | ||||
|     } | ||||
|  | ||||
|     public abstract void registerSlashCommands(SlashCommandDefinition[] defs);  | ||||
|  | ||||
|     public void handleInteraction(Object context) { | ||||
|         interactionSubscriber.forEach((o) -> o.accept(context)); | ||||
| @@ -31,6 +30,11 @@ public abstract class LibraryWrapper { | ||||
|     } | ||||
|  | ||||
|     public abstract InteractionType getInteractionType(Class<?> clazz); | ||||
|  | ||||
|     public abstract void registerSlashCommands(SlashCommandDefinition[] defs);  | ||||
|     public abstract Object convertCommandOption(Object context, SlashCommandOptionType type, String optionName); | ||||
|     public abstract ExecutableSlashCommandDefinition getCommandDefinition(Object context); | ||||
|  | ||||
|     public abstract String getButtonId(Object context); | ||||
|     public abstract Object getComponentContextObject(Object context, Class<?> type); | ||||
| } | ||||
		Reference in New Issue
	
	Block a user