Skip to content

Commit 873faef

Browse files
authored
bug-fix transfer feature (#943)
* NPE was thrown if user had no avatar * default avatar if user do not have one * remove unnecessary embed from warning message to user * minor fixes * refactor avatarUrl to be non-null * revert back to drop changes in other files * bug fixes * embed fix for user warnings * introduce variable for url suffix, prevents link preview * minor fix
1 parent c461848 commit 873faef

File tree

6 files changed

+31
-14
lines changed

6 files changed

+31
-14
lines changed

application/src/main/java/org/togetherjava/tjbot/features/moderation/ModerationUtils.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,10 @@ static MessageEmbed createActionResponse(User author, ModerationAction action, U
287287
if (reason != null && !reason.isBlank()) {
288288
description += "\n\nReason: " + reason;
289289
}
290-
return new EmbedBuilder().setAuthor(author.getAsTag(), null, author.getAvatarUrl())
290+
291+
String avatarOrDefaultUrl = author.getEffectiveAvatarUrl();
292+
293+
return new EmbedBuilder().setAuthor(author.getAsTag(), null, avatarOrDefaultUrl)
291294
.setDescription(description)
292295
.setTimestamp(Instant.now())
293296
.setColor(AMBIENT_COLOR)

application/src/main/java/org/togetherjava/tjbot/features/moderation/ReportCommand.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public void onMessageContext(MessageContextInteractionEvent event) {
9090
String reportedMessageJumpUrl = event.getTarget().getJumpUrl();
9191
String reportedMessageChannel = event.getTarget().getChannel().getId();
9292
String reportedAuthorName = event.getTarget().getAuthor().getName();
93-
String reportedAuthorAvatarURL = event.getTarget().getAuthor().getAvatarUrl();
93+
String reportedAuthorAvatarUrl = event.getTarget().getAuthor().getEffectiveAvatarUrl();
9494
String reportedAuthorID = event.getTarget().getAuthor().getId();
9595

9696
TextInput modalTextInput = TextInput
@@ -102,7 +102,7 @@ public void onMessageContext(MessageContextInteractionEvent event) {
102102

103103
String reportModalComponentID = generateComponentId(reportedMessage, reportedMessageID,
104104
reportedMessageJumpUrl, reportedMessageChannel, reportedMessageTimestamp,
105-
reportedAuthorName, reportedAuthorAvatarURL, reportedAuthorID);
105+
reportedAuthorName, reportedAuthorAvatarUrl, reportedAuthorID);
106106
Modal reportModal = Modal.create(reportModalComponentID, "Report this to a moderator")
107107
.addActionRow(modalTextInput)
108108
.build();

application/src/main/java/org/togetherjava/tjbot/features/moderation/TransferQuestionCommand.java

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import net.dv8tion.jda.api.entities.MessageEmbed;
88
import net.dv8tion.jda.api.entities.User;
99
import net.dv8tion.jda.api.entities.channel.concrete.ForumChannel;
10+
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
1011
import net.dv8tion.jda.api.entities.channel.forums.ForumTag;
1112
import net.dv8tion.jda.api.entities.channel.forums.ForumTagSnowflake;
1213
import net.dv8tion.jda.api.entities.channel.unions.MessageChannelUnion;
@@ -29,6 +30,7 @@
2930

3031
import java.awt.Color;
3132
import java.util.List;
33+
import java.util.Objects;
3234
import java.util.Optional;
3335
import java.util.function.Predicate;
3436
import java.util.function.Supplier;
@@ -79,7 +81,7 @@ public void onMessageContext(MessageContextInteractionEvent event) {
7981

8082
String originalMessage = event.getTarget().getContentRaw();
8183
String originalMessageId = event.getTarget().getId();
82-
String originalChannelId = event.getChannel().getId();
84+
String originalChannelId = event.getTarget().getChannel().getId();
8385
String authorId = event.getTarget().getAuthor().getId();
8486
String mostCommonTag = tags.get(0);
8587

@@ -192,19 +194,25 @@ private RestAction<Message> dmUser(MessageChannelUnion sourceChannel, ForumPost
192194
Your question has been automatically transferred to %s, please continue there, thank you 👍
193195
""";
194196

195-
String messageForDm = messageTemplate.formatted("", " on" + " " + guild.getName(),
196-
forumPost.message.getJumpUrl());
197+
// Prevents discord from creating a distracting auto-preview for the link
198+
String jumpUrlSuffix = " ";
199+
200+
String messageForDm = messageTemplate.formatted("", " on " + guild.getName(),
201+
forumPost.message.getJumpUrl() + jumpUrlSuffix);
197202

198203
String messageOnDmFailure = messageTemplate.formatted(" " + forumPost.author.getAsMention(),
199-
"", forumPost.message.getJumpUrl());
204+
"", forumPost.message.getJumpUrl() + jumpUrlSuffix);
200205

201206
return forumPost.author.openPrivateChannel()
202207
.flatMap(channel -> channel.sendMessage(messageForDm))
203208
.onErrorFlatMap(error -> sourceChannel.sendMessage(messageOnDmFailure));
204209
}
205210

206211
private RestAction<Void> deleteOriginalMessage(JDA jda, String channelId, String messageId) {
207-
return jda.getTextChannelById(channelId).deleteMessageById(messageId);
212+
TextChannel sourceChannel = Objects.requireNonNull(jda.getTextChannelById(channelId),
213+
"Source channel could not be found for transfer-question feature");
214+
215+
return sourceChannel.deleteMessageById(messageId);
208216
}
209217

210218
private ForumChannel getHelperForum(JDA jda) {
@@ -223,9 +231,9 @@ private static ForumTag getTagOrDefault(List<ForumTag> tagsFoundOnForum,
223231
}
224232

225233
private MessageEmbed makeEmbedForPost(User originalUser, String originalMessage) {
226-
return new EmbedBuilder()
227-
.setAuthor(originalUser.getName(), originalUser.getAvatarUrl(),
228-
originalUser.getAvatar().getUrl())
234+
String avatarOrDefaultUrl = originalUser.getEffectiveAvatarUrl();
235+
236+
return new EmbedBuilder().setAuthor(originalUser.getName(), null, avatarOrDefaultUrl)
229237
.setDescription(originalMessage)
230238
.setColor(EMBED_COLOR)
231239
.build();

application/src/main/java/org/togetherjava/tjbot/features/moderation/audit/AuditCommand.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,10 @@ private List<List<ActionRecord>> groupActionsByPages(List<ActionRecord> actions)
136136
}
137137

138138
private static EmbedBuilder createSummaryEmbed(User user, Collection<ActionRecord> actions) {
139+
String avatarOrDefaultUrl = user.getEffectiveAvatarUrl();
140+
139141
return new EmbedBuilder().setTitle("Audit log of **%s**".formatted(user.getAsTag()))
140-
.setAuthor(user.getName(), null, user.getAvatarUrl())
142+
.setAuthor(user.getName(), null, avatarOrDefaultUrl)
141143
.setDescription(createSummaryMessageDescription(actions))
142144
.setColor(ModerationUtils.AMBIENT_COLOR);
143145
}

application/src/main/java/org/togetherjava/tjbot/features/moderation/audit/ModAuditLogRoutine.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,9 @@ MessageEmbed toEmbed() {
341341
description += "\n\nReason: " + reason;
342342
}
343343

344-
return new EmbedBuilder().setAuthor(author.getAsTag(), null, author.getAvatarUrl())
344+
String avatarOrDefaultUrl = author.getEffectiveAvatarUrl();
345+
346+
return new EmbedBuilder().setAuthor(author.getAsTag(), null, avatarOrDefaultUrl)
345347
.setDescription(description)
346348
.setTimestamp(timestamp)
347349
.setColor(AMBIENT_COLOR)

application/src/main/java/org/togetherjava/tjbot/features/moderation/scam/ScamBlocker.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,10 +232,12 @@ private void reportScamMessage(MessageReceivedEvent event, String reportTitle,
232232
}
233233

234234
User author = event.getAuthor();
235+
String avatarOrDefaultUrl = author.getEffectiveAvatarUrl();
236+
235237
MessageEmbed embed =
236238
new EmbedBuilder().setDescription(event.getMessage().getContentStripped())
237239
.setTitle(reportTitle)
238-
.setAuthor(author.getAsTag(), null, author.getAvatarUrl())
240+
.setAuthor(author.getAsTag(), null, avatarOrDefaultUrl)
239241
.setTimestamp(event.getMessage().getTimeCreated())
240242
.setColor(AMBIENT_COLOR)
241243
.setFooter(author.getId())

0 commit comments

Comments
 (0)