Skip to content

Commit bfc4fbf

Browse files
committed
Minimised the kick log spam if it's caused by the bot.
1 parent 2eb438a commit bfc4fbf

File tree

2 files changed

+68
-30
lines changed

2 files changed

+68
-30
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,4 +111,9 @@ public static WebhookMessageBuilder webhookMessage(MessageEmbed embed) {
111111
return new WebhookMessageBuilder()
112112
.addEmbeds(WebhookEmbedBuilder.fromJDA(embed).build());
113113
}
114+
115+
public static WebhookMessageBuilder webhookMessage(String message) {
116+
return new WebhookMessageBuilder()
117+
.setContent(message);
118+
}
114119
}

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

Lines changed: 63 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import net.dv8tion.jda.api.JDA;
3131
import net.dv8tion.jda.api.audit.ActionType;
3232
import net.dv8tion.jda.api.audit.AuditLogKey;
33+
import net.dv8tion.jda.api.entities.Message;
3334
import net.dv8tion.jda.api.entities.MessageEmbed;
3435
import net.dv8tion.jda.api.entities.User;
3536
import net.dv8tion.jda.api.entities.channel.middleman.MessageChannel;
@@ -43,13 +44,12 @@
4344
import net.dv8tion.jda.api.utils.TimeFormat;
4445
import org.jetbrains.annotations.NotNull;
4546

46-
import java.awt.Color;
47+
import java.awt.*;
4748
import java.time.Instant;
4849
import java.time.temporal.ChronoUnit;
4950
import java.util.Optional;
5051

5152
import static com.mcmoddev.mmdbot.thelistener.TheListener.getInstance;
52-
import static com.mcmoddev.mmdbot.thelistener.util.Utils.mentionAndID;
5353

