NOTE: This project will not continue to be updated.
However, I'm working on my own Discord API library that implements many of the same designs and features of JDF.
See here: http://i.slz.lol/go/lxKLxA
Designed to make developing bots faster and simpler!
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
<dependency>
<groupId>com.github.ice-games</groupId>
<artifactId>java-discord-framework</artifactId>
<version>1.4</version>
</dependency>
In your main class, you need to extend DiscordBot
, like this:
import javax.security.auth.login.LoginException;
public class BotExample extends DiscordBot {
public BotExample() throws LoginException, InterruptedException {
super("token");
registerCommands(new CommandExample());
build();
getJda().awaitReady();
}
}
Making commands with this framework is really easy, here's an example:
import com.seailz.jdaframework.command.Command;
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
@CommandInfo(
name = "epiccommand",
description = "This is such an epic command!"
)
public class CommandExample extends Command {
@Override
public void onCommand(SlashCommandInteractionEvent e) {
e.reply("Hello World!").queue();
}
}
See? Really easy! Now all you need to do is register it in your main class, like this:
registerCommands(
new CommandExample()
);
public class MessageContextMenuExample extends ContextMenu {
public MessageContextMenuExample() {
super("Context Menu", Command.Type.MESSAGE);
onSubmitMessage(e -> {
e.reply("Hello World!").queue();
});
// Just call a new instance of this class after your build method in your bot class
}
}
In your main class, all you need to do is call a new instance of this class, like this:
new MessageContextMenuExample();
The same as before, but just replace onSubmitMessage
, with onSubmitUser
.
public class ModalExample extends Modal {
public ModalExample() {
super("Questions", "age-question"); // The title and the ID
TextInput input = TextInput.create("age", "How old are you?", TextInputStyle.SHORT)
.setMaxLength(2).build(); // The input fields
addComponent(member -> input); // adds the component to the modal
onSubmit((member, mappings, event) -> {
event.reply("Thanks for submitting your age! We received **" + mappings[0].getAsString() + "** years old.").queue();
}); // what to do when the modal is submitted
}
}
Here's an example of opening a modal for a user:
public class ModalCommand extends ListenerAdapter {
@Override
public void onSlashCommandInteraction(@NotNull SlashCommandInteractionEvent event) {
if (!event.getName().equals("modal"))
return;
ModalExample testModal = new ModalExample();
testModal.open(event.getMember(), event);
}
}
ButtonManager.listen(Button.secondary("epic-button", "Don't you agree?"), event -> {
event.reply("You clicked the epic button!").queue();
});