djs-easy
Version:
djs-easy is a javascript package for discord with the a lot stuff you need to make your bot programming easy
90 lines (74 loc) • 1.7 kB
JavaScript
const MS_CONFIG = {
ms: 1,
milliseconds: 1,
s: 1000,
sec: 1000,
secs: 1000,
second: 1000,
seconds: 1000,
m: 60000,
min: 60000,
mins: 60000,
minute: 60000,
minutes: 60000,
h: 3600000,
hour: 3600000,
hours: 3600000,
d: 86400000,
day: 86400000,
days: 86400000,
w: 604800000,
week: 604800000,
weeks: 604800000,
mon: 2592000000,
month: 2592000000,
months: 2592000000,
y: 31536000000,
year: 31536000000,
years: 31536000000,
};
// Defines all properties of objDef that are not on obj on obj.
function defaults(obj, objDef) {
for (let [name, prop] of Object.entries(objDef))
if (!(name in obj))
obj[name] = prop;
return obj;
}
// Defines deep object values.
function defObjVal(obj, str, val) {
str = str.replace(/\[(\w+)\]/g, '.$1').replace(/^\./, '');
let arr = str.split('.');
for (let prop of arr)
if (prop in obj && typeof obj[prop] === 'object')
obj = obj[prop];
obj[arr[arr.length - 1]] = val(obj[arr[arr.length - 1]]);
return obj[arr[arr.length - 1]];
}
// Escapes (backslashes) all key characters in regex that are in a string.
function escapeRegExpChars(text) {
return text.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&');
}
// Gets deep object values.
function getObjVal(obj, str) {
str = str.replace(/\[(\w+)\]/g, '.$1').replace(/^\./, '');
let arr = str.split('.');
for (let prop of arr) {
if (prop in obj)
obj = obj[prop];
else
return;
}
return obj;
}
function parseTime(str) {
let time = 0;
str.replace(new RegExp(`(\\d+)(${Object.keys(MS_CONFIG).join('|')})`, 'g'), (_, mul, len) => time += MS_CONFIG[len]*mul);
return time || null;
}
module.exports = {
defaults,
defObjVal,
escapeRegExpChars,
getObjVal,
parseTime
};