Skip to content

Commit a1876a1

Browse files
committed
update JDA, use forwarding information in automod
1 parent 173044b commit a1876a1

File tree

2 files changed

+18
-4
lines changed

2 files changed

+18
-4
lines changed

build.gradle.kts

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

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

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

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
import net.dv8tion.jda.api.Permission;
99
import net.dv8tion.jda.api.entities.Member;
1010
import net.dv8tion.jda.api.entities.Message;
11+
import net.dv8tion.jda.api.entities.MessageReference;
1112
import net.dv8tion.jda.api.entities.channel.unions.MessageChannelUnion;
13+
import net.dv8tion.jda.api.entities.messages.MessageSnapshot;
1214
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
1315
import net.dv8tion.jda.api.events.message.MessageUpdateEvent;
1416
import net.dv8tion.jda.api.hooks.ListenerAdapter;
@@ -132,7 +134,7 @@ private void checkContentAutomod(@Nonnull Message message) {
132134
}
133135

134136
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()));
137+
notificationService.withGuild(message.getGuild()).sendToModerationLog(c -> c.sendMessageFormat("Message by %s: `%s`", message.getAuthor().getAsMention(), getMessageContent(message)));
136138
moderationService
137139
.warn(
138140
message.getAuthor(),
@@ -188,7 +190,7 @@ private void handleSpam(@Nonnull Message msg, Member member) {
188190
* @return True if a link is found and False if not.
189191
*/
190192
public boolean hasSuspiciousLink(@NotNull Message message) {
191-
final String messageRaw = message.getContentRaw();
193+
final String messageRaw = getMessageContent(message);
192194
Matcher urlMatcher = URL_PATTERN.matcher(messageRaw);
193195
if (messageRaw.contains("http://") || messageRaw.contains("https://")) {
194196
// only do it for a links, so it won't iterate for each message
@@ -217,7 +219,7 @@ public boolean hasSuspiciousLink(@NotNull Message message) {
217219
*/
218220
public boolean hasAdvertisingLink(@NotNull Message message) {
219221
// Advertising
220-
Matcher matcher = INVITE_URL.matcher(cleanString(message.getContentRaw()));
222+
Matcher matcher = INVITE_URL.matcher(cleanString(getMessageContent(message)));
221223
int start = 0;
222224
while (matcher.find(start)) {
223225
if (botConfig.get(message.getGuild()).getModerationConfig().getAutomodInviteExcludes().stream().noneMatch(matcher.group()::contains)) {
@@ -232,4 +234,16 @@ private boolean isSuggestionsChannel(@NotNull MessageChannelUnion channel) {
232234
return channel.getType().isGuild() &&
233235
channel.getIdLong() == botConfig.get(channel.asGuildMessageChannel().getGuild()).getModerationConfig().getSuggestionChannel().getIdLong();
234236
}
237+
238+
private String getMessageContent(Message msg) {
239+
//see https://github.com/discord-jda/JDA/releases/tag/v5.1.2
240+
MessageReference messageReference = msg.getMessageReference();
241+
if (messageReference != null && messageReference.getType() == MessageReference.MessageReferenceType.FORWARD) {
242+
MessageSnapshot snapshot = msg.getMessageSnapshots().get(0);
243+
if (snapshot != null) {
244+
return snapshot.getContentRaw();
245+
}
246+
}
247+
return msg.getContentRaw();
248+
}
235249
}

0 commit comments

Comments
 (0)