Skip to content

Commit 2e2336d

Browse files
committed
The audit button copies the style of the command and also fixed the imports and some other changes
1 parent 189463b commit 2e2336d

3 files changed

Lines changed: 39 additions & 23 deletions

File tree

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -460,8 +460,9 @@ public static List<List<ActionRecord>> groupActionsByPages(
460460
List<ActionRecord> moderationActions) {
461461
List<List<ActionRecord>> groupedModerationActions = new ArrayList<>();
462462

463-
for (int i = 0; i < moderationActions.size(); i++) {
464-
if (i % MAX_AUDIT_PAGE_LENGTH == 0) {
463+
for (int i = moderationActions.size() - 1; i >= 0; i--) {
464+
if (groupedModerationActions.isEmpty()
465+
|| groupedModerationActions.getLast().size() == MAX_AUDIT_PAGE_LENGTH) {
465466
groupedModerationActions.add(new ArrayList<>(MAX_AUDIT_PAGE_LENGTH));
466467
}
467468
groupedModerationActions.getLast().add(moderationActions.get(i));
@@ -474,7 +475,7 @@ public static List<List<ActionRecord>> groupActionsByPages(
474475
* Generates a structural text overview outlining the count total of each action type.
475476
*
476477
* @param moderationActions a collection of history records
477-
* @return a formatted markdown description summary
478+
* @return a formatted Markdown description summary
478479
*/
479480
public static String createSummaryMessageDescription(
480481
Collection<ActionRecord> moderationActions) {

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

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@
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.*;
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;
10+
import net.dv8tion.jda.api.entities.User;
711
import net.dv8tion.jda.api.entities.channel.concrete.TextChannel;
812
import net.dv8tion.jda.api.events.interaction.ModalInteractionEvent;
913
import net.dv8tion.jda.api.events.interaction.command.MessageContextInteractionEvent;
@@ -28,11 +32,13 @@
2832
import org.togetherjava.tjbot.features.utils.AmbientColors;
2933
import org.togetherjava.tjbot.features.utils.MessageUtils;
3034

31-
import java.awt.*;
3235
import java.time.Instant;
3336
import java.time.temporal.ChronoUnit;
34-
import java.util.*;
37+
import java.util.ArrayList;
38+
import java.util.Collections;
3539
import java.util.List;
40+
import java.util.Objects;
41+
import java.util.Optional;
3642
import java.util.concurrent.TimeUnit;
3743
import java.util.function.Predicate;
3844
import java.util.regex.Pattern;
@@ -186,8 +192,11 @@ private MessageCreateAction createModMessage(String reportReason,
186192
.setColor(AmbientColors.MODMAIL)
187193
.build();
188194

189-
String historyButtonId =
190-
generateComponentId(Lifespan.REGULAR, reportedMessage.authorId, "0");
195+
long reportedUserId = Long.parseLong(reportedMessage.authorId);
196+
int startingPage = getStartingPageForUser(guild.getIdLong(), reportedUserId);
197+
198+
String historyButtonId = generateComponentId(Lifespan.REGULAR, reportedMessage.authorId,
199+
String.valueOf(startingPage));
191200

192201
MessageCreateAction message =
193202
modMailAuditLog.sendMessageEmbeds(reportedMessageEmbed, reportReasonEmbed)
@@ -247,7 +256,11 @@ static ReportedMessage ofArgs(List<String> args) {
247256

248257
@Override
249258
public void onButtonClick(ButtonInteractionEvent event, List<String> args) {
250-
event.deferReply(true).queue();
259+
if (event.getMessage().isEphemeral()) {
260+
event.deferEdit().queue();
261+
} else {
262+
event.deferReply(true).queue();
263+
}
251264

252265
Guild guild =
253266
Objects.requireNonNull(event.getGuild(), "Guild cannot be null for this command.");
@@ -265,7 +278,7 @@ public void onButtonClick(ButtonInteractionEvent event, List<String> args) {
265278
.retrieveUserById(reportedUserId)
266279
.flatMap(user -> prepareAuditEmbedTasks(event, user, actions, pages, targetPage))
267280
.onErrorFlatMap(_ -> event.getHook()
268-
.sendMessage("Could not load audit data for this user.")
281+
.editOriginal("Could not load audit data for this user.")
269282
.map(_ -> null))
270283
.queue();
271284
}
@@ -277,7 +290,7 @@ private RestAction<List<MessageEmbed.Field>> prepareAuditEmbedTasks(
277290
EmbedBuilder auditEmbed =
278291
new EmbedBuilder().setTitle("Audit log of **%s**".formatted(user.getName()))
279292
.setAuthor(user.getName(), null, user.getEffectiveAvatarUrl())
280-
.setColor(Color.BLACK)
293+
.setColor(AmbientColors.MODMAIL)
281294
.setDescription(ModerationUtils.createSummaryMessageDescription(actions));
282295

283296
if (pages.isEmpty()) {
@@ -308,8 +321,7 @@ private void finalizeAndSendEmbed(ButtonInteractionEvent event, EmbedBuilder aud
308321
auditEmbed.clearFields();
309322
embedFields.forEach(auditEmbed::addField);
310323

311-
auditEmbed.setFooter(
312-
"Page %d/%d (Most recent first)".formatted(currentPageIndex + 1, totalPages));
324+
auditEmbed.setFooter("Page %d/%d".formatted(currentPageIndex + 1, totalPages));
313325

314326
String prevButtonId = generateComponentId(Lifespan.REGULAR, String.valueOf(reportedUserId),
315327
String.valueOf(currentPageIndex - 1));
@@ -327,4 +339,14 @@ private void finalizeAndSendEmbed(ButtonInteractionEvent event, EmbedBuilder aud
327339
.queue();
328340
}
329341

342+
private int getStartingPageForUser(long guildId, long userId) {
343+
List<ActionRecord> actions = new ArrayList<>(
344+
moderationActionsStore.getActionsByTargetAscending(guildId, userId));
345+
346+
Collections.reverse(actions);
347+
List<List<ActionRecord>> pages = ModerationUtils.groupActionsByPages(actions);
348+
349+
return Math.max(0, pages.size() - 1);
350+
}
351+
330352
}

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

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ private <R extends MessageRequest<R>> RestAction<R> auditUser(
104104
Supplier<R> messageBuilderSupplier, long guildId, long targetId, long callerId,
105105
int pageNumber, JDA jda) {
106106
List<ActionRecord> actions = actionsStore.getActionsByTargetAscending(guildId, targetId);
107-
List<List<ActionRecord>> groupedActions = groupActionsByPages(actions);
107+
List<List<ActionRecord>> groupedActions = ModerationUtils.groupActionsByPages(actions);
108108
int totalPages = groupedActions.size();
109109

110110
int pageNumberInLimits;
@@ -122,10 +122,6 @@ private <R extends MessageRequest<R>> RestAction<R> auditUser(
122122
pageNumberInLimits, totalPages, guildId, targetId, callerId));
123123
}
124124

125-
private static List<List<ActionRecord>> groupActionsByPages(List<ActionRecord> actions) {
126-
return ModerationUtils.groupActionsByPages(actions);
127-
}
128-
129125
private static EmbedBuilder createSummaryEmbed(User user, Collection<ActionRecord> actions) {
130126
String avatarOrDefaultUrl = user.getEffectiveAvatarUrl();
131127

@@ -144,7 +140,8 @@ private RestAction<EmbedBuilder> attachEmbedFields(EmbedBuilder auditEmbed,
144140

145141
List<RestAction<MessageEmbed.Field>> embedFieldTasks = new ArrayList<>();
146142
groupedActions.get(pageNumber - 1)
147-
.forEach(action -> embedFieldTasks.add(actionToField(action, jda)));
143+
.forEach(action -> embedFieldTasks
144+
.add(ModerationUtils.moderationActionToEmbedField(action, jda)));
148145

149146
return RestAction.allOf(embedFieldTasks).map(embedFields -> {
150147
embedFields.forEach(auditEmbed::addField);
@@ -154,10 +151,6 @@ private RestAction<EmbedBuilder> attachEmbedFields(EmbedBuilder auditEmbed,
154151
});
155152
}
156153

157-
private static RestAction<MessageEmbed.Field> actionToField(ActionRecord action, JDA jda) {
158-
return ModerationUtils.moderationActionToEmbedField(action, jda);
159-
}
160-
161154
private <R extends MessageRequest<R>> R attachPageTurnButtons(
162155
Supplier<R> messageBuilderSupplier, EmbedBuilder auditEmbed, int pageNumber,
163156
int totalPages, long guildId, long targetId, long callerId) {

0 commit comments

Comments
 (0)