This commit is contained in:
Isaac
2021-02-17 13:24:33 +00:00
parent 4c8e9125e5
commit ce2942879c
9 changed files with 121 additions and 63 deletions

View File

@@ -60,15 +60,6 @@ module.exports = async (log) => {
return process.exit();
}
/* let models = {};
let files = fs.readdirSync(path('src/database/models/')).filter(file => file.endsWith('.js'));
for (let file of files) {
let table = require(`./models/${file}`);
let model = sequelize.define(table.name, table.model);
models[table.name] = model;
} */
const Guild = sequelize.define('Guild', {
id: {
type: DataTypes.CHAR(18),
@@ -123,5 +114,5 @@ module.exports = async (log) => {
sequelize.sync();
return sequelize.models;
return sequelize;
};

View File

@@ -22,13 +22,17 @@
*/
const node_version = Number(process.versions.node.split('.')[0]);
if (node_version < 14) return console.log(`Error: DiscordTickets does not work on Node v${node_version}. Please upgrade to v14 or above.`);
const { version } = require('../package.json');
if (node_version < 14)
return console.log(`Error: DiscordTickets does not work on Node v${node_version}. Please upgrade to v14 or above.`);
const { version } = require('../package.json');
const fs = require('fs');
const { path } = require('./utils/fs');
if (!fs.existsSync(path('./.env'))) return console.log('Please make a copy of \'example.env\' called \'.env\'');
if (!fs.existsSync(path('./user/config.js'))) return console.log('Please make a copy of \'user/example.config.js\' called \'user/config.js\'');
if (!fs.existsSync(path('./.env')))
return console.log('Please make a copy of \'example.env\' called \'.env\'');
if (!fs.existsSync(path('./user/config.js')))
return console.log('Please make a copy of \'user/example.config.js\' called \'user/config.js\'');
require('dotenv').config({
path: path('./.env')
@@ -82,21 +86,22 @@ class Bot extends Client {
});
Object.assign(this, {
commands: new CommandManager(this),
config,
db: require('./database')(log),
db: require('./database')(log), // this.db.models.Ticket...
log,
i18n: new I18n(path('./src/locales'), 'en-GB')
});
(async () => {
this.listeners = require('./modules/listeners')(this);
this.commands = new CommandManager(this);
this.plugins = await require('./modules/plugins')(this);
this.setMaxListeners(this.config.max_listeners);
this.log.info('Connecting to Discord API');
require('./updater')(this);
require('./modules/listeners')(this);
require('./modules/plugins')(this);
this.login();
})();
this.log.info('Connecting to Discord API...');
this.login();
}
}
@@ -105,7 +110,7 @@ new Bot();
process.on('unhandledRejection', error => {
log.notice('PLEASE INCLUDE THIS INFORMATION:');
log.warn(`Discord Tickets v${version}, Node ${process.versions.node} (${process.platform})`);
log.warn(`Discord Tickets v${version}, Node v${process.versions.node} on ${process.platform}`);
log.warn('An error was not caught');
if (error instanceof Error) log.warn(`Uncaught ${error.name}: ${error}`);
log.error(error);

View File

@@ -1,6 +1,24 @@
module.exports = {
event: 'ready',
once: true,
execute: (client) => {
client.log.success(`Connected to Discord as "${client.user.tag}"`);
const { log } = client;
log.success(`Connected to Discord as "${client.user.tag}"`);
/**
* OH NO, TELEMETRY!?
* Relax, it just counts how many people are using DiscordTickets.
*/
if (client.config.super_secret_setting) {
const fetch = require('node-fetch');
fetch(`https://discordtickets-telemetry.eartharoid.repl.co/?id=${client.user.id}`, {
method: 'post',
}).catch(e => {
// fail quietly, it doesn't really matter if it didn't work
log.debug('Failed to post to discordtickets-telemetry');
log.debug(e);
});
}
}
};

View File

@@ -7,6 +7,7 @@ module.exports = client => {
for (const file of files) {
const listener = require(`../listeners/${file}`);
client.on(listener.event, (...args) => listener.execute(client, ...args));
let on = listener.once ? 'once' : 'on';
client[on](listener.event, (...args) => listener.execute(client, ...args));
}
};

View File

@@ -1,4 +1,4 @@
module.exports = async client => {
module.exports = client => {
client.config.plugins.forEach(plugin => {
try {
let package = require(`${plugin}/package.json`);

35
src/updater.js Normal file
View File

@@ -0,0 +1,35 @@
const fetch = require('node-fetch');
const boxen = require('boxen');
const link = require('terminal-link');
const semver = require('semver');
let { version: current } = require('../package.json');
module.exports = async client => {
if (!client.config.update_notice) return;
const json = await (await fetch('https://api.github.com/repos/eartharoid/DiscordTickets/releases')).json();
const update = json[0];
let latest = semver.coerce(update.tag_name);
if (!semver.valid(latest)) return;
if (semver.lt(current, latest)) {
client.log.notice(client.log.f(`There is an update available for Discord Tickets (${current} -> ${update.tag_name})`));
let notice = [];
notice.push(`&6You are currently using &c${current}&6, the latest is &a${update.tag_name}&6.`);
notice.push(`&6Download "&f${update.name}&6" from`);
notice.push(link('&6the GitHub releases page', 'https://github.com/eartharoid/DiscordTickets/releases/'));
console.log(
boxen(client.log.f(notice.join('\n')), {
padding: 1,
margin: 1,
align: 'center',
borderColor: 'yellow',
borderStyle: 'round'
})
);
}
};