|
18 | 18 | import net.javadiscord.javabot.systems.qotw.submissions.model.QOTWSubmission; |
19 | 19 | import net.javadiscord.javabot.util.GuildUtils; |
20 | 20 |
|
| 21 | +import javax.annotation.Nullable; |
21 | 22 | import java.sql.Connection; |
22 | 23 | import java.sql.SQLException; |
23 | 24 | import java.time.Instant; |
@@ -168,12 +169,20 @@ protected void declineSelectSubmission(SelectMenuInteractionEvent event, ThreadC |
168 | 169 | protected void deleteSubmission(ButtonInteractionEvent event, ThreadChannel thread) { |
169 | 170 | thread.delete().queueAfter(10, TimeUnit.SECONDS); |
170 | 171 | log.info("{} deleted submission thread {}", event.getUser().getAsTag(), thread.getName()); |
171 | | - GuildUtils.getLogChannel(event.getGuild()).sendMessageFormat("%s deleted submission thread `%s`", event.getUser().getAsTag(), thread.getName()).queue(); |
| 172 | + this.sendLogMessage(event.getGuild(), thread, event.getUser(), SubmissionStatus.DELETED, null); |
172 | 173 | this.disableControls(String.format("Deleted by %s", event.getUser().getAsTag()), event.getMessage()); |
173 | 174 | DbHelper.doDaoAction(QOTWSubmissionRepository::new, dao -> dao.removeSubmission(thread.getIdLong())); |
174 | 175 | event.getHook().sendMessage("This Submission will be deleted in 10 seconds.").setEphemeral(true).queue(); |
175 | 176 | } |
176 | 177 |
|
| 178 | + private void sendLogMessage(Guild guild, ThreadChannel thread, User reviewedBy, SubmissionStatus status, @Nullable String reason) { |
| 179 | + DbHelper.doDaoAction(QOTWSubmissionRepository::new, dao -> { |
| 180 | + Optional<QOTWSubmission> submissionOptional = dao.getSubmissionByThreadId(thread.getIdLong()); |
| 181 | + submissionOptional.ifPresent(submission -> guild.getJDA().retrieveUserById(submission.getAuthorId()).queue(author -> |
| 182 | + GuildUtils.getLogChannel(guild).sendMessageEmbeds(this.buildLogEmbed(thread, author, reviewedBy, status, reason)).queue())); |
| 183 | + }); |
| 184 | + } |
| 185 | + |
177 | 186 | protected void declineButtonSubmission(ButtonInteractionEvent event) { |
178 | 187 | event.getMessage().editMessageComponents(ActionRow.of(this.buildDeclineMenu())).queue(); |
179 | 188 | } |
@@ -223,4 +232,18 @@ private MessageEmbed buildSubmissionControlEmbed() { |
223 | 232 | .setTimestamp(Instant.now()) |
224 | 233 | .build(); |
225 | 234 | } |
| 235 | + |
| 236 | + private MessageEmbed buildLogEmbed(ThreadChannel thread, User threadOwner, User reviewedBy, SubmissionStatus status, @Nullable String reason) { |
| 237 | + EmbedBuilder builder = new EmbedBuilder() |
| 238 | + .setAuthor(reviewedBy.getAsTag(), null, reviewedBy.getEffectiveAvatarUrl()) |
| 239 | + .setTitle(String.format("%s %s %s's QOTW Submission", reviewedBy.getAsTag(), status.name().toLowerCase(), threadOwner.getAsTag())) |
| 240 | + .setTimestamp(Instant.now()); |
| 241 | + if (thread != null && status != SubmissionStatus.DELETED) { |
| 242 | + builder.addField("Thread", thread.getAsMention(), true); |
| 243 | + } |
| 244 | + if (reason != null) { |
| 245 | + builder.addField("Reason(s)", reason, true); |
| 246 | + } |
| 247 | + return builder.build(); |
| 248 | + } |
226 | 249 | } |
0 commit comments