dunbot / source /lib /log.js
Duongkum999's picture
Upload 56 files
91d9d20 verified
raw
history blame
3.88 kB
var { getTime } = require("./utils.js");
var { existsSync } = require("fs");
function color(text) {
return {
black: "\x1b[30m" + text + "\x1b[0m",
red: "\x1b[31m" + text + "\x1b[0m",
green: "\x1b[32m" + text + "\x1b[0m",
yellow: "\x1b[33m" + text + "\x1b[0m",
blue: "\x1b[34m" + text + "\x1b[0m",
magenta: "\x1b[35m" + text + "\x1b[0m",
cyan: "\x1b[36m" + text + "\x1b[0m",
white: "\x1b[37m" + text + "\x1b[0m",
bgBlack: "\x1b[40m" + text + "\x1b[0m",
bgRed: "\x1b[41m" + text + "\x1b[0m",
bgGreen: "\x1b[42m" + text + "\x1b[0m",
bgYellow: "\x1b[43m" + text + "\x1b[0m",
bgBlue: "\x1b[44m" + text + "\x1b[0m",
bgMagenta: "\x1b[45m" + text + "\x1b[0m",
bgCyan: "\x1b[46m" + text + "\x1b[0m",
bgWhite: "\x1b[47m" + text + "\x1b[0m"
}
}
function parseDir(dir, inputs = []) {
try {
var { language } = require("../../config.json").systemOptions;
var languagePath = __dirname + "/../languages/" + language + ".json";
if (!existsSync(languagePath))
languagePath = __dirname + "/../languages/vi-VN.json";
if (/^([^.]+)(\.[^.]+)*$/.test(dir)) {
var languageData = require(languagePath);
var ArrayKey = dir.split(".");
var content = languageData;
for (var key of ArrayKey)
content = content[key];
if (inputs.length > 0) {
for (var index = 1; index <= inputs.length; index++)
content = content.replace("%" + index, inputs[index - 1]);
}
return content;
}
return dir;
} catch (error) {
console.log(error);
return dir;
}
}
function info(dir, ...inputs) {
inputs = !inputs ? [] : inputs;
var time = getTime();
var content = parseDir(dir, inputs);
var output = color("[ " + time + " ] ").green + content;
return console.log(output);
}
function warn(dir, ...inputs) {
inputs = !inputs ? [] : inputs;
var time = getTime();
var content = parseDir(dir, inputs);
var output = color("[ " + time + " ] ").yellow + content;
return console.log(output);
}
function error(dir, ...inputs) {
inputs = !inputs ? [] : inputs;
var time = getTime();
var content = parseDir(dir, inputs);
var output = color("[ " + time + " ] ").red + content;
return console.log(output);
}
function wall() {
var content = color("====================================================").blue;
return console.log(content);
}
function input(dir, col = "green", timeout = 30000) {
var time = getTime();
var content = parseDir(dir, []);
var output = color("[ " + time + " ] ")[col] + content;
process.stdout.write(output);
return new Promise((resolve, reject) => {
var data = "";
var inputReceived = false;
var timer = setTimeout(() => {
if (!inputReceived) {
process.stdout.write("\n");
resolve(data.trim());
}
}, timeout);
process.stdin.setEncoding("utf8");
process.stdin.on("data", (chunk) => {
clearTimeout(timer);
data += chunk;
inputReceived = true;
process.stdin.pause();
resolve(data.trim());
});
process.stdin.on("error", (err) => {
clearTimeout(timer);
reject(err);
});
process.stdin.on("end", () => {
clearTimeout(timer);
resolve(data.trim());
});
process.stdin.resume();
});
}
module.exports = {
info,
warn,
error,
wall,
color,
input,
parseDir
}