mirror of
https://github.com/Hessenuk/DiscordTickets.git
synced 2025-09-07 02:21:27 +03:00
v2 rewrite with discord.js@v12 support. Now with SQLite or MySQL storage.
Code is at least 80% less bad.
This commit is contained in:
99
src/index.js
Normal file
99
src/index.js
Normal file
@@ -0,0 +1,99 @@
|
||||
/**
|
||||
*
|
||||
* @name DiscordTickets
|
||||
* @author eartharoid <contact@eartharoid.me>
|
||||
* @license GNU-GPLv3
|
||||
*
|
||||
*/
|
||||
|
||||
require('dotenv').config({path: 'user/.env'});
|
||||
const Discord = require('discord.js');
|
||||
const fs = require('fs');
|
||||
const leeks = require('leeks.js');
|
||||
const client = new Discord.Client({
|
||||
autoReconnect: true
|
||||
});
|
||||
client.events = new Discord.Collection();
|
||||
client.commands = new Discord.Collection();
|
||||
client.cooldowns = new Discord.Collection();
|
||||
|
||||
require('./utils/banner')(leeks); // big coloured text thing
|
||||
|
||||
const config = require('../user/config');
|
||||
const Logger = require('leekslazylogger');
|
||||
const log = new Logger({
|
||||
name: config.name,
|
||||
logToFile: config.logs.files.enabled,
|
||||
maxAge: config.logs.files.keep_for,
|
||||
debug: config.debug
|
||||
});
|
||||
log.multi(log); // required to allow other files to access the logger
|
||||
|
||||
require('./utils/updater')(); // check for updates
|
||||
|
||||
|
||||
/**
|
||||
* storage
|
||||
*/
|
||||
const { Sequelize, Model, DataTypes } = require('sequelize');
|
||||
|
||||
let sequelize;
|
||||
|
||||
if(config.storage.type === 'mysql') {
|
||||
log.info('Connecting to MySQL database...');
|
||||
sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASS, {
|
||||
dialect: 'mysql',
|
||||
host: process.env.DB_HOST,
|
||||
logging: log.debug
|
||||
});
|
||||
} else {
|
||||
log.info('Using SQLite storage');
|
||||
sequelize = new Sequelize({
|
||||
dialect: 'sqlite',
|
||||
storage: 'user/storage.db',
|
||||
logging: log.debug
|
||||
});
|
||||
}
|
||||
|
||||
class Ticket extends Model {}
|
||||
Ticket.init({
|
||||
channel: DataTypes.STRING,
|
||||
creator: DataTypes.STRING,
|
||||
open: DataTypes.BOOLEAN,
|
||||
topic: DataTypes.TEXT
|
||||
}, {
|
||||
sequelize,
|
||||
modelName: 'ticket'
|
||||
});
|
||||
|
||||
Ticket.sync();
|
||||
|
||||
/**
|
||||
* event loader
|
||||
*/
|
||||
const events = fs.readdirSync('src/events').filter(file => file.endsWith('.js'));
|
||||
for (const file of events) {
|
||||
const event = require(`./events/${file}`);
|
||||
client.events.set(event.event, event);
|
||||
client.on(event.event, e => client.events.get(event.event).execute(client, e, Ticket));
|
||||
log.console(log.format(`> Loaded &7${event.event}&f event`));
|
||||
}
|
||||
|
||||
/**
|
||||
* command loader
|
||||
*/
|
||||
const commands = fs.readdirSync('src/commands').filter(file => file.endsWith('.js'));
|
||||
for (const file of commands) {
|
||||
const command = require(`./commands/${file}`);
|
||||
client.commands.set(command.name, command);
|
||||
log.console(log.format(`> Loaded &7${config.prefix}${command.name}&f command`));
|
||||
}
|
||||
|
||||
log.info(`Loaded ${events.length} events and ${commands.length} commands`);
|
||||
|
||||
process.on('unhandledRejection', error => {
|
||||
log.warn('An error was not caught');
|
||||
log.error(`Uncaught error: \n${error.stack}`);
|
||||
});
|
||||
|
||||
client.login(process.env.TOKEN);
|
Reference in New Issue
Block a user