switched nedb to nedb-promises (#37)
* breaking change: switched to nedb-promises * Linting * some dev dependencies * more tests * updated package version * bug fixing * changed isNaN to isString * (fix) args[0]
This commit is contained in:
@ -1,17 +1,41 @@
|
||||
require('module-alias/register');
|
||||
const globals = require('../globals');
|
||||
const db = globals.db;
|
||||
const { roll } = require('@dsabot/Roll');
|
||||
const { findMessage } = require('@dsabot/findMessage');
|
||||
const { CompareResults } = require('@dsabot/CompareResults');
|
||||
const { isEmpty } = require('@dsabot/isEmpty');
|
||||
const { isString } = require('@dsabot/isString');
|
||||
const { db } = require('../globals');
|
||||
const { Werte } = require('../globals');
|
||||
|
||||
function handleAttributeCheck(docs, { message, args }) {
|
||||
let Attribute = isNaN(args[0])
|
||||
? HandleNamedAttributes({ Character: docs[0].character, args: args })
|
||||
function getAttributeLevel(Character = {}, Attribute = {}) {
|
||||
return Character.attributes.find(attribute => attribute.id === Attribute.id).level;
|
||||
}
|
||||
|
||||
function getAttribute(attribute = '') {
|
||||
return attribute.length === 2
|
||||
? Werte.find(a => a.kuerzel === attribute.toUpperCase())
|
||||
: Werte.find(a => a.name.toLowerCase() === attribute.toLowerCase());
|
||||
}
|
||||
function HandleNamedAttributes({ Character = {}, args = [] } = {}) {
|
||||
const Attribute = getAttribute(args[0]);
|
||||
const Level = getAttributeLevel(Character, Attribute) || 8;
|
||||
|
||||
return {
|
||||
Name: Attribute.name,
|
||||
Level,
|
||||
};
|
||||
}
|
||||
|
||||
function handleAttributeCheck(doc, { message, args }) {
|
||||
if (isEmpty(doc)) {
|
||||
return message.reply(findMessage('NOENTRY'));
|
||||
}
|
||||
const Attribute = isString(args[0])
|
||||
? HandleNamedAttributes({ Character: doc.character, args: args })
|
||||
: null;
|
||||
let Level = Attribute ? Attribute.Level : args[0] || 8;
|
||||
let Bonus = parseInt(args[1]) || 0;
|
||||
let dice = roll(2, 20, message.author.tag).dice;
|
||||
const Level = Attribute ? Attribute.Level : args[0] || 8;
|
||||
const Bonus = parseInt(args[1], 10) || 0;
|
||||
const { dice } = roll(2, 20, message.author.tag);
|
||||
const Result = CompareResults(dice, [Level, Level], Bonus);
|
||||
|
||||
// handle crits
|
||||
@ -48,27 +72,6 @@ function handleAttributeCheck(docs, { message, args }) {
|
||||
}`
|
||||
);
|
||||
}
|
||||
|
||||
function HandleNamedAttributes({ Character: Character = [], args: args = [] } = {}) {
|
||||
let Attribute = getAttribute(args[0]);
|
||||
let Level = getAttributeLevel(Character, Attribute) || 8;
|
||||
|
||||
return {
|
||||
Name: Attribute.name,
|
||||
Level: Level,
|
||||
};
|
||||
}
|
||||
|
||||
function getAttributeLevel(Character = {}, Attribute = {}) {
|
||||
return Character.attributes.find(attribute => attribute.id === Attribute.id).level;
|
||||
}
|
||||
|
||||
function getAttribute(attribute = '') {
|
||||
return attribute.length === 2
|
||||
? globals.Werte.find(a => a.kuerzel === attribute.toUpperCase())
|
||||
: globals.Werte.find(a => a.name.toLowerCase() === attribute.toLowerCase());
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
name: 'attribute',
|
||||
description: '',
|
||||
@ -76,13 +79,11 @@ module.exports = {
|
||||
usage: '<Eigenschaft> / <Eigenschaftswert>',
|
||||
needs_args: true,
|
||||
async exec(message, args) {
|
||||
db.find({ user: message.author.tag }, (err, docs) => {
|
||||
if (err) {
|
||||
db.findOne({ user: message.author.tag })
|
||||
.then(doc => handleAttributeCheck(doc, { message, args }))
|
||||
.catch(err => {
|
||||
message.reply(findMessage('ERROR'));
|
||||
throw new Error(err);
|
||||
}
|
||||
handleAttributeCheck(docs, { message, args });
|
||||
});
|
||||
});
|
||||
},
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user