feat: public chat is now emote-only

This commit is contained in:
2025-04-05 01:00:59 +02:00
parent b8bc715868
commit b0e9f1bb4e
2 changed files with 47 additions and 10 deletions

View File

@@ -10,10 +10,9 @@ import java.util.Properties;
public class MistralDirectAPI { public class MistralDirectAPI {
public static void main(String[] args) { private static String apiKey;
String apiKey;
// Load API key from properties file static {
try { try {
Properties props = new Properties(); Properties props = new Properties();
FileInputStream input = new FileInputStream("config.properties"); FileInputStream input = new FileInputStream("config.properties");
@@ -22,18 +21,22 @@ public class MistralDirectAPI {
input.close(); input.close();
} catch (IOException e) { } catch (IOException e) {
System.err.println("Could not load API key: " + e.getMessage()); System.err.println("Could not load API key: " + e.getMessage());
return; }
} }
String payload = public static String translateToEmojis(String message) {
String payload = String.format(
""" """
{ {
"model": "mistral-medium", "model": "mistral-medium",
"messages": [ "messages": [
{ "role": "user", "content": "Reverse turing test." } { "role": "system", "content": "Please translate the following message to emojis only. Do not include any comments. End the emoji message with ;" },
{ "role": "user", "content": "%s" }
] ]
} }
"""; """,
message
);
HttpRequest request = HttpRequest.newBuilder() HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.mistral.ai/v1/chat/completions")) .uri(URI.create("https://api.mistral.ai/v1/chat/completions"))
@@ -49,10 +52,26 @@ public class MistralDirectAPI {
request, request,
HttpResponse.BodyHandlers.ofString() HttpResponse.BodyHandlers.ofString()
); );
System.out.println("Response Code: " + response.statusCode()); String responseBody = response.body();
System.out.println("Response Body: " + response.body()); return extractContent(responseBody);
} catch (IOException | InterruptedException e) { } catch (IOException | InterruptedException e) {
System.err.println("Error occurred: " + e.getMessage()); System.err.println("Error occurred: " + e.getMessage());
return message;
} }
} }
private static String extractContent(String jsonResponse) {
// Find the content field in the response
int contentIndex = jsonResponse.indexOf("\"content\":\"");
if (contentIndex != -1) {
int startIndex = contentIndex + "\"content\":\"".length();
int endIndex = jsonResponse.indexOf(";", startIndex);
if (endIndex != -1) {
return jsonResponse.substring(startIndex, endIndex);
}
}
return "";
}
} }

View File

@@ -1,6 +1,7 @@
package clientserver.server; package clientserver.server;
import clientserver.client.Client; import clientserver.client.Client;
import clientserver.common.MistralDirectAPI;
import java.net.DatagramSocket; import java.net.DatagramSocket;
public class MessageProcessor { public class MessageProcessor {
@@ -44,7 +45,7 @@ public class MessageProcessor {
break; break;
default: default:
// Broadcast message to all clients // Broadcast message to all clients
broadcastMessage(message); broadcastMessageEmoji(message);
break; break;
} }
} }
@@ -113,6 +114,23 @@ public class MessageProcessor {
} }
} }
private void broadcastMessageEmoji(String message) {
// Translate message to emojis
String emojiMessage = MistralDirectAPI.translateToEmojis(message);
String formattedMessage =
"> " + client.getPseudo() + ": " + emojiMessage;
for (ClientHandler handler : Server.getAllClientHandlers()) {
Client targetClient = handler.getClient();
Server.sendMessage(
clientHandlerSocket,
formattedMessage,
targetClient.getAddress(),
targetClient.getPort()
);
}
}
private void handleMsgCommand() { private void handleMsgCommand() {
Server.sendMessage( Server.sendMessage(
clientHandlerSocket, clientHandlerSocket,