Skip to content

Commit 70b292d

Browse files
Merge pull request #371 from Java-Discord/dynxsty/upgrade_dih4jda
Upgraded DIH4JDA & JDA
2 parents c36e8c8 + b24cf07 commit 70b292d

File tree

114 files changed

+324
-360
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

114 files changed

+324
-360
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public class PingCommand extends SlashCommand {
3838
* The constructor of this class, which sets the corresponding {@link net.dv8tion.jda.api.interactions.commands.build.SlashCommandData}.
3939
*/
4040
public PingCommand() {
41-
setSlashCommandData(Commands.slash("ping", "Shows the bot's gateway ping.")
41+
setCommandData(Commands.slash("ping", "Shows the bot's gateway ping.")
4242
.setGuildOnly(true)
4343
);
4444
}

build.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ dependencies {
2929
compileOnly("com.google.code.findbugs:jsr305:3.0.2")
3030
compileOnly("org.jetbrains:annotations:23.0.0")
3131

32-
// DIH4JDA (Interaction Framework) & JDA
33-
implementation("com.github.DynxstyGIT:DIH4JDA:9e02a171e8")
34-
implementation("net.dv8tion:JDA:5.0.0-alpha.21") {
32+
// DIH4JDA (Command Framework) & JDA
33+
implementation("xyz.dynxsty:dih4jda:1.6.1")
34+
implementation("net.dv8tion:JDA:5.0.0-beta.1") {
3535
exclude(module = "opus-java")
3636
}
3737

src/main/java/net/javadiscord/javabot/Bot.java

Lines changed: 25 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,30 @@
11
package net.javadiscord.javabot;
22

33
import java.time.ZoneOffset;
4-
import java.util.Arrays;
4+
import java.util.ArrayList;
55
import java.util.EnumSet;
6-
import java.util.HashMap;
76
import java.util.List;
87
import java.util.Map;
98
import java.util.TimeZone;
109

1110
import javax.annotation.PostConstruct;
1211

12+
import org.jetbrains.annotations.NotNull;
1313
import org.springframework.boot.SpringApplication;
1414
import org.springframework.boot.autoconfigure.SpringBootApplication;
1515
import org.springframework.context.ApplicationContext;
1616
import org.springframework.context.annotation.ComponentScan;
1717
import org.springframework.context.annotation.FilterType;
1818
import org.springframework.scheduling.annotation.EnableScheduling;
1919

20-
import com.dynxsty.dih4jda.DIH4JDA;
21-
import com.dynxsty.dih4jda.interactions.commands.ContextCommand;
22-
import com.dynxsty.dih4jda.interactions.commands.SlashCommand;
23-
import com.dynxsty.dih4jda.interactions.commands.SlashCommand.Subcommand;
24-
import com.dynxsty.dih4jda.interactions.components.ButtonHandler;
25-
import com.dynxsty.dih4jda.interactions.components.ModalHandler;
26-
import com.dynxsty.dih4jda.interactions.components.SelectMenuHandler;
20+
import xyz.dynxsty.dih4jda.DIH4JDA;
21+
import xyz.dynxsty.dih4jda.interactions.commands.application.ContextCommand;
22+
import xyz.dynxsty.dih4jda.interactions.commands.application.SlashCommand;
23+
import xyz.dynxsty.dih4jda.interactions.commands.application.SlashCommand.Subcommand;
24+
import xyz.dynxsty.dih4jda.interactions.components.ButtonHandler;
25+
import xyz.dynxsty.dih4jda.interactions.components.IdMapping;
26+
import xyz.dynxsty.dih4jda.interactions.components.ModalHandler;
27+
import xyz.dynxsty.dih4jda.interactions.components.StringSelectMenuHandler;
2728

2829
import io.sentry.Sentry;
2930
import lombok.RequiredArgsConstructor;
@@ -34,7 +35,6 @@
3435
import net.javadiscord.javabot.annotations.PreRegisteredListener;
3536
import net.javadiscord.javabot.data.config.BotConfig;
3637
import net.javadiscord.javabot.tasks.PresenceUpdater;
37-
import net.javadiscord.javabot.util.ExceptionLogger;
3838

3939
/**
4040
* The main class where the bot is initialized.
@@ -81,11 +81,7 @@ public void init() {
8181
if (!contextCommands.isEmpty()) {
8282
dih4jda.addContextCommands(contextCommands.toArray(ContextCommand[]::new));
8383
}
84-
try {
85-
dih4jda.registerInteractions();
86-
} catch (ReflectiveOperationException e) {
87-
ExceptionLogger.capture(e, getClass().getSimpleName());
88-
}
84+
dih4jda.registerInteractions();
8985
addEventListeners(listeners);
9086
registerComponentHandlers(ctx);
9187
}
@@ -95,7 +91,7 @@ public void init() {
9591
* <ol>
9692
* <li>Setting the time zone to UTC, to keep our sanity when working with times.</li>
9793
* <li>Loading the configuration JSON file.</li>
98-
* <li>Creating and configuring the {@link JDA} instance that enables the bots' Discord connectivity.</li>
94+
* <li>Creating and configuring the {@link net.dv8tion.jda.api.JDA} instance that enables the bots' Discord connectivity.</li>
9995
* <li>Initializing the {@link DIH4JDA} instance.</li>
10096
* <li>Adding event listeners to the bot.</li>
10197
* </ol>
@@ -109,29 +105,26 @@ public static void main(String[] args) throws Exception {
109105
SpringApplication.run(Bot.class, args);
110106
}
111107

112-
private void registerComponentHandlers(ApplicationContext ctx) {
108+
private void registerComponentHandlers(@NotNull ApplicationContext ctx) {
113109
Map<String, Object> interactionHandlers = ctx.getBeansWithAnnotation(AutoDetectableComponentHandler.class);
114-
Map<List<String>, ButtonHandler> buttonHandlers = new HashMap<>();
115-
Map<List<String>, ModalHandler> modalHandlers = new HashMap<>();
116-
Map<List<String>, SelectMenuHandler> selectMenuHandlers = new HashMap<>();
110+
List<IdMapping<ButtonHandler>> buttonMappings = new ArrayList<>();
111+
List<IdMapping<ModalHandler>> modalMappings = new ArrayList<>();
112+
List<IdMapping<StringSelectMenuHandler>> stringSelectMappings = new ArrayList<>();
117113
for (Object handler : interactionHandlers.values()) {
118114
AutoDetectableComponentHandler annotation = handler.getClass().getAnnotation(AutoDetectableComponentHandler.class);
119-
List<String> keys = Arrays.asList(annotation.value());
120-
addComponentHandler(buttonHandlers, keys, handler, ButtonHandler.class);
121-
addComponentHandler(modalHandlers, keys, handler, ModalHandler.class);
122-
addComponentHandler(selectMenuHandlers, keys, handler, SelectMenuHandler.class);
115+
String[] keys = annotation.value();
116+
addComponentHandler(buttonMappings, keys, handler, ButtonHandler.class);
117+
addComponentHandler(modalMappings, keys, handler, ModalHandler.class);
118+
addComponentHandler(stringSelectMappings, keys, handler, StringSelectMenuHandler.class);
123119
}
124-
dih4jda.addButtonHandlers(buttonHandlers);
125-
dih4jda.addModalHandlers(modalHandlers);
126-
dih4jda.addSelectMenuHandlers(selectMenuHandlers);
120+
dih4jda.addButtonMappings(buttonMappings.toArray(IdMapping[]::new));
121+
dih4jda.addModalMappings(modalMappings.toArray(IdMapping[]::new));
122+
dih4jda.addStringSelectMenuMappings(stringSelectMappings.toArray(IdMapping[]::new));
127123
}
128124

129-
private <T> void addComponentHandler(Map<List<String>, T> handlers, List<String> keys, Object handler, Class<T> type) {
125+
private <T> void addComponentHandler(List<IdMapping<T>> handlers, String[] keys, Object handler, @NotNull Class<T> type) {
130126
if (type.isInstance(handler)) {
131-
T old = handlers.putIfAbsent(keys, type.cast(handler));
132-
if(old!=null) {
133-
throw new IllegalStateException("The same interaction name was registered multiple times");
134-
}
127+
handlers.add(IdMapping.of(type.cast(handler), keys));
135128
}
136129
}
137130
}

src/main/java/net/javadiscord/javabot/SpringConfig.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
import org.springframework.context.annotation.Bean;
1313
import org.springframework.context.annotation.Configuration;
1414

15-
import com.dynxsty.dih4jda.DIH4JDA;
16-
import com.dynxsty.dih4jda.DIH4JDABuilder;
17-
import com.dynxsty.dih4jda.DIH4JDALogger;
18-
import com.dynxsty.dih4jda.exceptions.DIH4JDAException;
19-
import com.dynxsty.dih4jda.interactions.commands.RegistrationType;
15+
import xyz.dynxsty.dih4jda.DIH4JDA;
16+
import xyz.dynxsty.dih4jda.DIH4JDABuilder;
17+
import xyz.dynxsty.dih4jda.DIH4JDALogger;
18+
import xyz.dynxsty.dih4jda.exceptions.DIH4JDAException;
19+
import xyz.dynxsty.dih4jda.interactions.commands.application.RegistrationType;
2020

2121
import lombok.RequiredArgsConstructor;
2222
import net.dv8tion.jda.api.JDA;
@@ -91,8 +91,8 @@ public JDA jda(BotConfig botConfig, ApplicationContext ctx) throws LoginExceptio
9191
*/
9292
@Bean
9393
public DIH4JDA initializeDIH4JDA(JDA jda) throws DIH4JDAException {
94+
DIH4JDA.setDefaultRegistrationType(RegistrationType.GLOBAL);
9495
return DIH4JDABuilder.setJDA(jda)
95-
.setDefaultCommandType(RegistrationType.GLOBAL)
9696
.disableLogging(DIH4JDALogger.Type.SMART_QUEUE_IGNORED)
9797
.disableAutomaticCommandRegistration()
9898
.build();

src/main/java/net/javadiscord/javabot/data/h2db/commands/DbAdminCommand.java

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package net.javadiscord.javabot.data.h2db.commands;
22

3-
import java.util.Map;
4-
import java.util.Set;
5-
6-
import com.dynxsty.dih4jda.interactions.commands.RegistrationType;
7-
import com.dynxsty.dih4jda.interactions.commands.SlashCommand;
3+
import xyz.dynxsty.dih4jda.interactions.commands.application.RegistrationType;
4+
import xyz.dynxsty.dih4jda.interactions.commands.application.SlashCommand;
85

96
import net.dv8tion.jda.api.Permission;
107
import net.dv8tion.jda.api.interactions.commands.DefaultMemberPermissions;
@@ -29,14 +26,14 @@ public class DbAdminCommand extends SlashCommand {
2926
*/
3027
public DbAdminCommand(BotConfig botConfig, ExportSchemaSubcommand exportSchemaSubcommand, ExportTableSubcommand exportTableSubcommand, MigrationsListSubcommand migrationsListSubcommand, MigrateSubcommand migrateSubcommand, QuickMigrateSubcommand quickMigrateSubcommand, MessageCacheInfoSubcommand messageCacheInfoSubcommand) {
3128
setRegistrationType(RegistrationType.GUILD);
32-
setSlashCommandData(Commands.slash("db-admin", "(ADMIN ONLY) Administrative Commands for managing the bot's database.")
29+
setCommandData(Commands.slash("db-admin", "(ADMIN ONLY) Administrative Commands for managing the bot's database.")
3330
.setDefaultPermissions(DefaultMemberPermissions.enabledFor(Permission.MANAGE_SERVER))
3431
.setGuildOnly(true)
3532
);
3633
addSubcommands(exportSchemaSubcommand, exportTableSubcommand, migrationsListSubcommand, migrateSubcommand, quickMigrateSubcommand);
37-
addSubcommandGroups(Map.of(
38-
new SubcommandGroupData("message-cache", "Administrative tools for managing the Message Cache."), Set.of(messageCacheInfoSubcommand)
34+
addSubcommandGroups(SubcommandGroup.of(
35+
new SubcommandGroupData("message-cache", "Administrative tools for managing the Message Cache."), messageCacheInfoSubcommand
3936
));
40-
requireUsers(botConfig.getSystems().getAdminConfig().getAdminUsers());
37+
setRequiredUsers(botConfig.getSystems().getAdminConfig().getAdminUsers());
4138
}
4239
}

src/main/java/net/javadiscord/javabot/data/h2db/commands/ExportSchemaSubcommand.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package net.javadiscord.javabot.data.h2db.commands;
22

3-
import com.dynxsty.dih4jda.interactions.commands.SlashCommand;
3+
import xyz.dynxsty.dih4jda.interactions.commands.application.SlashCommand;
44
import net.dv8tion.jda.api.Permission;
55
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
66
import net.dv8tion.jda.api.interactions.commands.OptionMapping;
@@ -40,10 +40,10 @@ public class ExportSchemaSubcommand extends SlashCommand.Subcommand {
4040
public ExportSchemaSubcommand(ExecutorService asyncPool, BotConfig botConfig, DataSource dataSource) {
4141
this.asyncPool = asyncPool;
4242
this.dataSource = dataSource;
43-
setSubcommandData(new SubcommandData("export-schema", "(ADMIN ONLY) Exports the bot's schema.")
43+
setCommandData(new SubcommandData("export-schema", "(ADMIN ONLY) Exports the bot's schema.")
4444
.addOption(OptionType.BOOLEAN, "include-data", "Should data be included in the export?"));
45-
requireUsers(botConfig.getSystems().getAdminConfig().getAdminUsers());
46-
requirePermissions(Permission.MANAGE_SERVER);
45+
setRequiredUsers(botConfig.getSystems().getAdminConfig().getAdminUsers());
46+
setRequiredPermissions(Permission.MANAGE_SERVER);
4747
}
4848

4949
@Override

src/main/java/net/javadiscord/javabot/data/h2db/commands/ExportTableSubcommand.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package net.javadiscord.javabot.data.h2db.commands;
22

3-
import com.dynxsty.dih4jda.interactions.commands.SlashCommand;
3+
import xyz.dynxsty.dih4jda.interactions.commands.application.SlashCommand;
44
import net.dv8tion.jda.api.Permission;
55
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
66
import net.dv8tion.jda.api.interactions.commands.OptionMapping;
@@ -43,7 +43,7 @@ public class ExportTableSubcommand extends SlashCommand.Subcommand {
4343
public ExportTableSubcommand(ExecutorService asyncPool, SystemsConfig systemsConfig, DataSource dataSource) {
4444
this.asyncPool = asyncPool;
4545
this.dataSource = dataSource;
46-
setSubcommandData(new SubcommandData("export-table", "(ADMIN ONLY) Export a single database table")
46+
setCommandData(new SubcommandData("export-table", "(ADMIN ONLY) Export a single database table")
4747
.addOptions(new OptionData(OptionType.STRING, "table", "What table should be exported", true)
4848
.addChoice("Custom Tags", "CUSTOM_TAGS")
4949
.addChoice("Help Account", "HELP_ACCOUNT")
@@ -58,8 +58,8 @@ public ExportTableSubcommand(ExecutorService asyncPool, SystemsConfig systemsCon
5858
.addChoice("Warns", "WARN")
5959
.addChoice("User Preferences", "USER_PREFERENCES"),
6060
new OptionData(OptionType.BOOLEAN, "include-data", "Should data be included in the export?")));
61-
requireUsers(systemsConfig.getAdminConfig().getAdminUsers());
62-
requirePermissions(Permission.MANAGE_SERVER);
61+
setRequiredUsers(systemsConfig.getAdminConfig().getAdminUsers());
62+
setRequiredPermissions(Permission.MANAGE_SERVER);
6363
}
6464

6565
@Override

src/main/java/net/javadiscord/javabot/data/h2db/commands/MessageCacheInfoSubcommand.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package net.javadiscord.javabot.data.h2db.commands;
22

3-
import com.dynxsty.dih4jda.interactions.commands.SlashCommand;
3+
import xyz.dynxsty.dih4jda.interactions.commands.application.SlashCommand;
44
import net.dv8tion.jda.api.EmbedBuilder;
55
import net.dv8tion.jda.api.Permission;
66
import net.dv8tion.jda.api.entities.MessageEmbed;
@@ -31,9 +31,9 @@ public MessageCacheInfoSubcommand(MessageCache messageCache, BotConfig botConfig
3131
this.messageCache = messageCache;
3232
this.botConfig = botConfig;
3333
this.dbActions = dbActions;
34-
setSubcommandData(new SubcommandData("info", "Displays some info about the Message Cache."));
35-
requireUsers(botConfig.getSystems().getAdminConfig().getAdminUsers());
36-
requirePermissions(Permission.MANAGE_SERVER);
34+
setCommandData(new SubcommandData("info", "Displays some info about the Message Cache."));
35+
setRequiredUsers(botConfig.getSystems().getAdminConfig().getAdminUsers());
36+
setRequiredPermissions(Permission.MANAGE_SERVER);
3737
}
3838

3939
@Override

src/main/java/net/javadiscord/javabot/data/h2db/commands/MigrateSubcommand.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package net.javadiscord.javabot.data.h2db.commands;
22

3-
import com.dynxsty.dih4jda.interactions.commands.AutoCompletable;
4-
import com.dynxsty.dih4jda.interactions.commands.SlashCommand;
5-
import com.dynxsty.dih4jda.util.AutoCompleteUtils;
3+
import xyz.dynxsty.dih4jda.interactions.AutoCompletable;
4+
import xyz.dynxsty.dih4jda.interactions.commands.application.SlashCommand;
5+
import xyz.dynxsty.dih4jda.util.AutoCompleteUtils;
66
import net.dv8tion.jda.api.Permission;
77
import net.dv8tion.jda.api.events.interaction.command.CommandAutoCompleteInteractionEvent;
88
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
@@ -56,10 +56,10 @@ public class MigrateSubcommand extends SlashCommand.Subcommand implements AutoCo
5656
public MigrateSubcommand(ExecutorService asyncPool, DataSource dataSource, SystemsConfig systemsConfig) {
5757
this.asyncPool = asyncPool;
5858
this.dataSource = dataSource;
59-
setSubcommandData(new SubcommandData("migrate", "(ADMIN ONLY) Run a single database migration")
59+
setCommandData(new SubcommandData("migrate", "(ADMIN ONLY) Run a single database migration")
6060
.addOption(OptionType.STRING, "name", "The migration's filename", true, true));
61-
requireUsers(systemsConfig.getAdminConfig().getAdminUsers());
62-
requirePermissions(Permission.MANAGE_SERVER);
61+
setRequiredUsers(systemsConfig.getAdminConfig().getAdminUsers());
62+
setRequiredPermissions(Permission.MANAGE_SERVER);
6363
}
6464

6565
/**
@@ -133,6 +133,6 @@ public void execute(@NotNull SlashCommandInteractionEvent event) {
133133

134134
@Override
135135
public void handleAutoComplete(@NotNull CommandAutoCompleteInteractionEvent event, @NotNull AutoCompleteQuery target) {
136-
event.replyChoices(AutoCompleteUtils.handleChoices(event, MigrateSubcommand::replyMigrations)).queue();
136+
event.replyChoices(AutoCompleteUtils.filterChoices(event, replyMigrations(event))).queue();
137137
}
138138
}

src/main/java/net/javadiscord/javabot/data/h2db/commands/MigrationsListSubcommand.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package net.javadiscord.javabot.data.h2db.commands;
22

3-
import com.dynxsty.dih4jda.interactions.commands.SlashCommand;
3+
import xyz.dynxsty.dih4jda.interactions.commands.application.SlashCommand;
44
import net.dv8tion.jda.api.EmbedBuilder;
55
import net.dv8tion.jda.api.Permission;
66
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
@@ -28,9 +28,9 @@ public class MigrationsListSubcommand extends SlashCommand.Subcommand {
2828
* @param systemsConfig Configuration for various systems
2929
*/
3030
public MigrationsListSubcommand(SystemsConfig systemsConfig) {
31-
setSubcommandData(new SubcommandData("migrations-list", "(ADMIN ONLY) Shows a list with all available database migrations."));
32-
requireUsers(systemsConfig.getAdminConfig().getAdminUsers());
33-
requirePermissions(Permission.MANAGE_SERVER);
31+
setCommandData(new SubcommandData("migrations-list", "(ADMIN ONLY) Shows a list with all available database migrations."));
32+
setRequiredUsers(systemsConfig.getAdminConfig().getAdminUsers());
33+
setRequiredPermissions(Permission.MANAGE_SERVER);
3434
}
3535

3636
@Override

0 commit comments

Comments
 (0)