v0.1.14 Consolidated versioning to .env
This commit is contained in:
9
Makefile
9
Makefile
@@ -1,4 +1,5 @@
|
|||||||
SHELL := /bin/bash
|
SHELL := /bin/bash
|
||||||
|
include .env
|
||||||
|
|
||||||
build:
|
build:
|
||||||
docker rmi siren && docker-compose build
|
docker rmi siren && docker-compose build
|
||||||
@@ -18,3 +19,11 @@ exec:
|
|||||||
|
|
||||||
clean:
|
clean:
|
||||||
docker rmi siren
|
docker rmi siren
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
@echo "Deploying application..."
|
||||||
|
@mvn clean deploy || { \
|
||||||
|
echo "Deployment failed!"; \
|
||||||
|
exit 1; \
|
||||||
|
}
|
||||||
|
@echo "Deployment successful!"
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ services:
|
|||||||
dockerfile: ./Dockerfile
|
dockerfile: ./Dockerfile
|
||||||
args:
|
args:
|
||||||
- JAVA_VERSION=17
|
- JAVA_VERSION=17
|
||||||
- VERSION=0.1.13
|
- VERSION=${SIREN_VERSION}
|
||||||
volumes:
|
volumes:
|
||||||
- ./data:/app
|
- ./data:/app
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|||||||
2
pom.xml
2
pom.xml
@@ -3,7 +3,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.bensherriff</groupId>
|
<groupId>com.bensherriff</groupId>
|
||||||
<artifactId>siren</artifactId>
|
<artifactId>siren</artifactId>
|
||||||
<version>0.1.13</version>
|
<version>${env.SIREN_VERSION}</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<repositories>
|
<repositories>
|
||||||
|
|||||||
@@ -27,12 +27,13 @@ public class OpenAIManager {
|
|||||||
private final Settings settings;
|
private final Settings settings;
|
||||||
private final JDA jda;
|
private final JDA jda;
|
||||||
private final ScheduledExecutorService executor;
|
private final ScheduledExecutorService executor;
|
||||||
private final Map<String, List<ChatMessage>> threadMessages = new HashMap<>();
|
private final Map<String, List<ChatMessage>> threadMessages;
|
||||||
|
|
||||||
public OpenAIManager(Listener listener) {
|
public OpenAIManager(Listener listener) {
|
||||||
this.settings = listener.getSettings();
|
this.settings = listener.getSettings();
|
||||||
this.jda = listener.getJDA();
|
this.jda = listener.getJDA();
|
||||||
this.executor = listener.getExecutor();
|
this.executor = listener.getExecutor();
|
||||||
|
this.threadMessages = new HashMap<>();
|
||||||
|
|
||||||
if (settings.getOpenAISettings().getToken().isEmpty()) {
|
if (settings.getOpenAISettings().getToken().isEmpty()) {
|
||||||
LOGGER.warn("No OpenAI token; OpenAI functionality is disabled");
|
LOGGER.warn("No OpenAI token; OpenAI functionality is disabled");
|
||||||
@@ -48,28 +49,33 @@ public class OpenAIManager {
|
|||||||
* @param event The message event received
|
* @param event The message event received
|
||||||
*/
|
*/
|
||||||
public void handleEvent(MessageReceivedEvent event) {
|
public void handleEvent(MessageReceivedEvent event) {
|
||||||
|
if (shouldReply(event)) {
|
||||||
|
if (openAiService != null) {
|
||||||
|
executor.execute(() -> sendMessage(event));
|
||||||
|
} else {
|
||||||
|
event.getMessage().reply("OpenAI functionality is disabled. Please contact an administrator").queue();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sendMessage(MessageReceivedEvent event) {
|
||||||
String message = parseMessage(event.getMessage().getContentRaw());
|
String message = parseMessage(event.getMessage().getContentRaw());
|
||||||
long guildId = event.getGuild().getIdLong();
|
long guildId = event.getGuild().getIdLong();
|
||||||
GuildSettings guildSettings = settings.getGuildSettings().get(guildId);
|
|
||||||
Model model = settings.getGuildSettings().get(guildId).getModel();
|
Model model = settings.getGuildSettings().get(guildId).getModel();
|
||||||
|
GuildSettings guildSettings = settings.getGuildSettings().get(guildId);
|
||||||
|
|
||||||
if (event.getAuthor().isBot()) {
|
LOGGER.trace("Guild: <{}> User: <{}> Message: <{}>", guildId, event.getAuthor().getId(), message);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (message.isEmpty() || message.isBlank()) {
|
if (message.isEmpty() || message.isBlank()) {
|
||||||
event.getMessage().reply("Your message is empty. Please try again").queue();
|
event.getMessage().reply("Your message is empty. Please try again").queue();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (shouldReply(event)) {
|
|
||||||
if (openAiService != null) {
|
|
||||||
LOGGER.trace("Guild: <{}> User: <{}> Message: <{}>", guildId, event.getAuthor().getId(), message);
|
|
||||||
executor.execute(() -> {
|
|
||||||
try {
|
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
List<ChatMessage> chatMessages = new ArrayList<>();
|
List<ChatMessage> chatMessages = new ArrayList<>();
|
||||||
ChatMessage chatMessage = createChatMessage(message, event);
|
ChatMessage chatMessage = createChatMessage(message, event);
|
||||||
|
|
||||||
|
try {
|
||||||
// Send OpenAI Message and get response
|
// Send OpenAI Message and get response
|
||||||
switch (model) {
|
switch (model) {
|
||||||
case DAVINCI_3, DAVINCI_2, CURIE_1, BABBAGE_1, ADA_1 -> {
|
case DAVINCI_3, DAVINCI_2, CURIE_1, BABBAGE_1, ADA_1 -> {
|
||||||
@@ -87,16 +93,15 @@ public class OpenAIManager {
|
|||||||
completionResult.getChoices().forEach(choice -> stringBuilder.append(choice.getText().trim()));
|
completionResult.getChoices().forEach(choice -> stringBuilder.append(choice.getText().trim()));
|
||||||
}
|
}
|
||||||
case GPT_4, GPT_4_0314, GPT_4_32K, GPT_4_32K_0314, GPT_35_TURBO, GPT_35_TURBO_0301 -> {
|
case GPT_4, GPT_4_0314, GPT_4_32K, GPT_4_32K_0314, GPT_35_TURBO, GPT_35_TURBO_0301 -> {
|
||||||
|
//TODO Handle memories properly
|
||||||
//TODO check logic here, something is broken
|
|
||||||
// if (event.isFromThread()) {
|
// if (event.isFromThread()) {
|
||||||
// String channelId = event.getChannel().asThreadChannel().getId();
|
// String channelId = event.getChannel().asThreadChannel().getId();
|
||||||
// // Update ThreadMessages with the new message, and add previous messages to be sent out
|
// // Update ThreadMessages with the new message, and add previous messages to be sent out
|
||||||
// if (threadMessages.containsKey(channelId)) {
|
// if (threadMessages.containsKey(channelId)) {
|
||||||
// chatMessages.addAll(threadMessages.get(channelId));
|
|
||||||
// threadMessages.get(channelId).add(chatMessage);
|
// threadMessages.get(channelId).add(chatMessage);
|
||||||
|
// chatMessages.addAll(threadMessages.get(channelId));
|
||||||
// } else {
|
// } else {
|
||||||
// threadMessages.put(channelId, List.of(chatMessage));
|
// threadMessages.put(channelId, new ArrayList<>(Arrays.asList(chatMessage)));
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
chatMessages.add(chatMessage);
|
chatMessages.add(chatMessage);
|
||||||
@@ -127,25 +132,21 @@ public class OpenAIManager {
|
|||||||
ThreadChannel channel = event.getChannel().asThreadChannel();
|
ThreadChannel channel = event.getChannel().asThreadChannel();
|
||||||
channel.sendMessage(stringBuilder.toString()).queue();
|
channel.sendMessage(stringBuilder.toString()).queue();
|
||||||
} else {
|
} else {
|
||||||
|
// The max discord title length is 100 characters
|
||||||
String threadTitle = message;
|
String threadTitle = message;
|
||||||
if (message.length() > 20) {
|
if (message.length() > 100) {
|
||||||
threadTitle = message.substring(0, 20);
|
threadTitle = message.substring(0, 100);
|
||||||
}
|
}
|
||||||
event.getMessage().createThreadChannel(threadTitle).queue(channel -> {
|
event.getMessage().createThreadChannel(threadTitle).queue(channel -> {
|
||||||
channel.sendMessage(stringBuilder.toString()).queue();
|
channel.sendMessage(stringBuilder.toString()).queue();
|
||||||
threadMessages.put(channel.getId(), List.of(chatMessage));
|
// threadMessages.put(channel.getId(), new ArrayList<>(Arrays.asList(chatMessage)));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
LOGGER.error(ex.getMessage());
|
LOGGER.error("Caught exception while processing message; {}", ex.getMessage());
|
||||||
event.getMessage().reply("An error occurred while processing your message. Please contact your administrator.").queue();
|
event.getMessage().reply("An error occurred while processing your message. Please contact your administrator.").queue();
|
||||||
}
|
}
|
||||||
});
|
|
||||||
} else {
|
|
||||||
event.getMessage().reply("OpenAI functionality is disabled. Please contact an administrator").queue();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private ChatMessage createChatMessage(String message, MessageReceivedEvent event) {
|
private ChatMessage createChatMessage(String message, MessageReceivedEvent event) {
|
||||||
@@ -185,7 +186,7 @@ public class OpenAIManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
LOGGER.error(ex.getMessage());
|
LOGGER.error("Failed to determine bot reply status; {}", ex.getMessage());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return shouldReply;
|
return shouldReply;
|
||||||
|
|||||||
Reference in New Issue
Block a user