5454
public final class ModerationEvents extends ListenerAdapter {
5555

@@ -126,26 +126,29 @@ public void onGuildMemberRemove(@NotNull final GuildMemberRemoveEvent event) {
126126
Utils.getAuditLog(event.getGuild(), event.getUser().getIdLong(), log -> log
127127
.type(ActionType.KICK)
128128
.limit(5), log -> {
129-
if (log.getTimeCreated().toInstant()
130-
.isBefore(Instant.now()
131-
.minus(2, ChronoUnit.MINUTES))) {
129+
if (log.getTimeCreated().toInstant().isBefore(Instant.now().minus(2, ChronoUnit.MINUTES))) {
132130
return;
133131
}
134132

135133
final var embed = new EmbedBuilder();
136134
final var kicker = Optional.ofNullable(log.getUser());
137135
final var kickedUser = event.getUser();
138136

139-
embed.setColor(RUBY);
140-
embed.setTitle("User Kicked");
141-
embed.addField("**Name:**", kickedUser.getAsTag(), true);
142-
embed.addField("**Kick reason:**", log.getReason() != null ? log.getReason() :
143-
("Reason for kick was not provided or could not be found, please contact "
144-
+ "a member of staff for more information about this kick."), false);
145-
embed.setFooter("User ID: " + kickedUser.getId(), kickedUser.getAvatarUrl());
146-
embed.setTimestamp(Instant.now());
137+
if (kicker.isPresent() && kicker.get().isBot()) {
138+
var botKickMessage = kickedUser.getAsTag() + " was kicked! Kick Reason: " + log.getReason();
139+
log(event.getGuild().getIdLong(), event.getJDA(), botKickMessage, kicker);
140+
} else {
141+
embed.setColor(RUBY);
142+
embed.setTitle("User Kicked");
143+
embed.addField("**Name:**", kickedUser.getAsTag(), true);
144+
embed.addField("**Kick reason:**", log.getReason() != null ? log.getReason() :
145+
("Reason for kick was not provided or could not be found, please contact "
146+
+ "a member of staff for more information about this kick."), false);
147+
embed.setFooter("User ID: " + kickedUser.getId(), kickedUser.getAvatarUrl());
148+
embed.setTimestamp(Instant.now());
147149

148-
log(event.getGuild().getIdLong(), event.getJDA(), embed.build(), kicker);
150+
log(event.getGuild().getIdLong(), event.getJDA(), embed.build(), kicker);
151+
}
149152
});
150153
}
151154

@@ -194,19 +197,20 @@ public void onGuildMemberUpdateTimeOut(@NotNull final GuildMemberUpdateTimeOutEv
194197

195198
@SubscribeEvent
196199
public void onWarnAdd(final WarningEvent.Add event) {
197-
if (getInstance() == null) return;
200+
if (getInstance() == null) {
201+
return;
202+
}
198203
final var jda = getInstance().getJDA();
199204
final var doc = event.getDocument();
200205
jda.retrieveUserById(doc.userId()).and(jda.retrieveUserById(event.getModeratorId()), (user, moderator) -> {
201206
final var embed = new EmbedBuilder()
202207
.setColor(Color.RED)
203-
.setTitle("New Warning")
204-
.setDescription(mentionAndID(doc.moderatorId()) + " warned " + mentionAndID(doc.userId()))
205-
.setThumbnail(user.getAvatarUrl())
206-
.addField("Reason:", doc.reason(), false)
208+
.setTitle("Warning Added")
209+
.setDescription(user.getAsTag() + " has been given a warning.")
210+
.addField("Warning Reason:", doc.reason(), false)
207211
.addField("Warning ID:", doc.warnId(), false)
208-
.setTimestamp(Instant.now())
209-
.setFooter("Moderator ID: " + event.getModeratorId(), moderator.getAvatarUrl());
212+
.setFooter("User ID: " + user.getId(), user.getEffectiveAvatarUrl())
213+
.setTimestamp(Instant.now());
210214
logWithWebhook(event.getGuildId(), jda, embed.build(), moderator);
211215
return null;
212216
}).queue();
@@ -222,13 +226,12 @@ public void onWarnClear(final WarningEvent.Clear event) {
222226
jda.retrieveUserById(warnDoc.userId()).and(jda.retrieveUserById(event.getModeratorId()), (user, moderator) -> {
223227
final var embed = new EmbedBuilder()
224228
.setColor(Color.GREEN)
225-
.setTitle("Warning Cleared")
226-
.setDescription("One of the warnings of " + mentionAndID(warnDoc.userId()) + " has been removed!")
229+
.setTitle("Warning Removed")
230+
.setDescription("One of the warnings of " + user.getAsTag() + " has been removed!")
227231
.setThumbnail(user.getAvatarUrl())
228-
.addField("Old warning reason:", warnDoc.reason(), false)
229-
.addField("Old warner:", mentionAndID(warnDoc.userId()), false)
230-
.setTimestamp(Instant.now())
231-
.setFooter("Moderator ID: " + event.getModeratorId(), moderator.getAvatarUrl());
232+
.addField("Old Warning:", warnDoc.reason(), false)
233+
.setFooter("User ID: " + user.getId(), user.getEffectiveAvatarUrl())
234+
.setTimestamp(Instant.now());
232235
log(event.getGuildId(), jda, embed.build());
233236
return null;
234237
}).queue();
@@ -243,10 +246,10 @@ public void onWarnClearAll(final WarningEvent.ClearAllWarns event) {
243246
.queue(user -> {
244247
final var embed = new EmbedBuilder()
245248
.setColor(java.awt.Color.GREEN)
246-
.setTitle("Warnings Cleared")
247-
.setDescription("All of the warnings of " + mentionAndID(event.getTargetId()) + " have been cleared!")
249+
.setTitle("All Warnings Removed")
250+
.setDescription("All of ``" + user.getAsTag() + "``'s warnings have been removed!")
248251
.setTimestamp(Instant.now())
249-
.setFooter("Moderator ID: " + event.getModeratorId(), user.getAvatarUrl())
252+
.setFooter("User ID: " + user.getId(), user.getEffectiveAvatarUrl())
250253
.build();
251254
log(event.getGuildId(), user.getJDA(), embed);
252255
});
@@ -257,6 +260,10 @@ private void log(long guildId, JDA jda, MessageEmbed embed, Optional<User> owner
257260
owner.ifPresentOrElse(user -> logWithWebhook(guildId, jda, embed, user), () -> log(guildId, jda, embed));
258261
}
259262

263+
private void log(long guildId, JDA jda, String message, Optional<User> owner) {
264+
owner.ifPresentOrElse(user -> logWithWebhook(guildId, jda, message, user), () -> log(guildId, jda, message));
265+
}
266+
260267
private void log(long guildId, JDA jda, MessageEmbed embed) {
261268
final var loggingChannels = LoggingType.MODERATION_EVENTS.getChannels(guildId);
262269
loggingChannels
@@ -268,6 +275,17 @@ private void log(long guildId, JDA jda, MessageEmbed embed) {
268275
});
269276
}
270277

278+
private void log(long guildId, JDA jda, String message) {
279+
final var loggingChannels = LoggingType.MODERATION_EVENTS.getChannels(guildId);
280+
loggingChannels
281+
.forEach(id -> {
282+
final var ch = id.resolve(idL -> jda.getChannelById(MessageChannel.class, idL));
283+
if (ch != null) {
284+
ch.sendMessage(message).queue();
285+
}
286+
});
287+
}
288+
271289
private void logWithWebhook(long guildId, JDA jda, MessageEmbed embed, User author) {
272290
final var loggingChannels = LoggingType.MODERATION_EVENTS.getChannels(guildId);
273291
loggingChannels
@@ -282,4 +300,19 @@ private void logWithWebhook(long guildId, JDA jda, MessageEmbed embed, User auth
282300
}
283301
});
284302
}
303+
304+
private void logWithWebhook(long guildId, JDA jda, String message, User author) {
305+
final var loggingChannels = LoggingType.MODERATION_EVENTS.getChannels(guildId);
306+
loggingChannels
307+
.forEach(id -> {
308+
final var ch = id.resolve(idL -> jda.getChannelById(StandardGuildMessageChannel.class, idL));
309+
if (ch != null) {
310+
WEBHOOKS.getWebhook(ch)
311+
.send(com.mcmoddev.mmdbot.core.util.Utils.webhookMessage(message)
312+
.setUsername(author.getName())
313+
.setAvatarUrl(author.getEffectiveAvatarUrl())
314+
.build());
315+
}
316+
});
317+
}
285318
}

0 commit comments

Comments
 (0)