Skip to content

Commit ca34cbc

Browse files
committed
use webhook for sending QOTW answer messages
1 parent 2525ffd commit ca34cbc

File tree

3 files changed

+21
-18
lines changed

3 files changed

+21
-18
lines changed

src/main/java/net/javadiscord/javabot/systems/qotw/commands/view/QOTWViewAnswerSubcommand.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.dynxsty.dih4jda.interactions.commands.SlashCommand;
88

99
import net.dv8tion.jda.api.EmbedBuilder;
10+
import net.dv8tion.jda.api.entities.ChannelType;
1011
import net.dv8tion.jda.api.entities.Message;
1112
import net.dv8tion.jda.api.entities.MessageEmbed;
1213
import net.dv8tion.jda.api.events.interaction.command.SlashCommandInteractionEvent;
@@ -51,6 +52,10 @@ public void execute(@NotNull SlashCommandInteractionEvent event) {
5152
Responses.error(event, "The answerer option is missing.").queue();
5253
return;
5354
}
55+
if (event.getChannelType() != ChannelType.TEXT) {
56+
Responses.error(event, "This command can only be used in text channels.").queue();
57+
return;
58+
}
5459
event.deferReply(true).queue();
5560
DbActions.doAsyncDaoAction(QOTWSubmissionRepository::new, repo -> {
5661
QOTWSubmission submission = repo.getSubmissionByQuestionNumberAndAuthorID(event.getGuild().getIdLong(), questionOption.getAsInt(), answerOwnerOption.getAsUser().getIdLong());

src/main/java/net/javadiscord/javabot/util/MessageActionUtils.java

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
11
package net.javadiscord.javabot.util;
22

3-
import net.dv8tion.jda.api.entities.GuildMessageChannel;
4-
import net.dv8tion.jda.api.entities.Message;
5-
import net.dv8tion.jda.api.entities.MessageEmbed;
6-
import net.dv8tion.jda.api.entities.ThreadChannel;
7-
import net.dv8tion.jda.api.interactions.components.ActionRow;
8-
import net.dv8tion.jda.api.interactions.components.ItemComponent;
9-
import net.dv8tion.jda.api.requests.restaction.MessageAction;
10-
113
import java.util.ArrayList;
12-
import java.util.EnumSet;
134
import java.util.List;
145
import java.util.concurrent.CompletableFuture;
156
import java.util.function.Consumer;
167

178
import org.jetbrains.annotations.NotNull;
189

10+
import net.dv8tion.jda.api.entities.Message;
11+
import net.dv8tion.jda.api.entities.MessageEmbed;
12+
import net.dv8tion.jda.api.entities.StandardGuildMessageChannel;
13+
import net.dv8tion.jda.api.entities.ThreadChannel;
14+
import net.dv8tion.jda.api.interactions.components.ActionRow;
15+
import net.dv8tion.jda.api.interactions.components.ItemComponent;
16+
import net.dv8tion.jda.api.requests.restaction.MessageAction;
17+
1918
/**
2019
* Utility class for message actions.
2120
*/
@@ -85,15 +84,14 @@ public static CompletableFuture<Message> addAttachmentsAndSend(Message message,
8584
* @param messages The messages to copy.
8685
* @param onFinish A callback to execute when copying is done.
8786
*/
88-
public static void copyMessagesToNewThread(GuildMessageChannel targetChannel, @NotNull MessageEmbed infoEmbed, String newThreadName, List<Message> messages, Consumer<ThreadChannel> onFinish) {
87+
public static void copyMessagesToNewThread(StandardGuildMessageChannel targetChannel, @NotNull MessageEmbed infoEmbed, String newThreadName, List<Message> messages, Consumer<ThreadChannel> onFinish) {
8988
targetChannel.sendMessageEmbeds(infoEmbed).queue(
9089
message -> message.createThreadChannel(newThreadName).queue(
9190
thread -> {
92-
messages.forEach(m -> {
93-
String messageContent = m.getContentRaw();
94-
if (messageContent.trim().length() == 0) messageContent = "[attachment]";
95-
MessageActionUtils.addAttachmentsAndSend(m, thread.sendMessage(messageContent)
96-
.allowedMentions(EnumSet.of(Message.MentionType.EMOJI, Message.MentionType.CHANNEL)));
91+
WebhookUtil.ensureWebhookExists(targetChannel, wh->{
92+
messages.forEach(m -> {
93+
WebhookUtil.mirrorMessageToWebhook(wh, m, m.getContentRaw(), thread.getIdLong());
94+
});
9795
});
9896
onFinish.accept(thread);
9997
}

src/main/java/net/javadiscord/javabot/util/WebhookUtil.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import club.minnced.discord.webhook.send.component.LayoutComponent;
88
import net.dv8tion.jda.api.entities.Message;
99
import net.dv8tion.jda.api.entities.Message.Attachment;
10-
import net.dv8tion.jda.api.entities.TextChannel;
10+
import net.dv8tion.jda.api.entities.StandardGuildMessageChannel;
1111
import net.dv8tion.jda.api.entities.Webhook;
1212
import org.jetbrains.annotations.NotNull;
1313

@@ -31,7 +31,7 @@ private WebhookUtil() {
3131
* @param callback an action that is executed once a webhook is
3232
* found/created
3333
*/
34-
public static void ensureWebhookExists(TextChannel channel, Consumer<? super Webhook> callback) {
34+
public static void ensureWebhookExists(StandardGuildMessageChannel channel, Consumer<? super Webhook> callback) {
3535
ensureWebhookExists(channel, callback, err -> {
3636
});
3737
}
@@ -46,7 +46,7 @@ public static void ensureWebhookExists(TextChannel channel, Consumer<? super Web
4646
* @param failureCallback an action that is executed if the webhook
4747
* lookup/creation failed
4848
*/
49-
public static void ensureWebhookExists(@NotNull TextChannel channel, Consumer<? super Webhook> callback, Consumer<? super Throwable> failureCallback) {
49+
public static void ensureWebhookExists(@NotNull StandardGuildMessageChannel channel, Consumer<? super Webhook> callback, Consumer<? super Throwable> failureCallback) {
5050

5151
channel.retrieveWebhooks().queue(webhooks -> {
5252
Optional<Webhook> hook = webhooks.stream()

0 commit comments

Comments
 (0)