const program = require('commander');
const Database = require('./database');
const Bot = require('./bot');
const online = require('./online');
program
.version('1.0.0')
.option('-t --token <token>', 'Discord access token')
.option('-d --database <database>', 'SQLite database file', __dirname + '/maxhass.db')
.parse(process.argv);
if (typeof program.token === 'undefined') {
program.help();
}
const database = new Database(program.database, (error) => {
console.error(error);
process.exit(2);
}, () => {
console.info(`Database open: ${program.database}`);
}, (from, to) => {
if (from === to) {
console.info(`Database schema is up-to-date.`);
} else if (from === 0) {
console.info(`Database schema initialized.`);
} else {
console.info(`Database schema upgraded from version #${from} to #${to}.`);
}
});
const bot = new Bot(program.token, database, error => {
console.error(error);
process.exit(3);
}, user => {
console.info(`Discord bot logged in as ${user.username}#${user.discriminator}.`);
console.info(`Invitation URL: ${bot.link}`);
online(user);
});
bot.on('join', guild => {
console.info(`Bot has joined ${guild.name}.`);
});
bot.on('leave', guild => {
console.info(`Bot has left ${guild.name}.`);
});
bot.on('message', message => {
let user = message.author.username + '#' + message.author.discriminator;
if (message.channel.type === 'dm') {
if (message.author === bot.discord.user) {
user += '->' + message.channel.recipient.username + '#' + message.channel.recipient.discriminator;
} else {
user += '->' + bot.discord.user.username + '#' + bot.discord.user.discriminator;
}
} else {
user += '@' + message.channel.name;
}
if (message.cleanContent.trim().length > 0) {
console.log(user + ': ' + message.cleanContent.trim());
}
});