Skip to content

Commit 6dcd439

Browse files
committed
alt format escaped player name links
1 parent c8f11fa commit 6dcd439

File tree

3 files changed

+23
-9
lines changed

3 files changed

+23
-9
lines changed

src/main/java/vc/api/model/ProfileData.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package vc.api.model;
22

3+
import vc.util.DiscordMarkdownEscape;
4+
35
import java.util.UUID;
46

57
public interface ProfileData {
@@ -17,4 +19,16 @@ default String getAvatarURL() {
1719
default String getHeadURL() {
1820
return String.format("https://crafthead.net/helm/%s/64", uuid().toString().replace("-", ""));
1921
}
22+
23+
default String toDiscordFieldValue() {
24+
var nameEscaped = DiscordMarkdownEscape.escape(name());
25+
var fmt = "[%s](%s)";
26+
if (!nameEscaped.equals(name())) {
27+
// discord markdown does not support escaping inside links
28+
// well, it does, but the backslashes are always visible so its arguably worse
29+
// https://github.com/discord/discord-api-docs/issues/6185
30+
fmt = "%s ([link](%s))";
31+
}
32+
return String.format(fmt, nameEscaped, getNameMCLink(uuid()));
33+
}
2034
}

src/main/java/vc/commands/SlashCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ default Mono<Message> error(DeferrableInteractionEvent event, final String messa
3030

3131
default EmbedCreateSpec.Builder populateIdentity(final EmbedCreateSpec.Builder builder, ProfileData identity) {
3232
return builder
33-
.addField("Player", "[" + identity.name() + "](" + identity.getNameMCLink(identity.uuid()) + ")", true)
33+
.addField("Player", identity.toDiscordFieldValue(), true)
3434
.addField("\u200B", "\u200B", true)
3535
.addField("\u200B", "\u200B", true);
3636
}

src/main/java/vc/live/watch/WatchManager.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ public EmbedCreateSpec joinsWatchEmbed(
445445
var profile = new ProfileDataImpl(connection.playerName(), connection.playerUuid());
446446
EmbedCreateSpec embed = EmbedCreateSpec.builder()
447447
.title("Watched Player Online")
448-
.addField("Player", "[" + profile.name() + "](" + profile.getNameMCLink(profile.uuid()) + ")", true)
448+
.addField("Player", profile.toDiscordFieldValue(), true)
449449
.addField("\u200B", "\u200B", true)
450450
.addField("\u200B", "\u200B", true)
451451
.thumbnail(profile.getAvatarURL())
@@ -461,7 +461,7 @@ public EmbedCreateSpec leavesWatchEmbed(
461461
var profile = new ProfileDataImpl(connection.playerName(), connection.playerUuid());
462462
EmbedCreateSpec embed = EmbedCreateSpec.builder()
463463
.title("Watched Player Offline")
464-
.addField("Player", "[" + profile.name() + "](" + profile.getNameMCLink(profile.uuid()) + ")", true)
464+
.addField("Player", profile.toDiscordFieldValue(), true)
465465
.addField("\u200B", "\u200B", true)
466466
.addField("\u200B", "\u200B", true)
467467
.thumbnail(profile.getAvatarURL())
@@ -477,7 +477,7 @@ public EmbedCreateSpec chatsWatchEmbed(
477477
var profile = new ProfileDataImpl(chat.playerName(), chat.playerUuid());
478478
EmbedCreateSpec embed = EmbedCreateSpec.builder()
479479
.title("Watched Player Chat")
480-
.addField("Player", "[" + profile.name() + "](" + profile.getNameMCLink(profile.uuid()) + ")", true)
480+
.addField("Player", profile.toDiscordFieldValue(), true)
481481
.addField("\u200B", "\u200B", true)
482482
.addField("\u200B", "\u200B", true)
483483
.addField("Message", escape(chat.chat()), false)
@@ -495,7 +495,7 @@ public EmbedCreateSpec chatsKeywordWatchEmbed(
495495
var profile = new ProfileDataImpl(chat.playerName(), chat.playerUuid());
496496
EmbedCreateSpec embed = EmbedCreateSpec.builder()
497497
.title("Watched Keyword in Chat")
498-
.addField("Player", "[" + profile.name() + "](" + profile.getNameMCLink(profile.uuid()) + ")", true)
498+
.addField("Player", profile.toDiscordFieldValue(), true)
499499
.addField("\u200B", "\u200B", true)
500500
.addField("\u200B", "\u200B", true)
501501
.addField("Message", escape(chat.chat()), false)
@@ -513,13 +513,13 @@ public EmbedCreateSpec deathsWatchEmbed(
513513
var profile = new ProfileDataImpl(death.victimPlayerName(), death.victimPlayerUuid());
514514
var embed = EmbedCreateSpec.builder()
515515
.title("Watched Player Death")
516-
.addField("Victim", "[" + profile.name() + "](" + profile.getNameMCLink(profile.uuid()) + ")", true)
516+
.addField("Victim", profile.toDiscordFieldValue(), true)
517517
.addField("\u200B", "\u200B", true)
518518
.addField("\u200B", "\u200B", true);
519519
if (death.killerPlayerUuid() != null) {
520520
var killerProfile = new ProfileDataImpl(death.killerPlayerName(), death.killerPlayerUuid());
521521
embed
522-
.addField("Killer", "[" + killerProfile.name() + "](" + killerProfile.getNameMCLink(killerProfile.uuid()) + ")", true)
522+
.addField("Killer", killerProfile.toDiscordFieldValue(), true)
523523
.addField("\u200B", "\u200B", true)
524524
.addField("\u200B", "\u200B", true);
525525
}
@@ -539,10 +539,10 @@ public EmbedCreateSpec killsWatchEmbed(
539539
var victimProfile = new ProfileDataImpl(death.victimPlayerName(), death.victimPlayerUuid());
540540
return EmbedCreateSpec.builder()
541541
.title("Watched Player Kill")
542-
.addField("Killer", "[" + killerProfile.name() + "](" + killerProfile.getNameMCLink(killerProfile.uuid()) + ")", true)
542+
.addField("Killer", killerProfile.toDiscordFieldValue(), true)
543543
.addField("\u200B", "\u200B", true)
544544
.addField("\u200B", "\u200B", true)
545-
.addField("Victim", "[" + victimProfile.name() + "](" + victimProfile.getNameMCLink(victimProfile.uuid()) + ")", true)
545+
.addField("Victim", victimProfile.toDiscordFieldValue(), true)
546546
.addField("\u200B", "\u200B", true)
547547
.addField("\u200B", "\u200B", true)
548548
.addField("Death Message", escape(death.deathMessage()).replace(escape(killerProfile.name()), "**" + escape(killerProfile.name()) + "**"), false)

0 commit comments

Comments
 (0)