99import net .dv8tion .jda .api .entities .Guild ;
1010import net .dv8tion .jda .api .entities .Member ;
1111import net .dv8tion .jda .api .entities .Message ;
12+ import net .dv8tion .jda .api .entities .User ;
13+ import net .dv8tion .jda .api .entities .channel .concrete .ThreadChannel ;
14+ import net .dv8tion .jda .api .entities .channel .unions .MessageChannelUnion ;
1215import net .dv8tion .jda .api .events .interaction .ModalInteractionEvent ;
1316import net .dv8tion .jda .api .events .interaction .component .ButtonInteractionEvent ;
1417import net .dv8tion .jda .api .events .interaction .component .StringSelectInteractionEvent ;
2831import net .javadiscord .javabot .data .config .BotConfig ;
2932import net .javadiscord .javabot .data .config .GuildConfig ;
3033import net .javadiscord .javabot .systems .moderation .ModerationService ;
34+ import net .javadiscord .javabot .systems .moderation .report .ReportManager ;
3135import net .javadiscord .javabot .systems .moderation .warn .dao .WarnRepository ;
3236import net .javadiscord .javabot .systems .moderation .warn .model .WarnSeverity ;
3337import net .javadiscord .javabot .systems .notification .NotificationService ;
@@ -72,6 +76,7 @@ public class InteractionUtils implements ButtonHandler, ModalHandler, StringSele
7276 private final BotConfig botConfig ;
7377 private final WarnRepository warnRepository ;
7478 private final ExecutorService asyncPool ;
79+ private final ReportManager reportManager ;
7580
7681 /**
7782 * Deletes a message, only if the person deleting the message is the author
@@ -106,10 +111,11 @@ private void kick(ModalInteraction interaction, @NotNull Guild guild, String mem
106111 return ;
107112 }
108113 ModerationService service = new ModerationService (notificationService , botConfig , interaction , warnRepository , asyncPool );
109- guild .retrieveMemberById (memberId ).queue (
110- member -> {
111- service .kick (member . getUser () , reason , interaction .getMember (), interaction .getMessageChannel (), false );
114+ guild .getJDA (). retrieveUserById (memberId ).queue (
115+ user -> {
116+ service .kick (user , reason , interaction .getMember (), interaction .getMessageChannel (), false );
112117 interaction .getMessage ().editMessageComponents (ActionRow .of (Button .danger (interaction .getModalId (), "Kicked by " + UserUtils .getUserTag (interaction .getUser ())).asDisabled ())).queue ();
118+ resolveIfInReport (interaction .getChannel (), user );
113119 }, error -> Responses .error (interaction .getHook (), "Could not find member: " + error .getMessage ()).queue ()
114120 );
115121 }
@@ -120,10 +126,11 @@ private void warn(ModalInteraction interaction, @NotNull Guild guild, String mem
120126 return ;
121127 }
122128 ModerationService service = new ModerationService (notificationService , botConfig , interaction , warnRepository , asyncPool );
123- guild .retrieveMemberById (memberId ).queue (
124- member -> {
125- service .warn (member . getUser () , severity , reason , interaction .getMember (), interaction .getMessageChannel (), false );
129+ guild .getJDA (). retrieveUserById (memberId ).queue (
130+ user -> {
131+ service .warn (user , severity , reason , interaction .getMember (), interaction .getMessageChannel (), false );
126132 interaction .getHook ().editOriginalComponents (ActionRow .of (Button .primary (interaction .getModalId (), "Warned by " + UserUtils .getUserTag (interaction .getUser ())).asDisabled ())).queue ();
133+ resolveIfInReport (interaction .getChannel (), user );
127134 }, error -> Responses .error (interaction .getHook (), "Could not find member: " + error .getMessage ()).queue ()
128135 );
129136 }
@@ -138,9 +145,21 @@ private void ban(ModalInteraction interaction, @NotNull Guild guild, String memb
138145 user -> {
139146 service .ban (user , reason , interaction .getMember (), interaction .getMessageChannel (), false );
140147 interaction .getMessage ().editMessageComponents (ActionRow .of (Button .danger (interaction .getModalId (), "Banned by " + UserUtils .getUserTag (interaction .getUser ())).asDisabled ())).queue ();
148+ resolveIfInReport (interaction .getChannel (), user );
141149 }, error -> Responses .error (interaction .getHook (), "Could not find member: " + error .getMessage ()).queue ()
142150 );
143151 }
152+
153+ private void resolveIfInReport (MessageChannelUnion currentChannel , User actioner ) {
154+ if (!currentChannel .getType ().isThread ()) {
155+ return ;
156+ }
157+ ThreadChannel currentThread = currentChannel .asThreadChannel ();
158+ if (currentThread .getParentChannel ().getIdLong () != botConfig .get (currentThread .getGuild ()).getModerationConfig ().getReportChannelId ()) {
159+ return ;
160+ }
161+ reportManager .resolveReport (actioner , currentThread );
162+ }
144163
145164 private void unban (ModalInteraction interaction , long memberId , String reason ) {
146165 if (!interaction .getMember ().hasPermission (Permission .BAN_MEMBERS )) {
0 commit comments