@@ -83,8 +83,16 @@ public void sendControls() {
8383 if (thread == null ) return ;
8484 thread .getManager ().setName (String .format ("%s %s" , SUBMISSION_PENDING , thread .getName ())).queue ();
8585 thread .sendMessage (config .getQOTWReviewRole ().getAsMention ())
86- .setEmbeds (this .buildSubmissionControlEmbed ())
87- .setActionRows (this .buildInteractionControls ()).queue ();
86+ .setEmbeds (new EmbedBuilder ()
87+ .setTitle ("Submission Controls" )
88+ .setDescription ("Please choose an action for this Submission." )
89+ .setTimestamp (Instant .now ())
90+ .build ())
91+ .setActionRow (
92+ Button .success ("qotw-submission:controls:accept" , "Accept" ),
93+ Button .danger ("qotw-submission:controls:decline" , "Decline" ),
94+ Button .secondary ("qotw-submission:controls:delete" , "🗑️" )
95+ ).queue ();
8896 this .removeThreadOwner (thread .getJDA (), thread );
8997 log .info ("Sent Submission Controls to thread {}" , thread .getName ());
9098
@@ -106,27 +114,16 @@ private void removeThreadOwner(JDA jda, ThreadChannel thread) {
106114 * @param thread The submission's {@link ThreadChannel}.
107115 */
108116 protected void acceptSubmission (ButtonInteractionEvent event , ThreadChannel thread ) {
109- DbHelper .doDaoAction (QOTWSubmissionRepository ::new , dao -> {
110- Optional <QOTWSubmission > submissionOptional = dao .getSubmissionByThreadId (thread .getIdLong ());
111- if (submissionOptional .isEmpty ()) return ;
112- QOTWSubmission submission = submissionOptional .get ();
113- dao .markReviewed (submission );
114- dao .markAccepted (submission );
115- event .getGuild ().retrieveMemberById (submission .getAuthorId ()).queue (
116- member -> {
117- if (member == null ) {
118- Responses .error (event .getHook (), "Cannot accept a submission of a user who is not a member of this server" );
119- return ;
120- }
121- IncrementSubcommand .correct (member , true );
122- thread .getManager ().setName (SUBMISSION_ACCEPTED + thread .getName ().substring (1 )).queueAfter (5 , TimeUnit .SECONDS );
123- log .info ("{} accepted {}'s submission" , event .getUser ().getAsTag (), member .getUser ().getAsTag ());
124- GuildUtils .getLogChannel (event .getGuild ()).sendMessageFormat ("%s\n %s accepted %s's submission" , thread .getAsMention (), event .getUser ().getAsTag (), member .getUser ().getAsTag ()).queue ();
125- this .disableControls (String .format ("Accepted by %s" , event .getUser ().getAsTag ()), event .getMessage ());
126- Responses .success (event .getHook (), "Submission Accepted" , "Successfully accepted submission by " + member .getAsMention ()).queue ();
127- }
128- );
129- });
117+ DbHelper .doDaoAction (QOTWSubmissionRepository ::new , dao -> dao .updateStatus (thread .getIdLong (), SubmissionStatus .ACCEPTED ));
118+ thread .getManager ().setName (SUBMISSION_ACCEPTED + thread .getName ().substring (1 )).queue ();
119+ event .getJDA ().retrieveUserById (submission .getAuthorId ()).queue (user -> {
120+ IncrementSubcommand .correct (user , true );
121+ Responses .success (event .getHook (), "Submission Accepted" ,
122+ "Successfully accepted submission by " + user .getAsMention ()).queue ();
123+ }
124+ );
125+ this .disableControls (String .format ("Accepted by %s" , event .getUser ().getAsTag ()), event .getMessage ());
126+ this .sendLogMessage (thread , event .getUser (), SubmissionStatus .ACCEPTED , null );
130127 }
131128
132129 /**
@@ -137,27 +134,16 @@ protected void acceptSubmission(ButtonInteractionEvent event, ThreadChannel thre
137134 */
138135 protected void declineSelectSubmission (SelectMenuInteractionEvent event , ThreadChannel thread ) {
139136 String reasons = String .join (", " , event .getValues ());
140- DbHelper .doDaoAction (QOTWSubmissionRepository ::new , dao -> {
141- Optional <QOTWSubmission > submissionOptional = dao .getSubmissionByThreadId (thread .getIdLong ());
142- if (submissionOptional .isEmpty ()) return ;
143- QOTWSubmission submission = submissionOptional .get ();
144- dao .markReviewed (submission );
145- event .getGuild ().retrieveMemberById (submission .getAuthorId ()).queue (
146- member -> {
147- if (member == null ) {
148- Responses .error (event .getHook (), "Cannot accept a submission of a user who is not a member of this server" );
149- return ;
150- }
151- member .getUser ().openPrivateChannel ().queue (c -> c .sendMessageEmbeds (buildSubmissionDeclinedEmbed (member .getUser (), reasons )).queue ());
152- thread .getManager ().setName (SUBMISSION_DECLINED + thread .getName ().substring (1 )).queueAfter (5 , TimeUnit .SECONDS );
153- log .info ("{} declined {}'s submission for: {}" , event .getUser ().getAsTag (), member .getUser ().getAsTag (), reasons );
154- GuildUtils .getLogChannel (event .getGuild ()).sendMessageFormat ("%s\n %s declined %s's submission for: `%s`" , thread .getAsMention (), event .getUser ().getAsTag (), member .getUser ().getAsTag (), reasons ).queue ();
155- this .disableControls (String .format ("Declined by %s" , event .getUser ().getAsTag ()), event .getMessage ());
156- Responses .success (event .getHook (), "Submission Declined" ,
157- String .format ("Successfully declined submission by %s for the following reasons:\n `%s`" , member .getAsMention (), reasons )).queue ();
158- }
159- );
160- });
137+ DbHelper .doDaoAction (QOTWSubmissionRepository ::new , dao -> dao .updateStatus (thread .getIdLong (), SubmissionStatus .DECLINED ));
138+ thread .getManager ().setName (SUBMISSION_DECLINED + thread .getName ().substring (1 )).queue ();
139+ event .getJDA ().retrieveUserById (submission .getAuthorId ()).queue (user -> {
140+ user .openPrivateChannel ().queue (c -> c .sendMessageEmbeds (this .buildSubmissionDeclinedEmbed (user , reasons )).queue ());
141+ Responses .success (event .getHook (), "Submission Declined" ,
142+ String .format ("Successfully declined submission by %s for the following reasons:\n `%s`" , user .getAsMention (), reasons )).queue ();
143+ }
144+ );
145+ this .disableControls (String .format ("Declined by %s" , event .getUser ().getAsTag ()), event .getMessage ());
146+ this .sendLogMessage (thread , event .getUser (), SubmissionStatus .DECLINED , reasons );
161147 }
162148
163149 /**
@@ -167,26 +153,23 @@ protected void declineSelectSubmission(SelectMenuInteractionEvent event, ThreadC
167153 * @param thread The submission's {@link ThreadChannel}.
168154 */
169155 protected void deleteSubmission (ButtonInteractionEvent event , ThreadChannel thread ) {
170- thread .delete ().queueAfter (10 , TimeUnit .SECONDS );
171- log .info ("{} deleted submission thread {}" , event .getUser ().getAsTag (), thread .getName ());
172- this .sendLogMessage (event .getGuild (), thread , event .getUser (), SubmissionStatus .DELETED , null );
173- this .disableControls (String .format ("Deleted by %s" , event .getUser ().getAsTag ()), event .getMessage ());
174- DbHelper .doDaoAction (QOTWSubmissionRepository ::new , dao -> dao .removeSubmission (thread .getIdLong ()));
156+ DbHelper .doDaoAction (QOTWSubmissionRepository ::new , dao -> dao .deleteSubmission (thread .getIdLong ()));
175157 event .getHook ().sendMessage ("This Submission will be deleted in 10 seconds." ).setEphemeral (true ).queue ();
158+ this .disableControls (String .format ("Deleted by %s" , event .getUser ().getAsTag ()), event .getMessage ());
159+ this .sendLogMessage (thread , event .getUser (), SubmissionStatus .DELETED , null );
160+ thread .delete ().queueAfter (10 , TimeUnit .SECONDS );
176161 }
177162
178- private void sendLogMessage (Guild guild , ThreadChannel thread , User reviewedBy , SubmissionStatus status , @ Nullable String reason ) {
163+ private void sendLogMessage (ThreadChannel thread , User reviewedBy , SubmissionStatus status , @ Nullable String reason ) {
179164 DbHelper .doDaoAction (QOTWSubmissionRepository ::new , dao -> {
180165 Optional <QOTWSubmission > submissionOptional = dao .getSubmissionByThreadId (thread .getIdLong ());
181- submissionOptional .ifPresent (submission -> guild .getJDA ().retrieveUserById (submission .getAuthorId ()).queue (author ->
182- GuildUtils .getLogChannel (guild ).sendMessageEmbeds (this .buildLogEmbed (thread , author , reviewedBy , status , reason )).queue ()));
166+ submissionOptional .ifPresent (submission -> guild .getJDA ().retrieveUserById (submission .getAuthorId ()).queue (author -> {
167+ GuildUtils .getLogChannel (guild ).sendMessageEmbeds (this .buildLogEmbed (thread , author , reviewedBy , status , reason )).queue ();
168+ log .info ("{} {} {}'s QOTW Submission{}" , reviewedBy .getAsTag (), status .name ().toLowerCase (), author .getAsTag (), reason != null ? " for: " + reason : "." );
169+ }));
183170 });
184171 }
185172
186- protected void declineButtonSubmission (ButtonInteractionEvent event ) {
187- event .getMessage ().editMessageComponents (ActionRow .of (this .buildDeclineMenu ())).queue ();
188- }
189-
190173 private void disableControls (String buttonLabel , Message message ) {
191174 message .editMessageComponents (ActionRow .of (Button .secondary ("qotw-submission:controls:dummy" , buttonLabel ).asDisabled ())).queue ();
192175 }
@@ -207,32 +190,6 @@ private MessageEmbed buildSubmissionDeclinedEmbed(User createdBy, String reasons
207190 .build ();
208191 }
209192
210- private List <ActionRow > buildInteractionControls () {
211- return List .of (ActionRow .of (
212- Button .success ("qotw-submission:controls:accept" , "Accept" ),
213- Button .danger ("qotw-submission:controls:decline" , "Decline" ),
214- Button .secondary ("qotw-submission:controls:delete" , "🗑️" )));
215-
216- }
217-
218- private SelectMenu buildDeclineMenu () {
219- return SelectMenu .create ("qotw-submission-select:decline" )
220- .setPlaceholder ("Select a reason for declining this submission." )
221- .setRequiredRange (1 , 3 )
222- .addOption ("Wrong Answer" , "Wrong Answer" , "The content of the submission was not correct." )
223- .addOption ("Incomplete Answer" , "Incomplete Answer" , "The submission was missing some important things and was overall incomplete." )
224- .addOption ("Too short" , "Too short" , "The submission was way too short in comparison to other submissions." )
225- .build ();
226- }
227-
228- private MessageEmbed buildSubmissionControlEmbed () {
229- return new EmbedBuilder ()
230- .setTitle ("Submission Controls" )
231- .setDescription ("Please choose an action for this Submission." )
232- .setTimestamp (Instant .now ())
233- .build ();
234- }
235-
236193 private MessageEmbed buildLogEmbed (ThreadChannel thread , User threadOwner , User reviewedBy , SubmissionStatus status , @ Nullable String reason ) {
237194 EmbedBuilder builder = new EmbedBuilder ()
238195 .setAuthor (reviewedBy .getAsTag (), null , reviewedBy .getEffectiveAvatarUrl ())
0 commit comments