Configuration: recactor how it is written and handled

This commit is contained in:
Wroclaw 2023-09-18 11:06:15 +02:00
parent 13e993b964
commit 7ff4abc3c0
10 changed files with 130 additions and 61 deletions

View file

@ -1,11 +1,12 @@
import DiscordApi from "discord.js";
import { Configuration as OpenAIApiConfiguration, OpenAIApi } from "openai";
import { PrismaClient } from "@prisma/client";
import Typescript from "typescript";
import fs from "node:fs";
import config from "./config";
import { queueRequest } from "./execution";
import InteractionManager from "./interactionManager";
import newConfig, { IConfig, IConfigRequired } from "./configDefault";
const discord = new DiscordApi.Client({
intents: [
DiscordApi.GatewayIntentBits.Guilds,
@ -14,6 +15,26 @@ const discord = new DiscordApi.Client({
]
});
function getConfig() {
let fileConfig: IConfig | undefined = undefined;
try {
fs.statSync("./config.ts");
const program = Typescript.createProgram(
["./config.ts"],
{outDir: "./dist"}
);
console.log(program.emit(program.getSourceFile("./config.ts")));
// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-member-access
fileConfig = require("./config").default as IConfig;
} catch (e) {
//FIXME: make errors more descriptive to the enduser
console.log(e);
}
return fileConfig !== undefined ? newConfig(fileConfig) : newConfig();
}
export const config: IConfigRequired = getConfig();
export const openai = new OpenAIApi(new OpenAIApiConfiguration({
apiKey: config.tokens.OpenAI
}));