diff --git a/server.js b/server.js index 6e2b50d..0af34ce 100644 --- a/server.js +++ b/server.js @@ -2,31 +2,62 @@ const fs = require('fs'); const createInitialConfig = require("./util/createInitialConfig") const convertTimerJSONToSQL = require('./util/timer/convertTimerJSONToSQL.js'); const createTimersTable = require('./server/createDatabaseTables/createTimersTable'); +const createCustomCommandsTable = require('./server/createDatabaseTables/createCustomCommandsTable.js'); +const convertCustomCommandsJSONToSQL = require('./server/convertCustomCommandsJSONToSQL.js'); +const sqlite3 = require('sqlite3').verbose(); if(!fs.existsSync("./data/config.json")) { createInitialConfig(); } + + +const { Collection, Client, GatewayIntentBits, Partials } = require('discord.js'); +const client = new Client({ intents: [GatewayIntentBits.Guilds, + GatewayIntentBits.GuildMessages, + GatewayIntentBits.MessageContent, + GatewayIntentBits.GuildMembers, + GatewayIntentBits.GuildPresences + ], partials: [Partials.Channel] }); + + + + async function checkAndConvertJSONToSQL(){ process.stdout.write("Checking if timers.json exists... ") if(fs.existsSync("./data/timers.json")){ process.stdout.write(true + "\n") await convertTimerJSONToSQL(); + fs.renameSync('data/timers.json', 'data/timers.json.old'); console.log("Renamed timers.json to timers.json.old"); }else{ process.stdout.write(false + "\n") } + + process.stdout.write("Checking if customCommands.json exists... ") + if(fs.existsSync('./data/customCommands.json')){ + process.stdout.write(true + "\n") + await convertCustomCommandsJSONToSQL(); + + fs.renameSync('data/customCommands.json', 'data/customCommands.json.old'); + }else{ + process.stdout.write(false + "\n") + } +} + +async function loadcustomCommands() { + const db = new sqlite3.Database('data/database.db'); + client.customCommands = new Collection(); + db.all("SELECT * FROM customCommands", (error, command) => { + if(error){ + console.error("Error while loading custom commands:\n",error.message) + }else { + client.customCommands.set(command.customName, command.customMessage); + } + }) } - function startBot(){ - const { Collection, Client, GatewayIntentBits, Partials } = require('discord.js'); - const client = new Client({ intents: [GatewayIntentBits.Guilds, - GatewayIntentBits.GuildMessages, - GatewayIntentBits.MessageContent, - GatewayIntentBits.GuildMembers, - GatewayIntentBits.GuildPresences - ], partials: [Partials.Channel] }); const { globalPrefix, token, @@ -75,9 +106,26 @@ function startBot(){ async function prepareBot(){ const createLastfmTable = require('./server/createDatabaseTables/createLastfmTable'); - await createTimersTable(); - await createLastfmTable(); - await checkAndConvertJSONToSQL(); + + + const taskGroups = [ + [ + createTimersTable(), + createLastfmTable(), + createCustomCommandsTable() + ], + [ + checkAndConvertJSONToSQL() + ] + ] + + taskGroups.forEach(async (taskGroup) => { + await Promise.all(taskGroup) + loadcustomCommands() + }) + + + } prepareBot().then( () => { diff --git a/server/convertCustomCommandsJSONToSQL.js b/server/convertCustomCommandsJSONToSQL.js new file mode 100644 index 0000000..101d7e4 --- /dev/null +++ b/server/convertCustomCommandsJSONToSQL.js @@ -0,0 +1,28 @@ +const sqlite3 = require('sqlite3').verbose(); +module.exports = async function () { + const customCommands = require('../data/customCommands.json') + const db = new sqlite3.Database('data/database.db'); + return new Promise((resolve, reject) => { + customCommands.forEach(command => { + const isDeleted = false; + + db.run(`INSERT INTO customCommands ( + customName, + customMessage, + author, + isDeleted + ) VALUES (?, ?, ?, ?)`, [command.customName, command.customMessage, command.author, isDeleted], function (error) { + if (error) { + console.error(`Error while converting customCommands.json to SQL: ${error}`) + reject(error); + } + }) + + + }); + + db.close(); + console.log("Converted customCommands.json to SQL successfully."); + resolve(); + }) +} diff --git a/server/createDatabaseTables/createCustomCommandsTable.js b/server/createDatabaseTables/createCustomCommandsTable.js new file mode 100644 index 0000000..1c89a89 --- /dev/null +++ b/server/createDatabaseTables/createCustomCommandsTable.js @@ -0,0 +1,24 @@ +const sqlite3 = require('sqlite3').verbose(); + +module.exports = async function () { + const db = new sqlite3.Database('data/database.db'); + return new Promise ((resolve, reject)=>{ + db.run( + `CREATE TABLE IF NOT EXISTS customCommands ( + customName TEXT PRIMARY KEY, + customMessage TEXT, + author TEXT, + isDeleted INTEGER)`, + (err) => { + if (err) { + console.error(`Error while creating table 'customCommands': ${err}`); + reject(err); + } else { + console.log("Table 'customCommands' created successfully."); + resolve(); + } + db.close(); + } + ); + }) +} \ No newline at end of file