3030import net .dv8tion .jda .api .JDA ;
3131import net .dv8tion .jda .api .audit .ActionType ;
3232import net .dv8tion .jda .api .audit .AuditLogKey ;
33+ import net .dv8tion .jda .api .entities .Message ;
3334import net .dv8tion .jda .api .entities .MessageEmbed ;
3435import net .dv8tion .jda .api .entities .User ;
3536import net .dv8tion .jda .api .entities .channel .middleman .MessageChannel ;
4344import net .dv8tion .jda .api .utils .TimeFormat ;
4445import org .jetbrains .annotations .NotNull ;
4546
46- import java .awt .Color ;
47+ import java .awt .* ;
4748import java .time .Instant ;
4849import java .time .temporal .ChronoUnit ;
4950import java .util .Optional ;
5051
5152import static com .mcmoddev .mmdbot .thelistener .TheListener .getInstance ;
52- import static com .mcmoddev .mmdbot .thelistener .util .Utils .mentionAndID ;
5353
5454public 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