[CHANGE] Use deferred replies for slash commands

This commit is contained in:
2023-11-22 20:43:01 +02:00
parent 7c5da9a28b
commit 23fec44dc8
10 changed files with 39 additions and 23 deletions

View File

@@ -27,6 +27,7 @@ public class HelpSlashCommand extends SDLinkSlashCommand {
@Override
protected void execute(SlashCommandEvent event) {
event.deferReply(true).queue();
Set<SlashCommand> commands = CommandManager.INSTANCE.getCommands();
EmbedBuilder builder = new EmbedBuilder();
@@ -34,6 +35,6 @@ public class HelpSlashCommand extends SDLinkSlashCommand {
builder.setColor(Color.BLUE);
commands.forEach(cmd -> builder.addField(cmd.getName(), cmd.getHelp(), false));
event.replyEmbeds(builder.build()).setEphemeral(true).queue();
event.getHook().sendMessageEmbeds(builder.build()).setEphemeral(true).queue();
}
}

View File

@@ -35,6 +35,8 @@ public class PlayerListSlashCommand extends SDLinkSlashCommand {
@Override
protected void execute(SlashCommandEvent event) {
event.deferReply(true).queue();
try {
List<MinecraftAccount> players = SDLinkPlatform.minecraftHelper.getOnlinePlayers();
@@ -46,7 +48,7 @@ public class PlayerListSlashCommand extends SDLinkSlashCommand {
builder.setTitle("Online Players");
builder.setColor(Color.RED);
builder.setDescription("There are currently no players online");
event.replyEmbeds(builder.build()).setEphemeral(true).queue();
event.getHook().sendMessageEmbeds(builder.build()).setEphemeral(true).queue();
return;
}
@@ -78,9 +80,9 @@ public class PlayerListSlashCommand extends SDLinkSlashCommand {
paginator.setItems(pages);
ButtonEmbedPaginator embedPaginator = paginator.build();
event.replyEmbeds(pages.get(0)).setEphemeral(false).queue(success ->
success.retrieveOriginal().queue(msg -> embedPaginator.paginate(msg, 1)));
event.getHook().sendMessageEmbeds(pages.get(0)).setEphemeral(false).queue(success -> embedPaginator.paginate(success, 1));
} catch (Exception e) {
event.getHook().sendMessage("Failed to execute command. Please see your server log").setEphemeral(true).queue();
if (SDLinkConfig.INSTANCE.generalConfig.debugging)
e.printStackTrace();
}

View File

@@ -32,8 +32,9 @@ public class ServerStatusSlashCommand extends SDLinkSlashCommand {
@Override
protected void execute(SlashCommandEvent event) {
event.deferReply(true).queue();
Button refreshBtn = Button.danger("sdrefreshbtn", "Refresh");
event.replyEmbeds(runStatusCommand()).addActionRow(refreshBtn).queue();
event.getHook().sendMessageEmbeds(runStatusCommand()).addActionRow(refreshBtn).queue();
}
public static MessageEmbed runStatusCommand() {

View File

@@ -41,12 +41,14 @@ public class SetChannelCommand extends SDLinkSlashCommand {
@Override
protected void execute(SlashCommandEvent event) {
event.deferReply(true).queue();
StandardGuildMessageChannel channel = event.getOption("channel").getAsChannel().asStandardGuildMessageChannel();
String type = event.getOption("type").getAsString();
boolean webhook = event.getOption("webhook").getAsBoolean();
if (!channel.canTalk()) {
event.reply("I do not have permission to send messages in " + channel.getAsMention()).setEphemeral(true).queue();
event.getHook().sendMessage("I do not have permission to send messages in " + channel.getAsMention()).setEphemeral(true).queue();
return;
}
@@ -58,7 +60,7 @@ public class SetChannelCommand extends SDLinkSlashCommand {
result = setChannel(channel, type);
}
event.reply(result.getMessage()).setEphemeral(true).queue();
event.getHook().sendMessage(result.getMessage()).setEphemeral(true).queue();
}
private Result setChannel(StandardGuildMessageChannel channel, String type) {

View File

@@ -34,11 +34,13 @@ public class StaffUnverifyCommand extends SDLinkSlashCommand {
@Override
protected void execute(SlashCommandEvent event) {
event.deferReply(true).queue();
sdlinkDatabase.reloadCollection("verifiedaccounts");
List<SDLinkAccount> accounts = sdlinkDatabase.findAll(SDLinkAccount.class);
if (accounts.isEmpty()) {
event.reply("Sorry, but this server does not contain any stored players in its database").setEphemeral(true).queue();
event.getHook().sendMessage("Sorry, but this server does not contain any stored players in its database").setEphemeral(true).queue();
return;
}
@@ -48,13 +50,13 @@ public class StaffUnverifyCommand extends SDLinkSlashCommand {
Member member = event.getGuild().getMemberById(user.getId());
if (member == null) {
event.reply(user.getEffectiveName() + " is not a member of this discord server").setEphemeral(true).queue();
event.getHook().sendMessage(user.getEffectiveName() + " is not a member of this discord server").setEphemeral(true).queue();
return;
}
MinecraftAccount minecraftAccount = MinecraftAccount.of(mcname);
Result result = minecraftAccount.unverifyAccount(member, event.getGuild());
event.reply(result.getMessage()).setEphemeral(true).queue();
event.getHook().sendMessage(result.getMessage()).setEphemeral(true).queue();
}
}

View File

@@ -30,20 +30,22 @@ public class StaffVerifyAccountCommand extends SDLinkSlashCommand {
@Override
protected void execute(SlashCommandEvent event) {
event.deferReply(true).queue();
String mcname = event.getOption("mcname").getAsString();
User user = event.getOption("discorduser").getAsUser();
Member member = event.getGuild().getMemberById(user.getId());
if (member == null) {
event.reply(user.getEffectiveName() + " is not a member of this discord server").setEphemeral(true).queue();
event.getHook().sendMessage(user.getEffectiveName() + " is not a member of this discord server").setEphemeral(true).queue();
return;
}
MinecraftAccount minecraftAccount = MinecraftAccount.of(mcname);
Result result = minecraftAccount.verifyAccount(member, event.getGuild());
event.reply(result.getMessage()).setEphemeral(true).queue();
event.getHook().sendMessage(result.getMessage()).setEphemeral(true).queue();
}
}

View File

@@ -24,11 +24,13 @@ public class UnverifyAccountSlashCommand extends SDLinkSlashCommand {
@Override
protected void execute(SlashCommandEvent event) {
event.deferReply(true).queue();
sdlinkDatabase.reloadCollection("verifiedaccounts");
List<SDLinkAccount> accounts = sdlinkDatabase.findAll(SDLinkAccount.class);
if (accounts.isEmpty()) {
event.reply("Sorry, but this server does not contain any stored players in its database").setEphemeral(true).queue();
event.getHook().sendMessage("Sorry, but this server does not contain any stored players in its database").setEphemeral(true).queue();
return;
}
@@ -36,12 +38,12 @@ public class UnverifyAccountSlashCommand extends SDLinkSlashCommand {
if (account.getDiscordID() != null && account.getDiscordID().equalsIgnoreCase(event.getMember().getId())) {
MinecraftAccount minecraftAccount = MinecraftAccount.of(account.getUsername());
Result result = minecraftAccount.unverifyAccount(event.getMember(), event.getGuild());
event.reply(result.getMessage()).setEphemeral(true).queue();
event.getHook().sendMessage(result.getMessage()).setEphemeral(true).queue();
break;
}
}
event.reply("Sorry, we could not un-verify your Minecraft account. Please try again").setEphemeral(true).queue();
event.getHook().sendMessage("Sorry, we could not un-verify your Minecraft account. Please try again").setEphemeral(true).queue();
}
}

View File

@@ -29,10 +29,13 @@ public class VerifyAccountCommand extends SDLinkSlashCommand {
@Override
protected void execute(SlashCommandEvent event) {
event.deferReply(true).queue();
int mcCode = event.getOption("code") != null ? event.getOption("code").getAsInt() : 0;
if (mcCode == 0) {
event.reply("You need to provide a verification code").setEphemeral(true).queue();
event.getHook().sendMessage("You need to provide a verification code").setEphemeral(true).queue();
return;
}
@@ -40,7 +43,7 @@ public class VerifyAccountCommand extends SDLinkSlashCommand {
List<SDLinkAccount> accounts = sdlinkDatabase.findAll(SDLinkAccount.class);
if (accounts.isEmpty()) {
event.reply("Sorry, but this server does not contain any stored players in its database").setEphemeral(true).queue();
event.getHook().sendMessage("Sorry, but this server does not contain any stored players in its database").setEphemeral(true).queue();
return;
}
@@ -51,12 +54,12 @@ public class VerifyAccountCommand extends SDLinkSlashCommand {
if (account.getVerifyCode().equalsIgnoreCase(String.valueOf(mcCode))) {
MinecraftAccount minecraftAccount = MinecraftAccount.of(account.getUsername());
Result result = minecraftAccount.verifyAccount(event.getMember(), event.getGuild());
event.reply(result.getMessage()).setEphemeral(true).queue();
event.getHook().sendMessage(result.getMessage()).setEphemeral(true).queue();
return;
}
}
event.reply("Sorry, we could not verify your Minecraft account. Please try again").setEphemeral(true).queue();
event.getHook().sendMessage("Sorry, we could not verify your Minecraft account. Please try again").setEphemeral(true).queue();
}
}

View File

@@ -36,6 +36,7 @@ public class ViewVerifiedAccounts extends SDLinkSlashCommand {
@Override
protected void execute(SlashCommandEvent event) {
event.deferReply(true).queue();
try {
ButtonEmbedPaginator.Builder paginator = MessageUtil.defaultPaginator();
@@ -47,7 +48,7 @@ public class ViewVerifiedAccounts extends SDLinkSlashCommand {
AtomicInteger count = new AtomicInteger();
if (accounts.isEmpty()) {
event.reply("There are no verified accounts for this discord").setEphemeral(true).queue();
event.getHook().sendMessage("There are no verified accounts for this discord").setEphemeral(true).queue();
return;
}
@@ -74,8 +75,9 @@ public class ViewVerifiedAccounts extends SDLinkSlashCommand {
paginator.setItems(pages);
ButtonEmbedPaginator embedPaginator = paginator.build();
event.replyEmbeds(pages.get(0)).setEphemeral(false).queue(success -> success.retrieveOriginal().queue(msg -> embedPaginator.paginate(msg, 1)));
event.getHook().sendMessageEmbeds(pages.get(0)).setEphemeral(false).queue(success -> embedPaginator.paginate(success, 1));
} catch (Exception e) {
event.getHook().sendMessage("Failed to execute command. Please see your server log").setEphemeral(true).queue();
if (SDLinkConfig.INSTANCE.generalConfig.debugging)
e.printStackTrace();
}

View File

@@ -87,8 +87,7 @@ public class DiscordEventHandler extends ListenerAdapter {
@Override
public void onButtonInteraction(@NotNull ButtonInteractionEvent event) {
if (event.getComponentId().equals("sdrefreshbtn")) {
event.getMessage().editMessageEmbeds(ServerStatusSlashCommand.runStatusCommand()).queue();
event.reply("Success!").setEphemeral(true).queue();
event.deferEdit().queue(s -> s.editOriginalEmbeds(ServerStatusSlashCommand.runStatusCommand()).queue());
}
}