@@ -72,15 +72,14 @@ public BanCommand(ModerationActionsStore actionsStore) {
7272 this .actionsStore = Objects .requireNonNull (actionsStore );
7373 }
7474
75- private static RestAction <InteractionHook > handleAlreadyBanned (Guild .Ban ban ,
76- IReplyCallback event ) {
75+ private static RestAction <Message > handleAlreadyBanned (Guild .Ban ban , InteractionHook hook ) {
7776 String reason = ban .getReason ();
7877 String reasonText =
7978 reason == null || reason .isBlank () ? "" : " (reason: %s)" .formatted (reason );
8079
8180 String message = "The user '%s' is already banned%s." .formatted (ban .getUser ().getAsTag (),
8281 reasonText );
83- return event . reply (message ).setEphemeral (true );
82+ return hook . sendMessage (message ).setEphemeral (true );
8483 }
8584
8685 private static RestAction <Boolean > sendDm (ISnowflake target ,
@@ -115,8 +114,8 @@ private static MessageEmbed sendFeedback(boolean hasSentDm, User target, Member
115114 durationText + dmNoticeText , reason );
116115 }
117116
118- private static Optional <RestAction <InteractionHook >> handleNotAlreadyBannedResponse (
119- Throwable alreadyBannedFailure , IReplyCallback event , Guild guild , User target ) {
117+ private static Optional <RestAction <Message >> handleNotAlreadyBannedResponse (
118+ Throwable alreadyBannedFailure , InteractionHook hook , Guild guild , User target ) {
120119 if (alreadyBannedFailure instanceof ErrorResponseException errorResponseException ) {
121120 if (errorResponseException .getErrorResponse () == ErrorResponse .UNKNOWN_BAN ) {
122121 return Optional .empty ();
@@ -125,7 +124,7 @@ private static Optional<RestAction<InteractionHook>> handleNotAlreadyBannedRespo
125124 if (errorResponseException .getErrorResponse () == ErrorResponse .MISSING_PERMISSIONS ) {
126125 logger .error ("The bot does not have the '{}' permission on the guild '{}'." ,
127126 Permission .BAN_MEMBERS , guild .getName ());
128- return Optional .of (event . reply (
127+ return Optional .of (hook . sendMessage (
129128 "I can not ban users in this guild since I do not have the %s permission."
130129 .formatted (Permission .BAN_MEMBERS ))
131130 .setEphemeral (true ));
@@ -134,18 +133,18 @@ private static Optional<RestAction<InteractionHook>> handleNotAlreadyBannedRespo
134133 logger .warn (LogMarkers .SENSITIVE ,
135134 "Something unexpected went wrong while trying to ban the user '{}'." ,
136135 target .getAsTag (), alreadyBannedFailure );
137- return Optional .of (event . reply ("Failed to ban the user due to an unexpected problem." )
136+ return Optional .of (hook . sendMessage ("Failed to ban the user due to an unexpected problem." )
138137 .setEphemeral (true ));
139138 }
140139
141- private RestAction <InteractionHook > banUserFlow (User target , Member author ,
140+ private RestAction <Message > banUserFlow (User target , Member author ,
142141 @ Nullable ModerationUtils .TemporaryData temporaryData , String reason ,
143142 int deleteHistoryDays , Guild guild , SlashCommandInteractionEvent event ) {
144143 return sendDm (target , temporaryData , reason , guild , event )
145144 .flatMap (hasSentDm -> banUser (target , author , temporaryData , reason , deleteHistoryDays ,
146145 guild ).map (banResult -> hasSentDm ))
147146 .map (hasSentDm -> sendFeedback (hasSentDm , target , author , temporaryData , reason ))
148- .flatMap (event :: replyEmbeds );
147+ .flatMap (event . getHook ():: sendMessageEmbeds );
149148 }
150149
151150 private AuditableRestAction <Void > banUser (User target , Member author ,
@@ -208,14 +207,16 @@ public void onSlashCommand(SlashCommandInteractionEvent event) {
208207 int deleteHistoryDays = Math
209208 .toIntExact (Objects .requireNonNull (event .getOption (DELETE_HISTORY_OPTION )).getAsLong ());
210209
210+ event .deferReply ().queue ();
211+ InteractionHook hook = event .getHook ();
211212 // Ban the user, but only if not already banned
212213 guild .retrieveBan (target ).mapToResult ().flatMap (alreadyBanned -> {
213214 if (alreadyBanned .isSuccess ()) {
214- return handleAlreadyBanned (alreadyBanned .get (), event );
215+ return handleAlreadyBanned (alreadyBanned .get (), hook );
215216 }
216217
217218 return handleNotAlreadyBannedResponse (
218- Objects .requireNonNull (alreadyBanned .getFailure ()), event , guild , target )
219+ Objects .requireNonNull (alreadyBanned .getFailure ()), hook , guild , target )
219220 .orElseGet (() -> banUserFlow (target , author , temporaryData .orElse (null ),
220221 reason , deleteHistoryDays , guild , event ));
221222 }).queue ();
0 commit comments