Skip to content

Commit b9c242d

Browse files
First pass on implementing Webhook Message Links
1 parent 74d578f commit b9c242d

File tree

1 file changed

+7
-17
lines changed

1 file changed

+7
-17
lines changed

src/main/java/net/javadiscord/javabot/listener/MessageLinkListener.java

+7-17
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
import net.dv8tion.jda.api.hooks.ListenerAdapter;
88
import net.dv8tion.jda.api.interactions.components.buttons.Button;
99
import net.dv8tion.jda.api.requests.RestAction;
10+
import net.javadiscord.javabot.util.ExceptionLogger;
1011
import net.javadiscord.javabot.util.InteractionUtils;
1112
import net.javadiscord.javabot.util.Responses;
13+
import net.javadiscord.javabot.util.WebhookUtil;
1214
import org.jetbrains.annotations.NotNull;
1315

1416
import java.util.Arrays;
@@ -28,35 +30,23 @@ public void onMessageReceived(@NotNull MessageReceivedEvent event) {
2830
if (event.getAuthor().isBot() || event.getAuthor().isSystem()) return;
2931
Matcher matcher = MESSAGE_URL_PATTERN.matcher(event.getMessage().getContentRaw());
3032
if (matcher.find()) {
31-
Optional<RestAction<Message>> optional = this.parseMessageUrl(matcher.group(), event.getJDA());
33+
Optional<RestAction<Message>> optional = parseMessageUrl(matcher.group(), event.getJDA());
3234
optional.ifPresent(action -> action.queue(
33-
m -> event.getMessage().replyEmbeds(this.buildUrlEmbed(m))
34-
.setActionRow(Button.secondary(InteractionUtils.DELETE_ORIGINAL_TEMPLATE, "\uD83D\uDDD1️"), Button.link(m.getJumpUrl(), "View Original"))
35-
.queue(),
36-
e -> {}
35+
m -> WebhookUtil.ensureWebhookExists(event.getChannel().asTextChannel(),
36+
wh -> WebhookUtil.mirrorMessageToWebhook(wh, m, m.getContentRaw() + "\n\n" + m.getJumpUrl(), 0)
37+
), ExceptionLogger::capture
3738
));
3839
}
3940
}
4041

41-
private MessageEmbed buildUrlEmbed(Message m) {
42-
User author = m.getAuthor();
43-
return new EmbedBuilder()
44-
.setAuthor(author.getAsTag(), m.getJumpUrl(), author.getEffectiveAvatarUrl())
45-
.setColor(Responses.Type.DEFAULT.getColor())
46-
.setDescription(m.getContentRaw())
47-
.setTimestamp(m.getTimeCreated())
48-
.setFooter("#" + m.getChannel().getName())
49-
.build();
50-
}
51-
5242
/**
5343
* Tries to parse a Discord Message Link to the corresponding Message object.
5444
*
5545
* @param url The Message Link.
5646
* @param jda The {@link JDA} instance.
5747
* @return An {@link Optional} containing the {@link RestAction} which retrieves the corresponding Message.
5848
*/
59-
private Optional<RestAction<Message>> parseMessageUrl(String url, JDA jda) {
49+
private Optional<RestAction<Message>> parseMessageUrl(@NotNull String url, @NotNull JDA jda) {
6050
RestAction<Message> optional = null;
6151
String[] arr = url.split("/");
6252
String[] segments = Arrays.copyOfRange(arr, 4, arr.length);

0 commit comments

Comments
 (0)