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:
2021-05-03 18:39:33 +02:00
committed by GitHub
parent dc746276ab
commit c6cacdae5e
41 changed files with 16168 additions and 13670 deletions

137
index.js
View File

@ -2,64 +2,13 @@ require('module-alias/register');
require('dotenv').config();
const fs = require('fs');
const fetch = require('node-fetch');
const globals = require('./globals');
const db = globals.db;
db.loadDatabase();
const cmdprefix = process.env.CMDPREFIX || '!';
const Discord = require('discord.js');
const { findMessage } = require('@dsabot/findMessage');
const { db } = require('./globals');
db.load();
const cmdprefix = process.env.CMDPREFIX || '!';
const client = new Discord.Client();
client.commands = new Discord.Collection();
client.on('message', commandHandler);
client.login(process.env.BOT_TOKEN);
client.once('ready', () => {
console.log('Ready!');
});
const commandFiles = fs.readdirSync('./commands/').filter(file => file.endsWith('.js'));
for (const file of commandFiles) {
const command = require(`./commands/${file}`);
client.commands.set(command.name, command);
}
async function commandHandler(message) {
//console.log(`${new Date().toUTCString()} ${message.author.tag} (size: ${message.attachments.size})`);
if (message.attachments.size > 0 && message.channel.type == 'dm' && !message.author.bot) {
try {
const response = await fetch(message.attachments.first().url);
const data = await validateJSON(response);
if (data) await CreateFromFile(message, data);
} catch (e) {
console.log(e);
return message.reply(globals.Replies.find(x => x.id === 'ERROR').string);
}
} else {
if (!message.content.startsWith(cmdprefix) || message.author.bot) {
return;
}
const args = message.content.slice(cmdprefix.length).split(' ');
const commandName = args.shift().toLowerCase();
//if (!client.commands.has(commandName)) return;
try {
const command =
client.commands.get(commandName) ||
client.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName));
if (!command) return;
if (command.needs_args && !args.length) {
return message.reply(
globals.Replies.find(x => x.id === 'TOO_FEW_ARGS').string +
cmdprefix +
commandName +
' ' +
command.usage
);
} else {
command.exec(message, args);
}
} catch (e) {
message.reply(globals.Replies.find(x => x.id === 'ERROR').string);
}
}
}
function validateJSON(body) {
try {
@ -71,26 +20,60 @@ function validateJSON(body) {
}
async function CreateFromFile(message, data) {
try {
db.find(
{
db.find({
user: message.author.tag,
}).then(docs => {
if (docs.length === 0) {
db.insert({
uid: `${message.author.id}`,
user: message.author.tag,
},
function (err, docs) {
if (docs.length === 0) {
db.insert(
{
user: message.author.tag,
character: data,
},
function (err, docs) {
message.reply(globals.Replies.find(r => r.id === 'SAVED_DATA').string);
}
);
}
}
);
} catch (e) {
throw e;
}
character: data,
}).then(() => {
message.reply(findMessage('SAVED_DATA'));
});
}
});
}
async function commandHandler(message) {
// console.log(`${new Date().toUTCString()} ${message.author.tag} (size: ${message.attachments.size})`);
if (message.attachments.size > 0 && message.channel.type === 'dm' && !message.author.bot) {
try {
const response = await fetch(message.attachments.first().url);
const data = await validateJSON(response);
if (data) await CreateFromFile(message, data);
} catch (e) {
console.log(e);
return message.reply(findMessage('ERROR'));
}
} else {
if (!message.content.startsWith(cmdprefix) || message.author.bot) {
return null;
}
const args = message.content.slice(cmdprefix.length).split(' ');
const commandName = args.shift().toLowerCase();
const command =
client.commands.get(commandName) ||
client.commands.find(cmd => cmd.aliases && cmd.aliases.includes(commandName));
if (!command) return null;
if (command.needs_args && !args.length) {
return message.reply(
`${findMessage('TOO_FEW_ARGS')}\n${cmdprefix}${commandName} ${command.usage}`
);
}
command.exec(message, args);
}
return null;
}
client.commands = new Discord.Collection();
client.on('message', commandHandler);
client.login(process.env.BOT_TOKEN);
client.once('ready', () => {
console.log('Ready!');
});
const commandFiles = fs.readdirSync('./commands/').filter(file => file.endsWith('.js'));
commandFiles.forEach(file => {
const command = require(`./commands/${file}`);
client.commands.set(command.name, command);
});