const fs = require('fs'); const createInitialConfig = require("./util/createInitialConfig") const convertJSONToSQL = require('./util/timer/convertJSONToSQL'); const sqlite3 = require('sqlite3').verbose(); if(!fs.existsSync("./data/config.json")) { createInitialConfig(); } async function checkAndConvertJSONToSQL(){ process.stdout.write("Checking if timers.json exists... ") if(fs.existsSync("./data/timers.json")){ process.stdout.write(true + "\n") await createDatabaseTables(); await convertJSONToSQL(); fs.renameSync('data/timers.json', 'data/timers.json.old'); console.log("Renamed timers.json to timers.json.old"); }else{ process.stdout.write(false + "\n") } } const createDatabaseTables = require('./server/createDatabaseTables'); const createLastfmTable = require('./server/createLastfmTable'); const createWhitelistTable = require('./server/createWhitelistTable.js') createWhitelistTable(); createLastfmTable(); checkAndConvertJSONToSQL(); 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, loginMessage, loginChannel, enableLoginMessage, owners, presenceType, presenceText } = require('./data/config.json'); client.settings = new Collection(); client.commands = new Collection(); client.serverPrefixes = new Collection(); client.whitelist = new Collection(); async function loadWhitelist(clientWhitelist) { const db = new sqlite3.Database('data/database.db'); let rows = await new Promise((resolve) => { db.all(`SELECT * FROM whitelist`, function (error, rows){ if(error){ console.error("Failed to read whitelist table") console.error(error); resolve([]); }else{ resolve(rows); } }); }); rows.forEach(row => { if(clientWhitelist.has(row.serverId)){ let oldEntry = clientWhitelist.get(row.serverId); oldEntry.push(row.command) clientWhitelist.set(row.serverId, oldEntry) }else { clientWhitelist.set(row.serverId, [row.command]) } }); } loadWhitelist(client.whitelist); client.settings.set("presenceType", presenceType); client.settings.set("presenceText", presenceText); const reloadCommands = require("./util/reloadCommands.js"); const onMessage = require('./server/message'); const onReady = require('./server/ready'); reloadCommands(client) client.once('ready', () => { onReady(client, enableLoginMessage, loginChannel, loginMessage) }); client.once('reconnecting', () => { console.log('Reconnecting!'); }); client.once('disconnect', () => { console.log('Disconnect!'); }); client.on('messageCreate', async message => { onMessage(client, owners, message, globalPrefix); }); client.login(token);