const fs=require("fs"); const Command=require("../util/Command.js"); const hashcheck=require("../util/hashcheck.js"); const settings = require("../settings.json"); const getMessage = require('../util/lang.js'); let cmds=Object.create(null); const sortHelp=function sortHelp(c1, c2){ const level1 = cmds[c1.with[1]].level?cmds[c1.with[1]].level:0; const level2 = cmds[c2.with[1]].level?cmds[c2.with[1]].level:0; return level1 - level2 } module.exports={ load:()=>{ module.exports.loadCMD(); }, loadBot:(b)=>{ b.prefix=settings.prefix; b.lastCmd=0; b.runCommand=(name, uuid, text, prefix)=>{ if(uuid=="00000000-0000-0000-0000-000000000000") return; if(Date.now()-b.lastCmd<=1000) return; b.lastCmd=Date.now(); const cmd=text.split(" "); let lang=settings.defaultLang; let verify=hashcheck(cmd); if(verify>0){ text=cmd.slice(0,cmd.length-1).join(" "); } if(cmds[cmd[0].toLowerCase()]){ const command = cmds[cmd[0].toLowerCase()]; if(command.level!==undefined && command.level>verify){ b.tellraw(uuid,{ text:getMessage(lang,"command.disallowed.perms") }); b.tellraw(uuid,{ text:getMessage(lang,"command.disallowed.perms.yourLevel",[verify+""]) }); b.tellraw(uuid,{ text:getMessage(lang,"command.disallowed.perms.cmdLevel",[command.level+""]) }); return; } try{ cmds[cmd[0].toLowerCase()].execute(new Command(uuid,name,"nick N/A",text,prefix,b,verify)) } catch(e) { console.log(e); b.tellraw(uuid,{ text:getMessage(lang,"command.error"), color: "red", hoverEvent:{ action: "show_text", value:{ "text": e.stack } } }); } } } b.printHelp=(uuid,prefix,lang)=>{ let commandList=[]; for(const i in cmds){ if(cmds[i].hidden) continue; let cmdColor; switch (cmds[i].level){ case 0: cmdColor = "green"; break; case 1: cmdColor = "red"; break; case 2: cmdColor = "dark_red"; break; case 3: cmdColor = "dark_gray"; break; default: cmdColor = "gray"; } commandList.push( { translate: "%s%s ", color: cmdColor, with: [ prefix, i ] } ) } b.tellraw(uuid,{ translate: "%s: %s", with: [ getMessage(lang,"command.help.cmdList"), commandList.sort(sortHelp) ] }) } b.printCmdHelp=(uuid,cmd,lang)=>{ if(!cmds[cmd]){ b.tellraw(uuid,{text:getMessage(lang,"command.help.noCommand")}); return; } let usage=getMessage(lang,`command.${cmd}.usage`).split("||"); let desc=getMessage(lang,`command.${cmd}.desc`); if(cmds[cmd].usage){ usage=cmds[cmd].usage.split("||"); } if(cmds[cmd].desc){ desc=cmds[cmd].desc; } //b.tellraw(uuid,{"text":getMessage(lang,"command.help.commandInfo",[cmd,usage,desc])}); for(const i in usage){ b.tellraw(uuid,{text:getMessage(lang,"command.help.commandUsage",[cmd,usage[i]])}); } b.tellraw(uuid,{text:getMessage(lang,"command.help.commandDesc",[desc])}); const permsN=getMessage(lang,"command.help.permsNormal"); const permsT=getMessage(lang,"command.help.permsTrusted"); const permsO=getMessage(lang,"command.help.permsOwner"); const permsC=getMessage(lang,"command.help.permsConsole"); const rPerms=cmds[cmd].level?cmds[cmd].level:0; b.tellraw(uuid,{text:getMessage(lang,"command.help.commandPerms",[[permsN,permsT,permsO,permsC][rPerms]])}); } }, loadCMD:()=>{ const botplug = [] const bpl = fs.readdirSync('./plugins/commands') for (const i in bpl) { if (!bpl[i].endsWith('.js')) { continue } try { commandName=bpl[i].split(".js")[0]; cmds[commandName]=require(`./commands/${bpl[i]}`); if(cmds[commandName].level === undefined){ cmds[commandName].level = 0; } console.log("Loaded command "+commandName); if(cmds[commandName].aliases){ for(const j in cmds[commandName].aliases){ cmds[cmds[commandName].aliases[j]]={ execute:cmds[commandName].execute, desc:"Alias to "+commandName, usage:cmds[commandName].usage, level:cmds[commandName].level, hidden:true, consoleIndex:cmds[commandName].consoleIndex }; } } } catch (e) { console.log(e); } } }, cmds }