fix for sub commands since discord doesn't allow not showing them in dms

This commit is contained in:
Lee 2024-06-28 19:07:01 +01:00
parent fa205d7ff2
commit e17c8a08c2

@ -150,6 +150,7 @@ public class CommandService extends ListenerAdapter {
try { try {
BatCommandExecutor executor = null; BatCommandExecutor executor = null;
List<Permission> requiredPermissions = new ArrayList<>(); List<Permission> requiredPermissions = new ArrayList<>();
boolean isSubCommand = false;
// No args provided, use the main command executor // No args provided, use the main command executor
if (event.getInteraction().getSubcommandName() == null) { if (event.getInteraction().getSubcommandName() == null) {
@ -162,6 +163,7 @@ public class CommandService extends ListenerAdapter {
executor = subCommand.getValue(); executor = subCommand.getValue();
requiredPermissions.addAll(Arrays.asList(subCommand.getValue().getCommandInfo().requiredPermissions())); requiredPermissions.addAll(Arrays.asList(subCommand.getValue().getCommandInfo().requiredPermissions()));
requiredPermissions.addAll(Arrays.asList(command.getCommandInfo().requiredPermissions())); // not sure if we'd want this, but it's here for now requiredPermissions.addAll(Arrays.asList(command.getCommandInfo().requiredPermissions())); // not sure if we'd want this, but it's here for now
isSubCommand = true;
break; break;
} }
} }
@ -196,6 +198,14 @@ public class CommandService extends ListenerAdapter {
return; return;
} }
} }
if (isSubCommand && command.getCommandInfo().guildOnly() && !ranInsideGuild) {
event.replyEmbeds(EmbedUtils.errorEmbed()
.setDescription("This command can only be executed in a guild")
.build()).setEphemeral(true).queue();
return;
}
log.info("Executing command \"{}\" for user \"{}\"", commandName, user.getDiscordUser().getName()); log.info("Executing command \"{}\" for user \"{}\"", commandName, user.getDiscordUser().getName());
executor.execute(guild, user, ranInsideGuild ? event.getChannel().asTextChannel() : event.getChannel().asPrivateChannel(), executor.execute(guild, user, ranInsideGuild ? event.getChannel().asTextChannel() : event.getChannel().asPrivateChannel(),
event.getMember(), event.getInteraction()); event.getMember(), event.getInteraction());