2323import club .minnced .discord .webhook .send .AllowedMentions ;
2424import com .mcmoddev .mmdbot .core .event .moderation .WarningEvent ;
2525import com .mcmoddev .mmdbot .core .util .webhook .WebhookManager ;
26- import com .mcmoddev .mmdbot .thelistener .TheListener ;
2726import com .mcmoddev .mmdbot .thelistener .util .LoggingType ;
2827import com .mcmoddev .mmdbot .thelistener .util .Utils ;
2928import io .github .matyrobbrt .eventdispatcher .SubscribeEvent ;
3029import net .dv8tion .jda .api .EmbedBuilder ;
3130import net .dv8tion .jda .api .JDA ;
3231import net .dv8tion .jda .api .audit .ActionType ;
3332import net .dv8tion .jda .api .audit .AuditLogKey ;
34- import net .dv8tion .jda .api .entities .Member ;
3533import net .dv8tion .jda .api .entities .MessageEmbed ;
3634import net .dv8tion .jda .api .entities .User ;
3735import net .dv8tion .jda .api .entities .channel .middleman .MessageChannel ;
@@ -58,13 +56,13 @@ public final class ModerationEvents extends ListenerAdapter {
5856 public static final ModerationEvents INSTANCE = new ModerationEvents ();
5957
6058 private static final String WEBHOOK_NAME = "ModerationLogs" ;
61- private static final WebhookManager WEBHOOKS = WebhookManager .of (e -> e .trim ().equals (WEBHOOK_NAME ), WEBHOOK_NAME , AllowedMentions .none ());
59+ private static final WebhookManager WEBHOOKS = WebhookManager .of (e
60+ -> e .trim ().equals (WEBHOOK_NAME ), WEBHOOK_NAME , AllowedMentions .none ());
6261
6362 public static final Color RUBY = new Color (0xE91E63 );
6463 public static final Color LIGHT_SEA_GREEN = new Color (0x1ABC9C );
6564
6665 private ModerationEvents () {
67- //TODO Finish up remove, warns, timeouts, and merge nicks.
6866 }
6967
7068 @ Override
@@ -75,32 +73,17 @@ public void onGuildBan(@NotNull final GuildBanEvent event) {
7573 final var embed = new EmbedBuilder ();
7674 final var bannedUser = event .getUser ();
7775 final var bannedBy = Optional .ofNullable (log .getUser ());
78-
7976 embed .setColor (Color .RED );
8077 embed .setTitle ("User Banned." );
8178 embed .addField ("**User:**" , bannedUser .getAsTag (), true );
82- embed .addField ("**ID:**" , bannedUser .getId (), true );
83-
8479 if (log .getReason () != null ) {
8580 embed .addField ("**Ban reason:**" , log .getReason (), false );
8681 } else {
87- embed .addField ("**Ban reason:**" , "Reason for ban was not provided or could not be found, "
88- + "please contact the person who issued the ban." , false );
89- }
90-
91- final var targetId = log .getTargetIdLong ();
92-
93- if (targetId != bannedUser .getIdLong ()) {
94- TheListener .LOGGER .warn ("Inconsistency between target of retrieved audit log "
95- + "entry and actual ban event target: retrieved is {}, but target is {}" ,
96- targetId , bannedUser );
97- } else {
98- embed .setFooter ("Banned By: " + bannedBy .map (u -> "%s (%s)" .formatted (u .getAsTag (), u .getId ()))
99- .orElse ("Unknown" ));
82+ embed .addField ("**Ban reason:**" , "Reason for ban was not provided or could not be found "
83+ + "please contact a member of staff for more information about this ban ban." , false );
10084 }
101-
85+ embed . setFooter ( "User ID: " + bannedUser . getId (), bannedUser . getEffectiveAvatarUrl ());
10286 embed .setTimestamp (Instant .now ());
103-
10487 log (event .getGuild ().getIdLong (), event .getJDA (), embed .build (), bannedBy );
10588 });
10689 }
@@ -111,67 +94,30 @@ public void onGuildUnban(@NotNull final GuildUnbanEvent event) {
11194 .limit (5 )
11295 .type (ActionType .UNBAN ), log -> {
11396 final var embed = new EmbedBuilder ();
114- final var bannedUser = event .getUser ();
97+ final var unBannedUser = event .getUser ();
11598 final var bannedBy = Optional .ofNullable (log .getUser ());
116-
11799 embed .setColor (Color .GREEN );
118100 embed .setTitle ("User Un-banned." );
119- embed .addField ("**User:**" , bannedUser .getAsTag (), true );
120- embed .addField ("**ID:**" , bannedUser .getId (), true );
121-
122- final var targetId = log .getTargetIdLong ();
123-
124- if (targetId != bannedUser .getIdLong ()) {
125- TheListener .LOGGER .warn ("Inconsistency between target of retrieved audit log "
126- + "entry and actual unban event target: retrieved is {}, but target is {}" ,
127- targetId , bannedUser );
128- } else {
129- embed .setFooter ("Un-banned By: " + bannedBy .map (u -> "%s (%s)" .formatted (u .getAsTag (), u .getId ()))
130- .orElse ("Unknown" ));
131- }
132-
133- bannedBy .ifPresent (u -> embed .setFooter ("Moderator ID: " + u .getId (), u .getAvatarUrl ()));
101+ embed .addField ("**User:**" , unBannedUser .getAsTag (), true );
102+ embed .setFooter ("User ID: " + unBannedUser .getId (), unBannedUser .getEffectiveAvatarUrl ());
134103 embed .setTimestamp (Instant .now ());
135104 log (event .getGuild ().getIdLong (), event .getJDA (), embed .build (), bannedBy );
136105 });
137106 }
138107
139108 @ Override
140109 public void onGuildMemberUpdateNickname (@ NotNull final GuildMemberUpdateNicknameEvent event ) {
141- Utils .getAuditLog (event .getGuild (), event .getMember ().getIdLong (), log -> log
142- .type (ActionType .MEMBER_UPDATE )
143- .limit (5 ), entry -> {
144- if (entry .getChangeByKey (AuditLogKey .MEMBER_NICK ) == null ) {
145- onNickNoAudit (event );
146- } else {
147- final var embed = new EmbedBuilder ();
148- embed .setColor (Color .YELLOW );
149- embed .setTitle ("Nickname Changed" );
150- embed .addField ("User:" , event .getUser ().getAsTag (), true );
151- embed .addField ("Old Nickname:" , event .getOldNickname () == null
152- ? "*None*" : event .getOldNickname (), true );
153- embed .addField ("New Nickname:" , event .getNewNickname () == null
154- ? "*None*" : event .getNewNickname (), true );
155- embed .setFooter ("User ID: " + event .getUser ().getId (), event .getUser ().getEffectiveAvatarUrl ());
156- embed .setTimestamp (Instant .now ());
157-
158- logWithWebhook (event .getGuild ().getIdLong (), event .getJDA (), embed .build (), event .getUser ());
159- }
160- }, () -> onNickNoAudit (event ));
161- }
162-
163- private void onNickNoAudit (final GuildMemberUpdateNicknameEvent event ) {
164110 final var embed = new EmbedBuilder ();
165111 final var targetUser = event .getUser ();
166-
167112 embed .setColor (Color .YELLOW );
168113 embed .setTitle ("Nickname Changed" );
169114 embed .addField ("User:" , targetUser .getAsTag (), true );
170- embed .addField ("Old Nickname:" , event .getOldNickname () == null ? "*None*" : event .getOldNickname (), true );
171- embed .addField ("New Nickname:" , event .getNewNickname () == null ? "*None*" : event .getNewNickname (), true );
115+ embed .addField ("Old Nickname:" , event .getOldNickname () == null
116+ ? "*None*" : event .getOldNickname (), true );
117+ embed .addField ("New Nickname:" , event .getNewNickname () == null
118+ ? "*None*" : event .getNewNickname (), true );
172119 embed .setFooter ("User ID: " + event .getUser ().getId (), event .getUser ().getEffectiveAvatarUrl ());
173120 embed .setTimestamp (Instant .now ());
174-
175121 logWithWebhook (event .getGuild ().getIdLong (), event .getJDA (), embed .build (), event .getUser ());
176122 }
177123
@@ -192,31 +138,12 @@ public void onGuildMemberRemove(@NotNull final GuildMemberRemoveEvent event) {
192138
193139 embed .setColor (RUBY );
194140 embed .setTitle ("User Kicked" );
195- embed .setThumbnail (kickedUser .getAvatarUrl ());
196- embed .addField ("**Name:**" , kickedUser .getName (), false );
197- embed .addField ("**User ID:**" , kickedUser .getId (), false );
198- embed .addField ("**Profile:**" , kickedUser .getAsMention (), false );
199- embed .addField ("**Profile Age:**" , TimeFormat .RELATIVE
200- .format (kickedUser .getTimeCreated ()), false );
201-
202- embed .addField ("Guild Join Time:" , Optional .ofNullable (event .getMember ()).map (Member ::getTimeJoined )
203- .map (TimeFormat .DATE_TIME_SHORT ::format ).orElse ("Join time could not be determined!" ), true );
204-
141+ embed .addField ("**Name:**" , kickedUser .getAsTag (), true );
205142 embed .addField ("**Kick reason:**" , log .getReason () != null ? log .getReason () :
206143 ("Reason for kick was not provided or could not be found, please contact "
207- + kicker .map (User ::getAsMention ).orElse ("the kicker." )), false );
208-
209- final var targetId = log .getTargetIdLong ();
210-
211- if (targetId != event .getUser ().getIdLong ()) {
212- TheListener .LOGGER .warn ("Inconsistency between target of retrieved audit log "
213- + "entry and actual kick event target: retrieved is {}, but target is {}" ,
214- targetId , event .getUser ());
215- } else {
216- embed .addField ("Kicked By: " , kicker .map (u -> "<@%s> (%s)" .formatted (u .getId (), u .getId ())).orElse ("Unknown" ), false );
217- }
218-
219- kicker .ifPresent (u -> embed .setFooter ("Moderator ID: " + u .getId (), u .getAvatarUrl ()));
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 ());
220147
221148 log (event .getGuild ().getIdLong (), event .getJDA (), embed .build (), kicker );
222149 });
@@ -235,26 +162,14 @@ public void onGuildMemberUpdateTimeOut(@NotNull final GuildMemberUpdateTimeOutEv
235162
236163 embed .setColor (LIGHT_SEA_GREEN );
237164 embed .setTitle ("User Timed Out" );
238- embed .setThumbnail (user .getAvatarUrl ());
239- embed .addField ("**User:**" , "%s (%s)" .formatted (user .getAsMention (), user .getId ()), false );
240- embed .addField ("**Timeout End:**" , TimeFormat .RELATIVE .format (event .getNewTimeOutEnd ()), false );
241-
165+ embed .addField ("**User:**" , user .getAsTag (), true );
166+ embed .addField ("**Timeout End:**" , TimeFormat .RELATIVE .format (event .getNewTimeOutEnd ()),
167+ true );
242168 embed .addField ("**Reason:**" , log .getReason () != null ? log .getReason () :
243- ("Reason for timeout was not provided or could not be found, please contact "
244- + moderator .map (User ::getAsMention ).orElse ("the moderator." )), false );
245-
246- final var targetId = log .getTargetIdLong ();
247-
248- if (targetId != event .getUser ().getIdLong ()) {
249- TheListener .LOGGER .warn ("Inconsistency between target of retrieved audit log "
250- + "entry and actual kick event target: retrieved is {}, but target is {}" ,
251- targetId , event .getUser ());
252- } else {
253- embed .addField ("Timed Out By: " , moderator .map (u -> "<@%s> (%s)" .formatted (u .getId (), u .getId ())).orElse ("Unknown" ), false );
254- }
255-
256- moderator .ifPresent (u -> embed .setFooter ("Moderator ID: " + u .getId (), u .getAvatarUrl ()));
257-
169+ "Reason for timeout was not provided or could not be found, please ask a member of staff for "
170+ + "information about this timeout." , false );
171+ embed .setFooter ("User ID: " + user .getId (), user .getEffectiveAvatarUrl ());
172+ embed .setTimestamp (Instant .now ());
258173 log (event .getGuild ().getIdLong (), event .getJDA (), embed .build (), moderator );
259174 });
260175 } else if (event .getOldTimeOutEnd () != null && event .getNewTimeOutEnd () == null ) {
@@ -265,25 +180,13 @@ public void onGuildMemberUpdateTimeOut(@NotNull final GuildMemberUpdateTimeOutEv
265180 final var embed = new EmbedBuilder ();
266181 final var moderator = Optional .ofNullable (log .getUser ());
267182 final var user = event .getUser ();
268-
269183 embed .setColor (Color .CYAN );
270184 embed .setTitle ("User Timeout Removed" );
271- embed .setThumbnail (user .getAvatarUrl ());
272- embed .addField ("**User:**" , "%s (%s)" .formatted (user .getAsMention (), user .getId ()), false );
273- embed .addField ("**Old Timeout End:**" , TimeFormat .RELATIVE .format (event .getOldTimeOutEnd ()), false );
274-
275- final var targetId = log .getTargetIdLong ();
276-
277- if (targetId != event .getUser ().getIdLong ()) {
278- TheListener .LOGGER .warn ("Inconsistency between target of retrieved audit log "
279- + "entry and actual kick event target: retrieved is {}, but target is {}" ,
280- targetId , event .getUser ());
281- } else {
282- embed .addField ("Timeout Removed By: " , moderator .map (u -> "<@%s> (%s)" .formatted (u .getId (), u .getId ())).orElse ("Unknown" ), false );
283- }
284-
285- moderator .ifPresent (u -> embed .setFooter ("Moderator ID: " + u .getId (), u .getAvatarUrl ()));
286-
185+ embed .addField ("**User:**" , user .getAsTag (), true );
186+ embed .addField ("**Old Timeout End:**" , TimeFormat .RELATIVE .format (event .getOldTimeOutEnd ()),
187+ true );
188+ embed .setFooter ("User ID: " + user .getId (), user .getEffectiveAvatarUrl ());
189+ embed .setTimestamp (Instant .now ());
287190 log (event .getGuild ().getIdLong (), event .getJDA (), embed .build (), moderator );
288191 });
289192 }
0 commit comments