diff --git a/EssentialsDiscord/src/main/java/net/essentialsx/api/v2/services/discord/InteractionEvent.java b/EssentialsDiscord/src/main/java/net/essentialsx/api/v2/services/discord/InteractionEvent.java index eece3cb36..f66105e27 100644 --- a/EssentialsDiscord/src/main/java/net/essentialsx/api/v2/services/discord/InteractionEvent.java +++ b/EssentialsDiscord/src/main/java/net/essentialsx/api/v2/services/discord/InteractionEvent.java @@ -10,6 +10,13 @@ public interface InteractionEvent { */ void reply(String message); + /** + * Appends the given string to the initial response message and creates one if it doesn't exist. + * @param tlKey The tlKey of the message to append. + * @param args The args for the message to append. + */ + void replyTl(String tlKey, Object... args); + /** * Gets the member which caused this event. * @return the member which caused the event. diff --git a/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/InteractionControllerImpl.java b/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/InteractionControllerImpl.java index ed62f0165..265815972 100644 --- a/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/InteractionControllerImpl.java +++ b/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/InteractionControllerImpl.java @@ -61,7 +61,7 @@ public class InteractionControllerImpl extends ListenerAdapter implements Intera final InteractionEvent interactionEvent = new InteractionEventImpl(event); final List commandSnowflakes = jda.getSettings().getCommandSnowflakes(command.getName()); if (commandSnowflakes != null && !DiscordUtil.hasRoles(event.getMember(), commandSnowflakes)) { - interactionEvent.reply(tlLiteral("noAccessCommand")); + interactionEvent.replyTl("noAccessCommand"); return; } jda.getPlugin().getEss().scheduleSyncDelayedTask(() -> command.onCommand(interactionEvent)); diff --git a/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/InteractionEventImpl.java b/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/InteractionEventImpl.java index 018916415..ca008c37f 100644 --- a/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/InteractionEventImpl.java +++ b/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/InteractionEventImpl.java @@ -1,5 +1,6 @@ package net.essentialsx.discord.interactions; +import com.earth2me.essentials.utils.AdventureUtil; import com.earth2me.essentials.utils.FormatUtil; import com.google.common.base.Joiner; import net.dv8tion.jda.api.entities.Message; @@ -18,6 +19,8 @@ import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; +import static com.earth2me.essentials.I18n.tlLiteral; + /** * A class which provides information about what triggered an interaction event. */ @@ -45,6 +48,11 @@ public class InteractionEventImpl implements InteractionEvent { .queue(null, error -> logger.log(Level.SEVERE, "Error while editing command interaction response", error)); } + @Override + public void replyTl(String tlKey, Object... args) { + reply(AdventureUtil.miniToLegacy(tlLiteral(tlKey, args))); + } + @Override public InteractionMember getMember() { return member; diff --git a/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/commands/ExecuteCommand.java b/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/commands/ExecuteCommand.java index 31e8a4efb..09e1a9fad 100644 --- a/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/commands/ExecuteCommand.java +++ b/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/commands/ExecuteCommand.java @@ -21,7 +21,7 @@ public class ExecuteCommand extends InteractionCommandImpl { @Override public void onCommand(final InteractionEvent event) { final String command = event.getStringArgument("command"); - event.reply(tlLiteral("discordCommandExecuteReply", command)); + event.replyTl("discordCommandExecuteReply", command); Bukkit.getScheduler().runTask(jda.getPlugin(), () -> { try { Bukkit.dispatchCommand(new DiscordCommandSender(jda, Bukkit.getConsoleSender(), message -> event.reply(MessageUtil.sanitizeDiscordMarkdown(message))).getSender(), command); diff --git a/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/commands/MessageCommand.java b/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/commands/MessageCommand.java index abfd6b83c..94f00faf6 100644 --- a/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/commands/MessageCommand.java +++ b/EssentialsDiscord/src/main/java/net/essentialsx/discord/interactions/commands/MessageCommand.java @@ -31,26 +31,26 @@ public class MessageCommand extends InteractionCommandImpl { try { user = jda.getPlugin().getEss().matchUser(Bukkit.getServer(), null, event.getStringArgument("username"), getHidden, false); } catch (PlayerNotFoundException e) { - event.reply(tlLiteral("errorWithMessage", e.getMessage())); + event.replyTl("errorWithMessage", e.getMessage()); return; } if (!getHidden && user.isIgnoreMsg()) { - event.reply(tlLiteral("msgIgnore", MessageUtil.sanitizeDiscordMarkdown(user.getDisplayName()))); + event.replyTl("msgIgnore", MessageUtil.sanitizeDiscordMarkdown(user.getDisplayName())); return; } if (user.isAfk()) { if (user.getAfkMessage() != null) { - event.reply(tlLiteral("userAFKWithMessage", MessageUtil.sanitizeDiscordMarkdown(user.getDisplayName()), MessageUtil.sanitizeDiscordMarkdown(user.getAfkMessage()))); + event.replyTl("userAFKWithMessage", MessageUtil.sanitizeDiscordMarkdown(user.getDisplayName()), MessageUtil.sanitizeDiscordMarkdown(user.getAfkMessage())); } else { - event.reply(tlLiteral("userAFK", MessageUtil.sanitizeDiscordMarkdown(user.getDisplayName()))); + event.replyTl("userAFK", MessageUtil.sanitizeDiscordMarkdown(user.getDisplayName())); } } final String message = event.getMember().hasRoles(jda.getSettings().getPermittedFormattingRoles()) ? FormatUtil.replaceFormat(event.getStringArgument("message")) : FormatUtil.stripFormat(event.getStringArgument("message")); - event.reply(tlLiteral("msgFormat", tlLiteral("meSender"), MessageUtil.sanitizeDiscordMarkdown(user.getDisplayName()), MessageUtil.sanitizeDiscordMarkdown(message))); + event.replyTl("msgFormat", tlLiteral("meSender"), MessageUtil.sanitizeDiscordMarkdown(user.getDisplayName()), MessageUtil.sanitizeDiscordMarkdown(message)); user.sendTl("msgFormat", event.getMember().getTag(), AdventureUtil.parsed(user.playerTl("meRecipient")), message); // We use an atomic reference here so that java will garbage collect the recipient diff --git a/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/commands/discord/AccountInteractionCommand.java b/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/commands/discord/AccountInteractionCommand.java index c9758c964..753223582 100644 --- a/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/commands/discord/AccountInteractionCommand.java +++ b/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/commands/discord/AccountInteractionCommand.java @@ -53,14 +53,14 @@ public class AccountInteractionCommand implements InteractionCommand { final InteractionMember effectiveUser = userArg == null ? event.getMember() : userArg; final IUser user = accounts.getUser(effectiveUser.getId()); if (user == null) { - event.reply(tlLiteral(event.getMember().getId().equals(effectiveUser.getId()) ? "discordCommandAccountResponseNotLinked" : "discordCommandAccountResponseNotLinkedOther", effectiveUser.getAsMention())); + event.replyTl(event.getMember().getId().equals(effectiveUser.getId()) ? "discordCommandAccountResponseNotLinked" : "discordCommandAccountResponseNotLinkedOther", effectiveUser.getAsMention()); return; } if (event.getMember().getId().equals(effectiveUser.getId())) { - event.reply(tlLiteral("discordCommandAccountResponseLinked", user.getName())); + event.replyTl("discordCommandAccountResponseLinked", user.getName()); return; } - event.reply(tlLiteral("discordCommandAccountResponseLinkedOther", effectiveUser.getAsMention(), user.getName())); + event.replyTl("discordCommandAccountResponseLinkedOther", effectiveUser.getAsMention(), user.getName()); } } diff --git a/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/commands/discord/LinkInteractionCommand.java b/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/commands/discord/LinkInteractionCommand.java index befd71c4b..16ca47034 100644 --- a/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/commands/discord/LinkInteractionCommand.java +++ b/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/commands/discord/LinkInteractionCommand.java @@ -25,18 +25,18 @@ public class LinkInteractionCommand implements InteractionCommand { @Override public void onCommand(InteractionEvent event) { if (accounts.isLinked(event.getMember().getId())) { - event.reply(tlLiteral("discordCommandLinkHasAccount")); + event.replyTl("discordCommandLinkHasAccount"); return; } final UUID uuid = accounts.getPendingUUID(event.getStringArgument("code")); if (uuid == null) { - event.reply(tlLiteral("discordCommandLinkInvalidCode")); + event.replyTl("discordCommandLinkInvalidCode"); return; } accounts.registerAccount(uuid, event.getMember(), DiscordLinkStatusChangeEvent.Cause.SYNC_PLAYER); - event.reply(tlLiteral("discordCommandLinkLinked")); + event.replyTl("discordCommandLinkLinked"); } @Override diff --git a/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/commands/discord/UnlinkInteractionCommand.java b/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/commands/discord/UnlinkInteractionCommand.java index 46f344132..b2d26e904 100644 --- a/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/commands/discord/UnlinkInteractionCommand.java +++ b/EssentialsDiscordLink/src/main/java/net/essentialsx/discordlink/commands/discord/UnlinkInteractionCommand.java @@ -20,10 +20,10 @@ public class UnlinkInteractionCommand implements InteractionCommand { @Override public void onCommand(InteractionEvent event) { if (!accounts.removeAccount(event.getMember(), DiscordLinkStatusChangeEvent.Cause.UNSYNC_PLAYER)) { - event.reply(tlLiteral("discordCommandUnlinkInvalidCode")); + event.replyTl("discordCommandUnlinkInvalidCode"); return; } - event.reply(tlLiteral("discordCommandUnlinkUnlinked")); + event.replyTl("discordCommandUnlinkUnlinked"); } @Override