1515import org .togetherjava .tjbot .features .chatgpt .ChatGptService ;
1616
1717import java .util .Arrays ;
18- import java .util .Optional ;
1918
2019/**
2120 * The implemented command is {@code /rewrite}, which allows users to have their message rewritten
@@ -93,11 +92,12 @@ public void onSlashCommand(SlashCommandInteractionEvent event) {
9392 }
9493
9594 String userMessage = messageOption .getAsString ();
95+
9696 MessageTone tone = parseTone (event .getOption (TONE_OPTION ));
9797
9898 event .deferReply (true ).queue ();
9999
100- Optional < String > rewrittenMessage = rewrite (userMessage , tone );
100+ String rewrittenMessage = rewrite (userMessage , tone );
101101
102102 if (rewrittenMessage .isEmpty ()) {
103103 logger .debug ("Failed to obtain a response for /{}, original message: '{}'" ,
@@ -111,11 +111,9 @@ public void onSlashCommand(SlashCommandInteractionEvent event) {
111111 return ;
112112 }
113113
114- String rewrittenText = rewrittenMessage .orElseThrow ();
115-
116- logger .debug ("Rewrite successful; rewritten message length: {}" , rewrittenText .length ());
114+ logger .debug ("Rewrite successful; rewritten message length: {}" , rewrittenMessage .length ());
117115
118- event .getHook ().sendMessage (rewrittenText ).setEphemeral (true ).queue ();
116+ event .getHook ().sendMessage (rewrittenMessage ).setEphemeral (true ).queue ();
119117 }
120118
121119 private MessageTone parseTone (@ Nullable OptionMapping toneOption )
@@ -129,33 +127,35 @@ private MessageTone parseTone(@Nullable OptionMapping toneOption)
129127 return MessageTone .valueOf (toneOption .getAsString ());
130128 }
131129
132- private Optional < String > rewrite (String userMessage , MessageTone tone ) {
130+ private String rewrite (String userMessage , MessageTone tone ) {
133131
134132 String rewritePrompt = createAiPrompt (userMessage , tone );
135133
136134 ChatGptModel aiModel = tone .model ;
137135
138- Optional < String > attempt = chatGptService . askRaw (rewritePrompt , aiModel );
136+ String attempt = askAi (rewritePrompt , aiModel );
139137
140- if (attempt .isEmpty ()) {
141- return attempt ;
142- }
143-
144- String response = attempt .get ();
145-
146- if (response .length () <= MAX_MESSAGE_LENGTH ) {
138+ if (attempt .length () <= MAX_MESSAGE_LENGTH ) {
147139 return attempt ;
148140 }
149141
150142 logger .debug ("Rewritten message exceeded {} characters; retrying with stricter constraint" ,
151143 MAX_MESSAGE_LENGTH );
152144
153- String shortenPrompt = rewritePrompt
154- + "\n \n Constraint reminder: Your previous rewrite exceeded " + MAX_MESSAGE_LENGTH
155- + " characters. Provide a revised rewrite strictly under " + MAX_MESSAGE_LENGTH
156- + " characters while preserving meaning and tone." ;
145+ String shortenPrompt =
146+ """
147+ %s
148+
149+ Constraint reminder: Your previous rewrite exceeded %d characters.
150+ Provide a revised rewrite strictly under %d characters while preserving meaning and tone.
151+ """
152+ .formatted (rewritePrompt , MAX_MESSAGE_LENGTH , MAX_MESSAGE_LENGTH );
153+
154+ return askAi (shortenPrompt , aiModel );
155+ }
157156
158- return chatGptService .askRaw (shortenPrompt , aiModel );
157+ private String askAi (String shortenPrompt , ChatGptModel aiModel ) {
158+ return chatGptService .askRaw (shortenPrompt , aiModel ).orElse ("" );
159159 }
160160
161161 private static String createAiPrompt (String userMessage , MessageTone tone ) {
0 commit comments