Add conversion of custom commands to SQL
All checks were successful
CI / CI (push) Successful in 20s
Lint Codebase / eslint (push) Successful in 15s

This commit is contained in:
SileNce5k 2024-12-17 10:39:30 +01:00
parent 904fa25a6d
commit c1c78d63a0
Signed by: SileNce
GPG key ID: B0A142BB4291B204
3 changed files with 111 additions and 11 deletions

View file

@ -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( () => {

View file

@ -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();
})
}

View file

@ -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();
}
);
})
}