Fix places where Discord formatting wasn't sanitized (#4945)

Fixes #4891
This commit is contained in:
Josh Roy 2022-06-15 11:35:12 -04:00 committed by GitHub
parent 9147d1036d
commit 0931b21f6d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 7 deletions

View File

@ -6,6 +6,7 @@ import net.essentialsx.api.v2.services.discord.InteractionEvent;
import net.essentialsx.discord.JDADiscordService;
import net.essentialsx.discord.interactions.InteractionCommandImpl;
import net.essentialsx.discord.util.DiscordCommandSender;
import net.essentialsx.discord.util.MessageUtil;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandException;
@ -18,12 +19,12 @@ public class ExecuteCommand extends InteractionCommandImpl {
}
@Override
public void onCommand(InteractionEvent event) {
public void onCommand(final InteractionEvent event) {
final String command = event.getStringArgument("command");
event.reply(tl("discordCommandExecuteReply", command));
Bukkit.getScheduler().runTask(jda.getPlugin(), () -> {
try {
Bukkit.dispatchCommand(new DiscordCommandSender(jda, Bukkit.getConsoleSender(), event::reply).getSender(), command);
Bukkit.dispatchCommand(new DiscordCommandSender(jda, Bukkit.getConsoleSender(), message -> event.reply(MessageUtil.sanitizeDiscordMarkdown(message))).getSender(), command);
} catch (CommandException e) {
// Check if this is a vanilla command, in which case we have to use a vanilla command sender :(
if (e.getMessage().contains("a vanilla command listener") || (e.getCause() != null && e.getCause().getMessage().contains("a vanilla command listener"))) {

View File

@ -8,6 +8,7 @@ import net.essentialsx.api.v2.services.discord.InteractionCommandArgumentType;
import net.essentialsx.api.v2.services.discord.InteractionEvent;
import net.essentialsx.discord.JDADiscordService;
import net.essentialsx.discord.interactions.InteractionCommandImpl;
import net.essentialsx.discord.util.MessageUtil;
import java.util.ArrayList;
import java.util.List;
@ -46,6 +47,6 @@ public class ListCommand extends InteractionCommandImpl {
for (final String str : output) {
stringBuilder.append(str).append("\n");
}
event.reply(stringBuilder.substring(0, stringBuilder.length() - 2));
event.reply(MessageUtil.sanitizeDiscordMarkdown(stringBuilder.substring(0, stringBuilder.length() - 2)));
}
}

View File

@ -9,6 +9,7 @@ import net.essentialsx.api.v2.services.discord.InteractionEvent;
import net.essentialsx.discord.JDADiscordService;
import net.essentialsx.discord.interactions.InteractionCommandImpl;
import net.essentialsx.discord.util.DiscordMessageRecipient;
import net.essentialsx.discord.util.MessageUtil;
import org.bukkit.Bukkit;
import java.util.concurrent.atomic.AtomicReference;
@ -34,21 +35,21 @@ public class MessageCommand extends InteractionCommandImpl {
}
if (!getHidden && user.isIgnoreMsg()) {
event.reply(tl("msgIgnore", user.getDisplayName()));
event.reply(tl("msgIgnore", MessageUtil.sanitizeDiscordMarkdown(user.getDisplayName())));
return;
}
if (user.isAfk()) {
if (user.getAfkMessage() != null) {
event.reply(tl("userAFKWithMessage", user.getDisplayName(), user.getAfkMessage()));
event.reply(tl("userAFKWithMessage", MessageUtil.sanitizeDiscordMarkdown(user.getDisplayName()), MessageUtil.sanitizeDiscordMarkdown(user.getAfkMessage())));
} else {
event.reply(tl("userAFK", user.getDisplayName()));
event.reply(tl("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(tl("msgFormat", tl("meSender"), user.getDisplayName(), message));
event.reply(tl("msgFormat", tl("meSender"), MessageUtil.sanitizeDiscordMarkdown(user.getDisplayName()), MessageUtil.sanitizeDiscordMarkdown(message)));
user.sendMessage(tl("msgFormat", event.getMember().getTag(), tl("meRecipient"), message));
// We use an atomic reference here so that java will garbage collect the recipient