Untitled
unknown
javascript
3 years ago
8.7 kB
4
Indexable
const rolePointsOptions = [ { points: -100, role: '976610552874930196' }, { points: 100, role: '976610550882660362' }, { points: 200, role: '976610548735160320' }, { points: 300, role: '976610547862757456' }, { points: 400, role: '976610545715253249' }, { points: 500, role: '976610543580373043' }, { points: 600, role: '976766034495279124' }, { points: 700, role: '976766194759639040' }, { points: 800, role: '976766270882058249' } ]; module.exports = { generateRandomHex(size) { if (isNaN(Number(size))) return null; const genRanHex = [...Array(size)].map(() => Math.floor(Math.random() * 16).toString(16)).join(''); return genRanHex; }, addPoints(curr_points) { let pointsToAdd = 0; if (curr_points < 100) pointsToAdd += 50; else if (curr_points < 200) pointsToAdd += 40; else if (curr_points < 300) pointsToAdd += 30; else if (curr_points < 400) pointsToAdd += 25; else if (curr_points < 500) pointsToAdd += 20; else if (curr_points < 700) pointsToAdd += 15; else if (curr_points >= 700) pointsToAdd += 10; return pointsToAdd; }, winRemovePoints(curr_points) { let pointsToAdd = 0; if (curr_points < 100) pointsToAdd -= 50; else if (curr_points < 200) pointsToAdd -= 40; else if (curr_points < 300) pointsToAdd -= 30; else if (curr_points < 400) pointsToAdd -= 25; else if (curr_points < 500) pointsToAdd -= 20; else if (curr_points < 700) pointsToAdd -= 15; else if (curr_points >= 700) pointsToAdd -= 10; return pointsToAdd; }, removePoints(curr_points) { let pointsToRemove = 0; if (curr_points < 100) pointsToRemove -= 0; else if (curr_points < 400) pointsToRemove -= 10; else if (curr_points < 600) pointsToRemove -= 15; else if (curr_points < 700) pointsToRemove -= 20; else if (curr_points < 800) pointsToRemove -= 25; else if (curr_points >= 800) pointsToRemove -= 30; return pointsToRemove; }, loseAddPoints(curr_points) { let pointsToRemove = 0; if (curr_points < 100) pointsToRemove += 0; else if (curr_points < 400) pointsToRemove += 10; else if (curr_points < 600) pointsToRemove += 15; else if (curr_points < 700) pointsToRemove += 20; else if (curr_points < 800) pointsToRemove += 25; else if (curr_points >= 800) pointsToRemove += 30; return pointsToRemove; }, RolePointChecker(old_points, new_points) { let old_role; for (const role of rolePointsOptions) { if (role.points <= old_points) { old_role = role.role; } else { break; }; }; let new_role; for (const role of rolePointsOptions) { if (role.points <= new_points) { new_role = role.role; } else { break; }; }; if (old_role !== new_role) return new_role; else return old_role; }, convertMSToDate(ms) { let days = Math.floor(ms / 86400000); ms -= days * 86400000; let hours = Math.floor(ms / 3600000); ms -= hours * 3600000; let minutes = Math.floor(ms / 60000); ms -= minutes * 60000; let seconds = Math.floor(ms / 1000); return { days, hours, minutes, seconds }; }, convertDateToUTC(date) { date.setHours(date.getHours() - 5); date.setMinutes(date.getMinutes() - 30); return date; }, getRandomizedArray(arr = [], n = arr.length) { var result = new Array(n), len = arr.length, taken = new Array(len); if (n > len) throw new RangeError("getRandom: more elements taken than available"); while (n--) { var x = Math.floor(Math.random() * len); result[n] = arr[x in taken ? taken[x] : x]; taken[x] = --len in taken ? taken[len] : len; } return result; }, parseTime(time) { const regex = /\d+\.*\d*\D+/g; time = time.split(/\s+/).join(""); let res; let duration = 0; while ((res = regex.exec(time)) !== null) { if (res.index === regex.lastIndex) { regex.lastIndex++; } const local = res[0].toLowerCase(); if (local.endsWith("seconds") || local.endsWith("second") || (local.endsWith("s") && local.match(/\D+/)[0].length === 1)) { duration += parseInt(local.match(/\d+\.*\d*/)[0], 10) * 1000; } else if (local.endsWith("minutes") || local.endsWith("minute") || (local.endsWith("m") && local.match(/\D+/)[0].length === 1)) { duration += parseInt(local.match(/\d+\.*\d*/)[0], 10) * 60000; } else if (local.endsWith("hours") || local.endsWith("hour") || (local.endsWith("h") && local.match(/\D+/)[0].length === 1)) { duration += parseInt(local.match(/\d+\.*\d*/)[0], 10) * 3600000; } else if (local.endsWith("days") || local.endsWith("day") || (local.endsWith("d") && local.match(/\D+/)[0].length === 1)) { duration += parseInt(local.match(/\d+\.*\d*/)[0], 10) * 86400000; } else if (local.endsWith("weeks") || local.endsWith("week") || (local.endsWith("w") && local.match(/\D+/)[0].length === 1)) { duration += parseInt(local.match(/\d+\.*\d*/)[0], 10) * 604800000; } else if (local.endsWith("months") || local.endsWith("month")) { duration += parseInt(local.match(/\d+\.*\d*/)[0], 10) * 2628000000; } else if (local.endsWith("years") || local.endsWith("year") || (local.endsWith("y") && local.match(/\D+/)[0].length === 1)) { duration += parseInt(local.match(/\d+\.*\d*/)[0], 10) * 31557600000; } } if (duration === 0) { return null; } return duration; }, formatTime(milliseconds, minimal = false) { if (!milliseconds || isNaN(milliseconds) || milliseconds <= 0) { throw new RangeError("Utils#formatTime(milliseconds: number) Milliseconds must be a number greater than 0"); } if (typeof minimal !== "boolean") { throw new RangeError("Utils#formatTime(milliseconds: number, minimal: boolean) Minimal must be a boolean"); } const times = { years: 0, months: 0, weeks: 0, days: 0, hours: 0, minutes: 0, seconds: 0, }; while (milliseconds > 0) { if (milliseconds - 31557600000 >= 0) { milliseconds -= 31557600000; times.years++; } else if (milliseconds - 2628000000 >= 0) { milliseconds -= 2628000000; times.months++; } else if (milliseconds - 604800000 >= 0) { milliseconds -= 604800000; times.weeks += 7; } else if (milliseconds - 86400000 >= 0) { milliseconds -= 86400000; times.days++; } else if (milliseconds - 3600000 >= 0) { milliseconds -= 3600000; times.hours++; } else if (milliseconds - 60000 >= 0) { milliseconds -= 60000; times.minutes++; } else { times.seconds = Math.round(milliseconds / 1000); milliseconds = 0; } } const finalTime = []; let first = false; for (const [k, v] of Object.entries(times)) { if (minimal) { if (v === 0 && !first) { continue; } finalTime.push(v < 10 ? `0${v}` : `${v}`); first = true; continue; } if (v > 0) { finalTime.push(`${v} ${v > 1 ? k : k.slice(0, -1)}`); } } let time = finalTime.join(minimal ? ":" : ", "); if (time.includes(",")) { const pos = time.lastIndexOf(","); time = `${time.slice(0, pos)} and ${time.slice(pos + 1)}`; } return time; } };
Editor is loading...