
import { Logger } from './utils/log.js';
import runServer from './api/index.js';
import Memory from './utils/memory.js';
import { Guilds, History, ModNotes, Premium } from './utils/database.js';
import client from './utils/client.js';
import EventScheduler from './utils/eventScheduler.js';

await client.registerCommandsIn("./commands");
await client.registerEventsIn("./events");
client.on("ready", () => {
    runServer(client);
});
process.on("unhandledRejection", (err) => {
    console.error(err);
});

client.logger = new Logger()
client.verify = {}
client.roleMenu = {}
client.memory = new Memory()
client.noLog = []
client.database = {
    guilds: await new Guilds().setup(),
    history: await new History().setup(),
    notes: await new ModNotes().setup(),
    premium: await new Premium().setup(),
    eventScheduler: await new EventScheduler().start()
}

await client.login();