47 lines
1.3 KiB
JavaScript
47 lines
1.3 KiB
JavaScript
const { Bot } = require("../models");
|
|
const crypto = require("crypto");
|
|
const { ReactionUserManager } = require("discord.js");
|
|
const axios = require("axios");
|
|
const fs = require("fs");
|
|
|
|
module.exports = {
|
|
name: "GeneralUtils",
|
|
getBotProperty: async function(property) {
|
|
let bot = await Bot.findOne();
|
|
return property ? bot[property] : bot;
|
|
},
|
|
|
|
setBotProperty: async function(property, value) {
|
|
let bot = await Bot.findOne();
|
|
bot[property] = value;
|
|
await bot.save();
|
|
},
|
|
|
|
generateLogID: async function() {
|
|
return crypto.randomBytes(4).toString("hex");
|
|
},
|
|
|
|
formatNumber: function(num, precision = 1) {
|
|
const map = [
|
|
{ suffix: 'T', threshold: 1e12 },
|
|
{ suffix: 'B', threshold: 1e9 },
|
|
{ suffix: 'M', threshold: 1e6 },
|
|
{ suffix: 'K', threshold: 1e3 },
|
|
{ suffix: '', threshold: 1 },
|
|
];
|
|
|
|
const found = map.find((x) => Math.abs(num) >= x.threshold);
|
|
if (found) {
|
|
const formatted = (Math.floor((num / found.threshold)*10) / 10) + found.suffix;
|
|
return formatted;
|
|
}
|
|
|
|
return num;
|
|
},
|
|
|
|
downloadFile: async function(url, path) {
|
|
let imageBuffer = await axios.get(url, { responseType: 'arraybuffer' });
|
|
fs.writeFileSync(path, imageBuffer.data);
|
|
},
|
|
}
|