import * as fs from "fs"; import {Environment} from "../common/environment"; import {logError} from "../util/utils"; import {Answers} from "../model/answers"; import path from "node:path"; type DataJsonFile = { admins: number[] muted: number[] } export let jsonFile: DataJsonFile; export async function readData(): Promise { try { jsonFile = JSON.parse(fs.readFileSync(`${Environment.DATA_PATH}/data.json`).toString()); const admins = jsonFile.admins || []; admins.unshift(Environment.CREATOR_ID); Environment.setAdmins(new Set(admins)); Environment.setMuted(new Set(jsonFile.muted || [])); return Promise.resolve(); } catch (e) { logError(e); return Promise.reject(e); } } export async function readPrompts(): Promise { try { const prompt = fs.readFileSync(path.join(Environment.DATA_PATH, "system_prompt.txt")).toString().trim(); if (prompt.length) { Environment.setSystemPrompt(prompt); } } catch (e) { logError(e); } return Promise.resolve(); } export async function saveData(): Promise { const adminIds: number[] = []; Environment.ADMIN_IDS.forEach(id => adminIds.push(id)); jsonFile.admins = adminIds; const mutedList: number[] = []; Environment.MUTED_IDS.forEach(id => mutedList.push(id)); jsonFile.muted = mutedList; try { fs.writeFileSync(`${Environment.DATA_PATH}/data.json`, JSON.stringify(jsonFile)); return readData(); } catch (e) { return Promise.reject(e); } } export async function retrieveAnswers(): Promise { try { const json: Answers = JSON.parse(fs.readFileSync(`${Environment.DATA_PATH}/answers.json`).toString()); Environment.setAnswers(json); return Promise.resolve(); } catch (e) { logError(e); return Promise.reject(e); } }