Skip to content

Commit 388ee3d

Browse files
authored
Merge pull request #499 from danthe1st/forward
update JDA, use forwarding information in automod
2 parents 1b423a9 + 7562bd7 commit 388ee3d

File tree

4 files changed

+41
-6
lines changed

4 files changed

+41
-6
lines changed

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ dependencies {
3232

3333
// DIH4JDA (Command Framework) & JDA
3434
implementation("com.github.DynxstyGIT:DIH4JDA:120a15ad2e")
35-
implementation("net.dv8tion:JDA:5.0.0") {
35+
implementation("net.dv8tion:JDA:5.1.2") {
3636
exclude(module = "opus-java")
3737
}
3838

src/main/java/net/discordjug/javabot/data/h2db/message_cache/model/CachedMessage.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.List;
55

66
import lombok.Data;
7+
import net.discordjug.javabot.util.MessageUtils;
78
import net.dv8tion.jda.api.entities.Message;
89
import net.dv8tion.jda.api.entities.Message.Attachment;
910

@@ -27,13 +28,12 @@ public static CachedMessage of(Message message) {
2728
CachedMessage cachedMessage = new CachedMessage();
2829
cachedMessage.setMessageId(message.getIdLong());
2930
cachedMessage.setAuthorId(message.getAuthor().getIdLong());
30-
cachedMessage.setMessageContent(message.getContentRaw().trim());
31+
cachedMessage.setMessageContent(MessageUtils.getMessageContent(message).trim());
3132
cachedMessage.attachments = message
3233
.getAttachments()
3334
.stream()
3435
.map(Attachment::getUrl)
3536
.toList();
3637
return cachedMessage;
3738
}
38-
3939
}

src/main/java/net/discordjug/javabot/systems/moderation/AutoMod.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import net.discordjug.javabot.systems.moderation.warn.model.WarnSeverity;
66
import net.discordjug.javabot.systems.notification.NotificationService;
77
import net.discordjug.javabot.util.ExceptionLogger;
8+
import net.discordjug.javabot.util.MessageUtils;
89
import net.dv8tion.jda.api.Permission;
910
import net.dv8tion.jda.api.entities.Member;
1011
import net.dv8tion.jda.api.entities.Message;
@@ -132,7 +133,7 @@ private void checkContentAutomod(@Nonnull Message message) {
132133
}
133134

134135
private void doAutomodActions(Message message, String reason) {
135-
notificationService.withGuild(message.getGuild()).sendToModerationLog(c -> c.sendMessageFormat("Message by %s: `%s`", message.getAuthor().getAsMention(), message.getContentRaw()));
136+
notificationService.withGuild(message.getGuild()).sendToModerationLog(c -> c.sendMessageFormat("Message by %s: `%s`", message.getAuthor().getAsMention(), MessageUtils.getMessageContent(message)));
136137
moderationService
137138
.warn(
138139
message.getAuthor(),
@@ -188,7 +189,7 @@ private void handleSpam(@Nonnull Message msg, Member member) {
188189
* @return True if a link is found and False if not.
189190
*/
190191
public boolean hasSuspiciousLink(@NotNull Message message) {
191-
final String messageRaw = message.getContentRaw();
192+
final String messageRaw = MessageUtils.getMessageContent(message);
192193
Matcher urlMatcher = URL_PATTERN.matcher(messageRaw);
193194
if (messageRaw.contains("http://") || messageRaw.contains("https://")) {
194195
// only do it for a links, so it won't iterate for each message
@@ -217,7 +218,7 @@ public boolean hasSuspiciousLink(@NotNull Message message) {
217218
*/
218219
public boolean hasAdvertisingLink(@NotNull Message message) {
219220
// Advertising
220-
Matcher matcher = INVITE_URL.matcher(cleanString(message.getContentRaw()));
221+
Matcher matcher = INVITE_URL.matcher(cleanString(MessageUtils.getMessageContent(message)));
221222
int start = 0;
222223
while (matcher.find(start)) {
223224
if (botConfig.get(message.getGuild()).getModerationConfig().getAutomodInviteExcludes().stream().noneMatch(matcher.group()::contains)) {
@@ -232,4 +233,5 @@ private boolean isSuggestionsChannel(@NotNull MessageChannelUnion channel) {
232233
return channel.getType().isGuild() &&
233234
channel.getIdLong() == botConfig.get(channel.asGuildMessageChannel().getGuild()).getModerationConfig().getSuggestionChannel().getIdLong();
234235
}
236+
235237
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package net.discordjug.javabot.util;
2+
3+
import net.dv8tion.jda.api.entities.Message;
4+
import net.dv8tion.jda.api.entities.MessageReference;
5+
import net.dv8tion.jda.api.entities.messages.MessageSnapshot;
6+
7+
/**
8+
* Utility class for JDA messages.
9+
*/
10+
public class MessageUtils {
11+
12+
private MessageUtils() {
13+
//prevent instantiation
14+
}
15+
16+
/**
17+
* Gets the actual content of a message.
18+
* In case of forwarded messages, this gets the content of the forwarded message.
19+
* @param msg the message to check
20+
* @return the content of the passed message
21+
*/
22+
public static String getMessageContent(Message msg) {
23+
//see https://github.com/discord-jda/JDA/releases/tag/v5.1.2
24+
MessageReference messageReference = msg.getMessageReference();
25+
if (messageReference != null && messageReference.getType() == MessageReference.MessageReferenceType.FORWARD) {
26+
MessageSnapshot snapshot = msg.getMessageSnapshots().get(0);
27+
if (snapshot != null) {
28+
return snapshot.getContentRaw();
29+
}
30+
}
31+
return msg.getContentRaw();
32+
}
33+
}

0 commit comments

Comments
 (0)