owobot/plugins/command.js
2024-07-22 18:11:27 -04:00

83 lines
3.2 KiB
JavaScript
Executable file

const fs=require("fs");
const Command=require("../util/Command.js");
const hashcheck=require("../util/hashcheck.js");
const settings = require("../settings.json");
let cmds=Object.create(null);
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){
console.log("Executed too early, "+(Date.now-b.lastCmd)+"ms left");
return;
}
const cmd=text.split(" ");
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:"You do not have permission to run this command. If you have permission, please make sure you put the command hash at the end, or ran the command through your client's hashing system."
});
b.tellraw(uuid,{
text:"Your permission level: "+verify
});
b.tellraw(uuid,{
text:"Command requires: "+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.chat("An error occured (check console for more info)")
}
}
}
b.printHelp=(uuid,prefix)=>{
let helpCmds=[];
for(const i in cmds){
if(cmds[i].hidden) continue;
helpCmds.push(prefix+i)
}
b.tellraw(uuid,{"text":"Commands: "+helpCmds.join(" ")});
}
b.printCmdHelp=(uuid,cmd)=>{
b.tellraw(uuid,{"text":cmd+cmds[cmd].usage+" - "+cmds[cmd].desc});
}
},
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]}`);
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,
hidden:true,
consoleIndex:cmds[commandName].consoleIndex
};
}
}
} catch (e) { console.log(e); }
}
},
cmds
}