Skip to content

Commit 6462f5a

Browse files
committed
feat: Added Buttons
1 parent a9b5a81 commit 6462f5a

File tree

5 files changed

+61
-2
lines changed

5 files changed

+61
-2
lines changed

src/main/java/com/seailz/jdaframework/DiscordBot.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.seailz.jdaframework;
22

3+
import com.seailz.jdaframework.button.ButtonListener;
34
import com.seailz.jdaframework.command.Command;
45
import com.seailz.jdaframework.command.listener.CommandRunListener;
56
import com.seailz.jdaframework.command.registry.CommandRegistry;
@@ -11,10 +12,13 @@
1112
import lombok.Setter;
1213
import net.dv8tion.jda.api.JDA;
1314
import net.dv8tion.jda.api.JDABuilder;
15+
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
1416
import net.dv8tion.jda.api.hooks.EventListener;
1517
import net.dv8tion.jda.api.hooks.ListenerAdapter;
1618

1719
import javax.security.auth.login.LoginException;
20+
import java.util.HashMap;
21+
import java.util.function.Consumer;
1822

1923
/**
2024
* Main Discord Bot Class
@@ -26,6 +30,8 @@ public class DiscordBot {
2630

2731
@Getter
2832
private static DiscordBot instance;
33+
@Getter
34+
private static HashMap<String, Consumer<ButtonInteractionEvent>> buttonRegistry;
2935
private String token;
3036
private JDA jda;
3137
private JDABuilder builder;
@@ -40,11 +46,14 @@ public DiscordBot(String token) {
4046
contextMenuRegistry = new ContextMenuRegistry();
4147
builder = JDABuilder.createDefault(token);
4248

49+
buttonRegistry = new HashMap<>();
50+
4351
registerListeners(
4452
new MessageContextMenuListener(),
4553
new UserContextMenuListener(),
4654
new CommandRunListener(),
47-
new ModalListener()
55+
new ModalListener(),
56+
new ButtonListener()
4857
);
4958
}
5059

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.seailz.jdaframework.button;
2+
3+
import com.seailz.jdaframework.DiscordBot;
4+
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
5+
import net.dv8tion.jda.api.hooks.ListenerAdapter;
6+
import org.jetbrains.annotations.NotNull;
7+
8+
public class ButtonListener extends ListenerAdapter {
9+
@Override
10+
public void onButtonInteraction(@NotNull ButtonInteractionEvent event) {
11+
if (DiscordBot.getButtonRegistry().containsKey(event.getButton().getId())) {
12+
DiscordBot.getButtonRegistry().get(event.getButton().getId()).accept(event);
13+
}
14+
}
15+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.seailz.jdaframework.button;
2+
3+
import com.seailz.jdaframework.DiscordBot;
4+
import lombok.Getter;
5+
import net.dv8tion.jda.api.events.interaction.component.ButtonInteractionEvent;
6+
import net.dv8tion.jda.api.interactions.components.buttons.Button;
7+
8+
import java.util.function.Consumer;
9+
10+
public class ButtonManager {
11+
12+
public static void listen(Button button, Consumer<ButtonInteractionEvent> onClick) {
13+
DiscordBot.getButtonRegistry().put(button.getId(), onClick);
14+
}
15+
16+
}

src/test/java/com/seailz/test/TestCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@
1111
public class TestCommand extends Command {
1212
@Override
1313
public void onCommand(SlashCommandInteractionEvent e) {
14-
e.reply("hi").queue();
14+
new TestModal().open(e.getMember(), e);
1515
}
1616
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.seailz.test;
2+
3+
import com.seailz.jdaframework.modals.Modal;
4+
import net.dv8tion.jda.api.interactions.components.text.TextInput;
5+
import net.dv8tion.jda.api.interactions.components.text.TextInputStyle;
6+
7+
public class TestModal extends Modal {
8+
9+
10+
public TestModal() {
11+
super("test", "test");
12+
13+
TextInput lol = TextInput.create("lol", "lol", TextInputStyle.SHORT).build();
14+
addComponent(member -> lol);
15+
onSubmit((member, mappings, event) -> {
16+
event.getTextChannel().sendMessage("asdf").queue();
17+
});
18+
}
19+
}

0 commit comments

Comments
 (0)