Files
dsabot/src/commands/index.js
Marcus Netz 057859a820 eslint
2020-11-23 14:24:29 +01:00

65 lines
1.4 KiB
JavaScript

const fs = require('fs');
const fetch = require('node-fetch');
const roll = require('./roll');
const create = require('./create');
const add = require('./add');
const remove = require('./remove');
const show = require('./show');
const tp = require('./tp');
const talent = require('./talent');
const skill = require('./skill');
const createFromFile = require('./createFromFile');
require('dotenv').config();
const prefix = process.env.PREFIX || '!';
const commands = {
roll,
create,
add,
remove,
show,
skill,
tp,
talent,
};
const Datastore = require('nedb'),
db = new Datastore({
filename: 'dsabot.db',
autoload: true,
});
module.exports = async (message) => {
console.log(`${new Date().toUTCString} ${message.author.tag}`)
if ((message.attachments.size > 0) && message.channel.type == 'dm') {
try {
const response = await fetch(message.attachments.first().url);
const data = await validateJSON(response);
if (data) createFromFile(message, data, db);
}
catch (e) {
return null;
}
}
else {
if (!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).split(' ');
const command = args.shift().toLowerCase();
if (Object.keys(commands).includes(command)) {
commands[command](message, args, db);
}
}
};
function validateJSON(body) {
try {
const data = body.json();
// if came to here, then valid
return data;
}
catch (e) {
// failed to parse
return null;
}
}