diff --git a/application/src/main/java/org/togetherjava/tjbot/features/moderation/ModerationUtils.java b/application/src/main/java/org/togetherjava/tjbot/features/moderation/ModerationUtils.java index f8408a520f..cf18e40523 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/moderation/ModerationUtils.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/moderation/ModerationUtils.java @@ -287,7 +287,10 @@ static MessageEmbed createActionResponse(User author, ModerationAction action, U if (reason != null && !reason.isBlank()) { description += "\n\nReason: " + reason; } - return new EmbedBuilder().setAuthor(author.getAsTag(), null, author.getAvatarUrl()) + + String avatarOrDefaultUrl = author.getEffectiveAvatarUrl(); + + return new EmbedBuilder().setAuthor(author.getAsTag(), null, avatarOrDefaultUrl) .setDescription(description) .setTimestamp(Instant.now()) .setColor(AMBIENT_COLOR) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/moderation/ReportCommand.java b/application/src/main/java/org/togetherjava/tjbot/features/moderation/ReportCommand.java index 6f6dd4e7e6..4951ddbaee 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/moderation/ReportCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/moderation/ReportCommand.java @@ -90,7 +90,7 @@ public void onMessageContext(MessageContextInteractionEvent event) { String reportedMessageJumpUrl = event.getTarget().getJumpUrl(); String reportedMessageChannel = event.getTarget().getChannel().getId(); String reportedAuthorName = event.getTarget().getAuthor().getName(); - String reportedAuthorAvatarURL = event.getTarget().getAuthor().getAvatarUrl(); + String reportedAuthorAvatarUrl = event.getTarget().getAuthor().getEffectiveAvatarUrl(); String reportedAuthorID = event.getTarget().getAuthor().getId(); TextInput modalTextInput = TextInput @@ -102,7 +102,7 @@ public void onMessageContext(MessageContextInteractionEvent event) { String reportModalComponentID = generateComponentId(reportedMessage, reportedMessageID, reportedMessageJumpUrl, reportedMessageChannel, reportedMessageTimestamp, - reportedAuthorName, reportedAuthorAvatarURL, reportedAuthorID); + reportedAuthorName, reportedAuthorAvatarUrl, reportedAuthorID); Modal reportModal = Modal.create(reportModalComponentID, "Report this to a moderator") .addActionRow(modalTextInput) .build(); diff --git a/application/src/main/java/org/togetherjava/tjbot/features/moderation/TransferQuestionCommand.java b/application/src/main/java/org/togetherjava/tjbot/features/moderation/TransferQuestionCommand.java index 7b9ef1dfc4..9bfe2bcc6e 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/moderation/TransferQuestionCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/moderation/TransferQuestionCommand.java @@ -7,6 +7,7 @@ import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.entities.User; import net.dv8tion.jda.api.entities.channel.concrete.ForumChannel; +import net.dv8tion.jda.api.entities.channel.concrete.TextChannel; import net.dv8tion.jda.api.entities.channel.forums.ForumTag; import net.dv8tion.jda.api.entities.channel.forums.ForumTagSnowflake; import net.dv8tion.jda.api.entities.channel.unions.MessageChannelUnion; @@ -29,6 +30,7 @@ import java.awt.Color; import java.util.List; +import java.util.Objects; import java.util.Optional; import java.util.function.Predicate; import java.util.function.Supplier; @@ -79,7 +81,7 @@ public void onMessageContext(MessageContextInteractionEvent event) { String originalMessage = event.getTarget().getContentRaw(); String originalMessageId = event.getTarget().getId(); - String originalChannelId = event.getChannel().getId(); + String originalChannelId = event.getTarget().getChannel().getId(); String authorId = event.getTarget().getAuthor().getId(); String mostCommonTag = tags.get(0); @@ -192,11 +194,14 @@ private RestAction dmUser(MessageChannelUnion sourceChannel, ForumPost Your question has been automatically transferred to %s, please continue there, thank you 👍 """; - String messageForDm = messageTemplate.formatted("", " on" + " " + guild.getName(), - forumPost.message.getJumpUrl()); + // Prevents discord from creating a distracting auto-preview for the link + String jumpUrlSuffix = " "; + + String messageForDm = messageTemplate.formatted("", " on " + guild.getName(), + forumPost.message.getJumpUrl() + jumpUrlSuffix); String messageOnDmFailure = messageTemplate.formatted(" " + forumPost.author.getAsMention(), - "", forumPost.message.getJumpUrl()); + "", forumPost.message.getJumpUrl() + jumpUrlSuffix); return forumPost.author.openPrivateChannel() .flatMap(channel -> channel.sendMessage(messageForDm)) @@ -204,7 +209,10 @@ private RestAction dmUser(MessageChannelUnion sourceChannel, ForumPost } private RestAction deleteOriginalMessage(JDA jda, String channelId, String messageId) { - return jda.getTextChannelById(channelId).deleteMessageById(messageId); + TextChannel sourceChannel = Objects.requireNonNull(jda.getTextChannelById(channelId), + "Source channel could not be found for transfer-question feature"); + + return sourceChannel.deleteMessageById(messageId); } private ForumChannel getHelperForum(JDA jda) { @@ -223,9 +231,9 @@ private static ForumTag getTagOrDefault(List tagsFoundOnForum, } private MessageEmbed makeEmbedForPost(User originalUser, String originalMessage) { - return new EmbedBuilder() - .setAuthor(originalUser.getName(), originalUser.getAvatarUrl(), - originalUser.getAvatar().getUrl()) + String avatarOrDefaultUrl = originalUser.getEffectiveAvatarUrl(); + + return new EmbedBuilder().setAuthor(originalUser.getName(), null, avatarOrDefaultUrl) .setDescription(originalMessage) .setColor(EMBED_COLOR) .build(); diff --git a/application/src/main/java/org/togetherjava/tjbot/features/moderation/audit/AuditCommand.java b/application/src/main/java/org/togetherjava/tjbot/features/moderation/audit/AuditCommand.java index b337d51b71..da0517556f 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/moderation/audit/AuditCommand.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/moderation/audit/AuditCommand.java @@ -136,8 +136,10 @@ private List> groupActionsByPages(List actions) } private static EmbedBuilder createSummaryEmbed(User user, Collection actions) { + String avatarOrDefaultUrl = user.getEffectiveAvatarUrl(); + return new EmbedBuilder().setTitle("Audit log of **%s**".formatted(user.getAsTag())) - .setAuthor(user.getName(), null, user.getAvatarUrl()) + .setAuthor(user.getName(), null, avatarOrDefaultUrl) .setDescription(createSummaryMessageDescription(actions)) .setColor(ModerationUtils.AMBIENT_COLOR); } diff --git a/application/src/main/java/org/togetherjava/tjbot/features/moderation/audit/ModAuditLogRoutine.java b/application/src/main/java/org/togetherjava/tjbot/features/moderation/audit/ModAuditLogRoutine.java index d0b79a201a..9dffe573f4 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/moderation/audit/ModAuditLogRoutine.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/moderation/audit/ModAuditLogRoutine.java @@ -341,7 +341,9 @@ MessageEmbed toEmbed() { description += "\n\nReason: " + reason; } - return new EmbedBuilder().setAuthor(author.getAsTag(), null, author.getAvatarUrl()) + String avatarOrDefaultUrl = author.getEffectiveAvatarUrl(); + + return new EmbedBuilder().setAuthor(author.getAsTag(), null, avatarOrDefaultUrl) .setDescription(description) .setTimestamp(timestamp) .setColor(AMBIENT_COLOR) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/moderation/scam/ScamBlocker.java b/application/src/main/java/org/togetherjava/tjbot/features/moderation/scam/ScamBlocker.java index 7f5b4d816c..c09a53ae27 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/moderation/scam/ScamBlocker.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/moderation/scam/ScamBlocker.java @@ -232,10 +232,12 @@ private void reportScamMessage(MessageReceivedEvent event, String reportTitle, } User author = event.getAuthor(); + String avatarOrDefaultUrl = author.getEffectiveAvatarUrl(); + MessageEmbed embed = new EmbedBuilder().setDescription(event.getMessage().getContentStripped()) .setTitle(reportTitle) - .setAuthor(author.getAsTag(), null, author.getAvatarUrl()) + .setAuthor(author.getAsTag(), null, avatarOrDefaultUrl) .setTimestamp(event.getMessage().getTimeCreated()) .setColor(AMBIENT_COLOR) .setFooter(author.getId())