FridayNightFunkinBoyfriendBot/modules/console.js

231 lines
6.9 KiB
JavaScript
Raw Normal View History

2024-02-15 11:04:05 -05:00
const CommandSource = require("../CommandModules/command_source");
// idk if it's modules or utils though
//modules is automatically loaded
function Console(bot, options, context, source) {
let ratelimit = 0
bot.console = {
readline: null,
username: bot.username,
consoleServer: "all",
//bot._client.username,
useReadlineInterface(rl) {
this.readline = rl;
rl.on("line", (line) => {
if (
bot.options.host !== this.consoleServer &&
this.consoleServer !== "all"
)
return;
if (line.startsWith(`${bot.options.Console.prefix}`)) {
return bot.commandManager.executeString(
bot.console.source,
line.substring(2),
//null
`${process.env["FNFBoyfriendBot_Owner_key"]}`,
);
}
if (line === ",kill") process.exit();
if (line === ",reconnect") bot._client.end();
//probably gotta somehow have it get its username
//tried that already didnt work just errored
//profile or smh :shrug:
// what does it have to be
if (line.startsWith("")) {
if(bot.options.Core.CorelessMode){
return bot.commandManager.executeString(
bot.console.source,
"echo " + line.substring(0),
)
}else {
return bot.commandManager.executeString(
bot.console.source,
"console " + line.substring(0),
);
}
}
//bot.commandManager.executeString(bot.console.source, line)
});
const now = new Date().toLocaleString("en-US", {
timeZone: "America/CHICAGO",
});
const time = new Date().toLocaleTimeString("en-US", {
timeZone: "America/CHICAGO",
});
const date = new Date().toLocaleDateString("en-US", {
timeZone: "America/CHICAGO",
});
// const source = context.source
const prefix = `<\x1b[0m\x1b[35m${time} \x1b[0m\x1b[96m${date}\x1b[0m> [${bot.options.host}:${bot.options.port}\x1b[0m] `;
function log(...args) {
rl.output.write("\x1b[2K\r");
console.log(args.toString());
rl._refreshLine();
}
bot.console.warn = function (error) {
log(prefix + `[\x1b[0m\x1b[93mWARN\x1b[0m]: ${bot.getMessageAsPrismarine(error)?.toAnsi()}`);
};
bot.console.error = function (error) {
log(prefix + `[\x1b[0m\x1b[31mERROR\x1b[0m]: ${error}`);
};
bot.console.info = function (message) {
log(prefix + `[\x1b[0m\x1b[32mInfo\x1b[0m]: ` + bot.getMessageAsPrismarine(message)?.toAnsi());
};
bot.console.log = function (message, ansi) {
log(prefix + `[\x1b[0m\x1b[33mLOGS\x1b[0m]: ` + bot.getMessageAsPrismarine(message)?.toAnsi());
};
bot.console.debug = function (message, ansi) {
log(prefix + `[\x1b[0m\x1b[33mDEBUG\x1b[0m]: ` + bot.getMessageAsPrismarine(message)?.toAnsi());
};
/* const ansimap = {
0: '\x1b[0m\x1b[30m',
1: '\x1b[0m\x1b[34m',
2: '\x1b[0m\x1b[32m',
3: '\x1b[0m\x1b[36m',
4: '\x1b[0m\x1b[31m',
5: '\x1b[0m\x1b[35m',
6: '\x1b[0m\x1b[33m',
7: '\x1b[0m\x1b[37m',
8: '\x1b[0m\x1b[90m',
9: '\x1b[0m\x1b[94m',
a: '\x1b[0m\x1b[92m',
b: '\x1b[0m\x1b[96m',
c: '\x1b[0m\x1b[91m',
d: '\x1b[0m\x1b[95m',
e: '\x1b[0m\x1b[93m',
f: '\x1b[0m\x1b[97m',
r: '\x1b[0m',
l: '\x1b[1m',
o: '\x1b[3m',
n: '\x1b[4m',
m: '\x1b[9m',
k: '\x1b[6m'
}*/
const isConsole = bot.username ? true : false;
bot.console.source = new CommandSource(bot.username, {
console: true,
discord: false,
});
bot.console.source.sendFeedback = (message) => {
const ansi = bot.getMessageAsPrismarine(message)?.toAnsi();
if (!bot.options.Console.input) return;
if (!bot.options.Console.enabled) return;
bot.console.info(ansi);
};
bot.on("parsed_message", (data) => {
if (data.type !== "minecraft:chat") return;
const plainMessage = bot
.getMessageAsPrismarine(data.contents)
?.toString();
if (plainMessage.includes("frog")) {
bot.chat("Man I Love Frogs");
}
return;
});
bot.on("message", (message) => {
function log(...args) {
rl.output.write("\x1b[2K\r");
console.log(args.toString());
rl._refreshLine();
}
const time = new Date().toLocaleTimeString("en-US", {
timeZone: "America/CHICAGO",
});
const date = new Date().toLocaleDateString("en-US", {
timeZone: "America/CHICAGO",
});
const prefixy = `<\x1b[0m\x1b[35m${time} \x1b[0m\x1b[96m${date}\x1b[0m> [${bot.options.host}:${bot.options.port}\x1b[0m] `;
bot.console.logs = function (message, ansi) {
log(prefixy + `[\x1b[0m\x1b[33mLOGS\x1b[0m]: ` + message);
};
const lang = require(`../util/language/lolus.json`);
const ansi = bot.getMessageAsPrismarine(message)?.toAnsi(lang);
const string = bot.getMessageAsPrismarine(message)?.toString(lang);
const now = new Date().toLocaleString("en-US", {
timeZone: "America/CHICAGO",
});
const time2 = new Date().toLocaleTimeString("en-US", {
timeZone: "America/CHICAGO",
});
const date2 = new Date().toLocaleDateString("en-US", {
timeZone: "America/CHICAGO",
});
// if (!bot.options.Console.input) return;
if (!bot.options.Console.enabled) return;
ratelimit++
setTimeout(() => {
ratelimit--
}, 1000)
if (ratelimit > 35) { // ,.
// bot.console.logs = function () {}
} else {
//bot.console.log(`${ansi}`);
//oh real
//can i change the variable name so its name isnt confusing?
bot.console.logs(`${ansi}`);
// logger(`<${time} ${date}> [${bot.options.host}:${bot.options.port}] [LOGS]: ${string}`)
if (bot.console && bot.console.filelogger) {
bot.console.filelogger(`<${time} ${date}> [${bot.options.host}:${bot.options.port}] [LOGS]: ${string}`)
}//nothing is logging to the file
/*
try{
ratelimit++
setTimeout(() => {
ratelimit--
}, 1000)
if (ratelimit > 5) { // ,.
source.sendFeedback({text:'You are using commands to fast!',color:'dark_red'})
// this isn't blocking running the command you know that right?
} else {
bot.commandManager.executeString(source, command);
}//oh real
//can i change the variable name so its name isnt confusing?
}catch(e){
console.log(e.stack)
//then where to move this?
};
*/
};
})
}
}
}
module.exports = Console;