diff --git a/Dockerfile b/Dockerfile index 9ef0693..32d0e7f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -17,3 +17,4 @@ RUN npx tsc # Run the app CMD ["node", "dist/src/index.js"] +STOPSIGNAL SIGINT diff --git a/src/execution.ts b/src/execution.ts index 3b8e2fd..44e5710 100644 --- a/src/execution.ts +++ b/src/execution.ts @@ -246,7 +246,7 @@ async function executeFromQueue(channel: string) { ...config.chatCompletionParams, messages: OpenAImessages, // FIXME: don't use new instance of FunctionManager - functions: new FunctionManager().getFunctions(), + functions: new FunctionManager().getFunctionsForOpenAi(), }); logUsedTokens(answer, message, ++functionRanCounter); diff --git a/src/funcitonManager.ts b/src/funcitonManager.ts index 41e35c1..11b1bac 100644 --- a/src/funcitonManager.ts +++ b/src/funcitonManager.ts @@ -62,6 +62,11 @@ export default class FunctionManager { return rvalue; } + public getFunctionsForOpenAi(): ChatCompletionFunctions[] | undefined { + const rvalue = this.getFunctions(); + return rvalue.length > 0 ? rvalue : undefined; + } + public handleFunction(request: ChatCompletionFunctionCall): ChatCompletionMessageParam { // eslint-disable-next-line @typescript-eslint/no-explicit-any let parsedArguments: any; diff --git a/src/index.ts b/src/index.ts index 27e5c45..e0506ab 100644 --- a/src/index.ts +++ b/src/index.ts @@ -63,4 +63,17 @@ discord.on("messageCreate", message => { return queueRequest(message); }); -if (require.main === module) void discord.login(config.tokens.Discord); +if (require.main === module) { + void discord.login(config.tokens.Discord); + process.on("SIGINT", () => { + console.log("got SIGINT, exiting"); + //FIXME: finish executing requests then exit + discord.destroy() + .then(() => process.exit()) + .catch((e) => { + console.error("Failed to gracefully exit"); + console.error(e); + process.exit(); + }); + }); +}