You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

37 lines
857 B

const fs = require("fs");
const path = require("path");
/**
* Plugin to save chat history to a json file
*/
const fileHistory = {
name: "file-history-plugin",
startupConfig: {
params: {},
},
plugin: function ({
filename = `history/chat-history-${new Date().toISOString()}.json`,
} = {}) {
return {
name: this.name,
setup(aibitat) {
const folderPath = path.dirname(filename);
// get path from filename
if (folderPath) {
fs.mkdirSync(folderPath, { recursive: true });
}
aibitat.onMessage(() => {
const content = JSON.stringify(aibitat.chats, null, 2);
fs.writeFile(filename, content, (err) => {
if (err) {
console.error(err);
}
});
});
},
};
},
};
module.exports = { fileHistory };