Skip to content

Commit 91137ba

Browse files
authored
Fix link for report's 'go to message' button (#709)
1 parent 0587d3e commit 91137ba

File tree

1 file changed

+16
-24
lines changed

1 file changed

+16
-24
lines changed

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

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,14 @@
33
import com.github.benmanes.caffeine.cache.Cache;
44
import com.github.benmanes.caffeine.cache.Caffeine;
55
import net.dv8tion.jda.api.EmbedBuilder;
6-
import net.dv8tion.jda.api.entities.Guild;
7-
import net.dv8tion.jda.api.entities.Message;
8-
import net.dv8tion.jda.api.entities.MessageEmbed;
9-
import net.dv8tion.jda.api.entities.Role;
6+
import net.dv8tion.jda.api.entities.*;
107
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
118
import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent;
129
import net.dv8tion.jda.api.events.interaction.command.MessageContextInteractionEvent;
1310
import net.dv8tion.jda.api.interactions.InteractionHook;
1411
import net.dv8tion.jda.api.interactions.commands.build.Commands;
1512
import net.dv8tion.jda.api.interactions.components.Modal;
13+
import net.dv8tion.jda.api.interactions.components.buttons.Button;
1614
import net.dv8tion.jda.api.interactions.components.text.TextInput;
1715
import net.dv8tion.jda.api.interactions.components.text.TextInputStyle;
1816
import net.dv8tion.jda.api.requests.restaction.MessageCreateAction;
@@ -23,7 +21,6 @@
2321
import org.togetherjava.tjbot.commands.BotCommandAdapter;
2422
import org.togetherjava.tjbot.commands.CommandVisibility;
2523
import org.togetherjava.tjbot.commands.MessageContextCommand;
26-
import org.togetherjava.tjbot.commands.utils.DiscordClientAction;
2724
import org.togetherjava.tjbot.commands.utils.MessageUtils;
2825
import org.togetherjava.tjbot.config.Config;
2926

@@ -37,14 +34,12 @@
3734
import java.util.function.Predicate;
3835
import java.util.regex.Pattern;
3936

40-
4137
/**
4238
* Implements the /report command, which allows users to report a selected offensive message from
4339
* another user. The message is then forwarded to moderators in a dedicated channel given by
4440
* {@link Config#getModMailChannelPattern()}.
4541
*/
4642
public final class ReportCommand extends BotCommandAdapter implements MessageContextCommand {
47-
4843
private static final Logger logger = LoggerFactory.getLogger(ReportCommand.class);
4944
private static final String COMMAND_NAME = "report";
5045
private static final String REPORT_REASON_INPUT_ID = "reportReason";
@@ -92,6 +87,7 @@ public void onMessageContext(MessageContextInteractionEvent event) {
9287

9388
String reportedMessage = event.getTarget().getContentRaw();
9489
String reportedMessageID = event.getTarget().getId();
90+
String reportedMessageJumpUrl = event.getTarget().getJumpUrl();
9591
String reportedMessageChannel = event.getTarget().getChannel().getId();
9692
String reportedAuthorName = event.getTarget().getAuthor().getName();
9793
String reportedAuthorAvatarURL = event.getTarget().getAuthor().getAvatarUrl();
@@ -105,8 +101,8 @@ public void onMessageContext(MessageContextInteractionEvent event) {
105101
.build();
106102

107103
String reportModalComponentID = generateComponentId(reportedMessage, reportedMessageID,
108-
reportedMessageChannel, reportedMessageTimestamp, reportedAuthorName,
109-
reportedAuthorAvatarURL, reportedAuthorID);
104+
reportedMessageJumpUrl, reportedMessageChannel, reportedMessageTimestamp,
105+
reportedAuthorName, reportedAuthorAvatarURL, reportedAuthorID);
110106
Modal reportModal = Modal.create(reportModalComponentID, "Report this to a moderator")
111107
.addActionRow(modalTextInput)
112108
.build();
@@ -169,7 +165,6 @@ private Optional<TextChannel> handleRequireModMailChannel(ModalInteractionEvent
169165

170166
private MessageCreateAction createModMessage(String reportReason,
171167
ReportedMessage reportedMessage, Guild guild, TextChannel modMailAuditLog) {
172-
173168
MessageEmbed reportedMessageEmbed = new EmbedBuilder().setTitle("Report")
174169
.setDescription(MessageUtils.abbreviate(reportedMessage.content,
175170
MessageEmbed.DESCRIPTION_MAX_LENGTH))
@@ -185,9 +180,7 @@ private MessageCreateAction createModMessage(String reportReason,
185180

186181
MessageCreateAction message =
187182
modMailAuditLog.sendMessageEmbeds(reportedMessageEmbed, reportReasonEmbed)
188-
.addActionRow(DiscordClientAction.Channels.GUILD_CHANNEL_MESSAGE.asLinkButton(
189-
"Go to Message", guild.getId(), reportedMessage.channelID,
190-
reportedMessage.id));
183+
.addActionRow(Button.link(reportedMessage.jumpUrl, "Go to message"));
191184

192185
Optional<Role> moderatorRole = guild.getRoles()
193186
.stream()
@@ -210,12 +203,12 @@ private void sendModMessage(ModalInteractionEvent event, List<String> args,
210203
ReportedMessage reportedMessage = ReportedMessage.ofArgs(args);
211204

212205
createModMessage(reportReason, reportedMessage, guild, modMailAuditLog).mapToResult()
213-
.map(this::createUserReply)
206+
.map(ReportCommand::createUserReply)
214207
.flatMap(hook::editOriginal)
215208
.queue();
216209
}
217210

218-
private String createUserReply(Result<Message> result) {
211+
private static String createUserReply(Result<Message> result) {
219212
if (result.isFailure()) {
220213
logger.warn("Unable to forward a message report to modmail channel.",
221214
result.getFailure());
@@ -224,19 +217,18 @@ private String createUserReply(Result<Message> result) {
224217
return "Thank you for reporting this message. A moderator will take care of the matter as soon as possible.";
225218
}
226219

227-
private record ReportedMessage(String content, String id, String channelID, Instant timestamp,
228-
String authorName, String authorAvatarUrl) {
220+
private record ReportedMessage(String content, String id, String jumpUrl, String channelID,
221+
Instant timestamp, String authorName, String authorAvatarUrl) {
229222
static ReportedMessage ofArgs(List<String> args) {
230223
String content = args.get(0);
231224
String id = args.get(1);
232-
String channelID = args.get(2);
233-
Instant timestamp = Instant.parse(args.get(3));
234-
String authorName = args.get(4);
235-
String authorAvatarUrl = args.get(5);
236-
return new ReportedMessage(content, id, channelID, timestamp, authorName,
225+
String jumpUrl = args.get(2);
226+
String channelID = args.get(3);
227+
Instant timestamp = Instant.parse(args.get(4));
228+
String authorName = args.get(5);
229+
String authorAvatarUrl = args.get(6);
230+
return new ReportedMessage(content, id, jumpUrl, channelID, timestamp, authorName,
237231
authorAvatarUrl);
238232
}
239-
240233
}
241-
242234
}

0 commit comments

Comments
 (0)