Skip to content

Commit 8a03fa8

Browse files
committed
Use webhooks for message logs
1 parent fa66cff commit 8a03fa8

File tree

4 files changed

+32
-11
lines changed

4 files changed

+32
-11
lines changed

src/commander/java/com/mcmoddev/mmdbot/commander/updatenotifiers/UpdateNotifier.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@
3333
import lombok.Data;
3434
import net.dv8tion.jda.api.EmbedBuilder;
3535
import net.dv8tion.jda.api.entities.ChannelType;
36-
import net.dv8tion.jda.api.entities.IWebhookContainer;
37-
import net.dv8tion.jda.api.entities.MessageChannel;
36+
import net.dv8tion.jda.api.entities.StandardGuildMessageChannel;
3837
import org.slf4j.Marker;
3938
import org.slf4j.MarkerFactory;
4039

@@ -145,12 +144,12 @@ public final void run() {
145144
//noinspection ConstantConditions
146145
configuration.channelGetter.apply(TheCommander.getInstance().getGeneralConfig().channels().updateNotifiers())
147146
.stream()
148-
.map(it -> it.resolve(id -> TheCommander.getJDA().getChannelById(IWebhookContainer.class, id)))
147+
.map(it -> it.resolve(id -> TheCommander.getJDA().getChannelById(StandardGuildMessageChannel.class, id)))
149148
.filter(Objects::nonNull)
150149
.forEach(channel -> {
151150
embed.setTimestamp(Instant.now());
152151
if (configuration.webhookInfo == null) {
153-
((MessageChannel) channel).sendMessageEmbeds(embed.build()).queue(msg -> {
152+
channel.sendMessageEmbeds(embed.build()).queue(msg -> {
154153
if (channel.getType() == ChannelType.NEWS) {
155154
msg.crosspost().queue();
156155
}

src/core/java/com/mcmoddev/mmdbot/core/util/Utils.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,11 @@
2020
*/
2121
package com.mcmoddev.mmdbot.core.util;
2222

23+
import club.minnced.discord.webhook.send.WebhookEmbedBuilder;
24+
import club.minnced.discord.webhook.send.WebhookMessage;
25+
import club.minnced.discord.webhook.send.WebhookMessageBuilder;
2326
import net.dv8tion.jda.api.entities.Message;
27+
import net.dv8tion.jda.api.entities.MessageEmbed;
2428

2529
import java.io.BufferedReader;
2630
import java.io.InputStreamReader;
@@ -104,4 +108,8 @@ public static String makeMessageLink(final long guildId, final long channelId, f
104108
return Message.JUMP_URL.formatted(guildId, channelId, messageId);
105109
}
106110

111+
public static WebhookMessageBuilder webhookMessage(MessageEmbed embed) {
112+
return new WebhookMessageBuilder()
113+
.addEmbeds(WebhookEmbedBuilder.fromJDA(embed).build());
114+
}
107115
}

src/core/java/com/mcmoddev/mmdbot/core/util/jda/caching/MessageData.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ static MessageData from(Message message) {
5252
.map(Message.Attachment::getUrl)
5353
.toList();
5454
final String authorName = message.getAuthor().getName();
55-
final String authorAvatar = message.getAuthor().getAvatarUrl();
55+
final String authorAvatar = message.getAuthor().getEffectiveAvatarUrl();
5656
final InteractionData interactionData = message.getInteraction() == null ? null :
5757
new InteractionData() {
5858
final long authorId = message.getInteraction().getUser().getIdLong();

src/listener/java/com/mcmoddev/mmdbot/thelistener/events/MessageEvents.java

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,18 @@
2020
*/
2121
package com.mcmoddev.mmdbot.thelistener.events;
2222

23+
import club.minnced.discord.webhook.send.AllowedMentions;
2324
import com.mcmoddev.mmdbot.core.event.moderation.ScamLinkEvent;
2425
import com.mcmoddev.mmdbot.core.util.Utils;
2526
import com.mcmoddev.mmdbot.core.util.jda.caching.MessageData;
27+
import com.mcmoddev.mmdbot.core.util.webhook.WebhookManager;
2628
import com.mcmoddev.mmdbot.thelistener.TheListener;
2729
import com.mcmoddev.mmdbot.thelistener.util.LoggingType;
2830
import io.github.matyrobbrt.eventdispatcher.SubscribeEvent;
2931
import net.dv8tion.jda.api.EmbedBuilder;
3032
import net.dv8tion.jda.api.entities.Message;
31-
import net.dv8tion.jda.api.entities.MessageChannel;
3233
import net.dv8tion.jda.api.entities.MessageEmbed;
34+
import net.dv8tion.jda.api.entities.StandardGuildMessageChannel;
3335
import net.dv8tion.jda.api.hooks.ListenerAdapter;
3436
import org.jetbrains.annotations.NotNull;
3537

@@ -40,6 +42,9 @@ public final class MessageEvents extends ListenerAdapter {
4042

4143
public static final MessageEvents INSTANCE = new MessageEvents();
4244

45+
private static final String WEBHOOK_NAME = "MessageLogs";
46+
private static final WebhookManager WEBHOOKS = WebhookManager.of(e -> e.trim().equals(WEBHOOK_NAME), WEBHOOK_NAME, AllowedMentions.none());
47+
4348
public static final java.awt.Color GRAY_CHATEAOU = new java.awt.Color(0x979C9F);
4449
public static final java.awt.Color VIVID_VIOLET = new java.awt.Color(0x71368A);
4550

@@ -75,9 +80,14 @@ public void onMessageDelete(final net.dv8tion.jda.api.events.message.MessageDele
7580
}
7681
final var embed = embedBuilder.build();
7782
loggingChannels.forEach(id -> {
78-
final var ch = id.resolve(idL -> event.getJDA().getChannelById(MessageChannel.class, idL));
79-
if (ch != null)
80-
ch.sendMessageEmbeds(embed).queue();
83+
final var ch = id.resolve(idL -> event.getJDA().getChannelById(StandardGuildMessageChannel.class, idL));
84+
if (ch != null) {
85+
WEBHOOKS.getWebhook(ch)
86+
.send(Utils.webhookMessage(embed)
87+
.setUsername(data.getAuthorUsername())
88+
.setAvatarUrl(data.getAuthorAvatar())
89+
.build());
90+
}
8191
});
8292
}
8393

@@ -108,9 +118,13 @@ public void onMessageUpdate(final net.dv8tion.jda.api.events.message.MessageUpda
108118
final var embed = embedBuilder.build();
109119
loggingChannels
110120
.forEach(id -> {
111-
final var ch = id.resolve(idL -> event.getJDA().getChannelById(net.dv8tion.jda.api.entities.MessageChannel.class, idL));
121+
final var ch = id.resolve(idL -> event.getJDA().getChannelById(StandardGuildMessageChannel.class, idL));
112122
if (ch != null) {
113-
ch.sendMessageEmbeds(embed).queue();
123+
WEBHOOKS.getWebhook(ch)
124+
.send(Utils.webhookMessage(embed)
125+
.setUsername(data.getAuthorUsername())
126+
.setAvatarUrl(data.getAuthorAvatar())
127+
.build());
114128
}
115129
});
116130
}

0 commit comments

Comments
 (0)