2
0
mirror of https://github.com/thedevs-network/the-guard-bot synced 2025-08-23 02:17:47 +00:00

81 lines
1.8 KiB
JavaScript
Raw Normal View History

'use strict';
2017-09-25 09:56:39 +03:30
// Utils
const { logError } = require('../utils/log');
const Datastore = require('nedb-promise');
const User = new Datastore({
autoload: true,
filename: 'data/User.db'
});
User.ensureIndex({
fieldName: 'id',
unique: true
});
2017-09-27 00:11:20 +03:30
User.ensureIndex({
fieldName: 'status',
});
const addUser = ({ id, first_name = '', last_name = '', username = '' }) =>
2017-09-27 00:11:20 +03:30
User.update(
{ id },
{ first_name, id, last_name, status: 'member', username, warns: [] },
{ upsert: true })
2017-09-25 09:56:39 +03:30
.catch(logError(process.env.DEBUG));
const isUser = ({ id }) =>
User.findOne({ id });
2017-09-27 00:11:20 +03:30
const getUser = user =>
2017-09-25 12:40:04 +03:30
User.findOne(user);
2017-09-27 00:11:20 +03:30
const admin = ({ id, first_name = '', last_name = '', username = '' }) =>
User.update(
{ id },
{ first_name, id, last_name, status: 'admin', username, warns: [] })
.catch(logError(process.env.DEBUG));
const getAdmins = () =>
User.find({ status: 'admin' });
const unadmin = ({ id }) =>
User.update({ id }, { $set: { status: 'member' } });
const isAdmin = ({ id }) =>
User.findOne({ id, status: 'admin' });
const ban = (userToBan, banReason) => {
const { id, first_name = '', last_name = '', username = '' } = userToBan;
const userObj = { first_name, id, last_name, username, warns: [] };
return User.findOne({ id })
.then(user => user
? User.update({ id }, { $set: { banReason, status: 'banned' } })
: User.update(
{ id },
Object.assign({}, userObj, { banReason, status: 'banned' }),
{ upsert: true }));
};
const unban = ({ id }) =>
User.update({ id }, { $set: { banReason: '', status: 'member' } });
const isBanned = ({ id }) =>
User.findOne({ id, status: 'banned' })
.then(user => user ? user.banReason : null);
module.exports = {
addUser,
2017-09-27 00:11:20 +03:30
admin,
ban,
getAdmins,
2017-09-25 12:40:04 +03:30
getUser,
2017-09-27 00:11:20 +03:30
isAdmin,
isBanned,
isUser,
unadmin,
unban
};