goat
command
help
Show all commands
0
views
0
likes
0
installs
Aliases: menu, commands
raw source
const fs = require("fs-extra");
const path = require("path");
const https = require("https");
module.exports = {
config: {
name: "help",
aliases: ["menu", "commands"],
version: "6.4",
author: "EryXenX",
shortDescription: "Show all commands",
longDescription: "Show all commands in clean UI",
category: "system",
guide: "{pn}help [command name]"
},
onStart: async function ({ message, args, prefix }) {
const allCommands = global.GoatBot.commands;
const fancyFont = (str) =>
str.replace(/[A-Za-z]/g, (c) => {
const map = {
A:"๐",B:"๐",C:"๐",D:"๐",E:"๐",F:"๐
",G:"๐",H:"๐",
I:"๐",J:"๐",K:"๐",L:"๐",M:"๐",N:"๐",O:"๐",P:"๐",
Q:"๐",R:"๐",S:"๐",T:"๐",U:"๐",V:"๐",W:"๐",X:"๐",
Y:"๐",Z:"๐",
a:"๐",b:"๐",c:"๐",d:"๐",e:"๐",f:"๐",g:"๐ ",h:"๐ก",
i:"๐ข",j:"๐ฃ",k:"๐ค",l:"๐ฅ",m:"๐ฆ",n:"๐ง",o:"๐จ",p:"๐ฉ",
q:"๐ช",r:"๐ซ",s:"๐ฌ",t:"๐ญ",u:"๐ฎ",v:"๐ฏ",w:"๐ฐ",x:"๐ฑ",
y:"๐ฒ",z:"๐ณ"
};
return map[c] || c;
});
const categoryFont = (str) =>
str.split("").map(c => {
const map = {
A:"๐",B:"๐",C:"๐",D:"๐",E:"๐",F:"๐
",G:"๐",H:"๐",
I:"๐",J:"๐",K:"๐",L:"๐",M:"๐",N:"๐",O:"๐",P:"๐",
Q:"๐",R:"๐",S:"๐",T:"๐",U:"๐",V:"๐",W:"๐",X:"๐",
Y:"๐",Z:"๐"
};
return map[c] || c;
}).join("");
const cleanCategoryName = (text) => text ? text.toLowerCase() : "others";
if (args[0]) {
const cmdName = args[0].toLowerCase();
const cmd =
allCommands.get(cmdName) ||
[...allCommands.values()].find(c => c.config.aliases?.includes(cmdName));
if (!cmd)
return message.reply(
`โ ${fancyFont(`Command '${cmdName}' not found!`)}
โค Try ${prefix}help to see full list`
);
const usage = typeof cmd.config.guide === "string"
? cmd.config.guide.replace("{pn}", cmd.config.name)
: cmd.config.name;
const infoMsg =
`โโโโโโโโโโโโโโโ
๐งฉ ๐๐๐ ๐๐๐
๐
โโโโโโโโโโโโโโโ
โฆ Name : ${cmd.config.name}
โฆ Aliases : ${cmd.config.aliases?.join(", ") || "None"}
โฆ Category : ${categoryFont((cmd.config.category || "Others").toUpperCase())}
โฆ Version : v${cmd.config.version || "1.0"}
โฆ Author : ${cmd.config.author || "Unknown"}
โฆ Usage : ${prefix}${usage}
โโโโโโโโโโโโโโโ
๐ ${(cmd.config.longDescription || cmd.config.shortDescription || "No description")}`;
return message.reply(infoMsg);
}
const categories = {};
for (const [name, cmd] of allCommands) {
const cat = cleanCategoryName(cmd.config.category);
if (!categories[cat]) categories[cat] = [];
categories[cat].push(name);
}
let msg =
`โญโ ๐๐๐๐๐๐๐๐ ๐๐๐๐
โ Prefix : ${prefix}
โ Total : ${allCommands.size}
โ Author : Ridh `;
for (const cat of Object.keys(categories).sort()) {
const catTitle = categoryFont(cat.toUpperCase());
msg += `\nโโ ${catTitle} โโ\n`;
for (const cmdName of categories[cat].sort()) {
msg += `โ โ ${fancyFont(cmdName)}\n`;
}
msg += `โโโโโโโโโโโโโโโ\n`;
}
msg += `\nโฐโ Use: ${prefix}help <command>`;
const gifURLs = [
"https://i.imgur.com/Xw6JTfn.gif",
"https://i.imgur.com/mW0yjZb.gif",
"https://i.imgur.com/KQBcxOV.gif"
];
const randomGifURL = gifURLs[Math.floor(Math.random() * gifURLs.length)];
const gifFolder = path.join(__dirname, "cache");
if (!fs.existsSync(gifFolder))
fs.mkdirSync(gifFolder, { recursive: true });
const gifName = path.basename(randomGifURL);
const gifPath = path.join(gifFolder, gifName);
if (!fs.existsSync(gifPath))
await downloadGif(randomGifURL, gifPath);
return message.reply({
body: msg,
attachment: fs.createReadStream(gifPath)
});
}
};
function downloadGif(url, dest) {
return new Promise((resolve, reject) => {
const file = fs.createWriteStream(dest);
https.get(url, (res) => {
if (res.statusCode !== 200) {
fs.unlink(dest, () => {});
return reject();
}
res.pipe(file);
file.on("finish", () => file.close(resolve));
}).on("error", (err) => {
fs.unlink(dest, () => {});
reject(err);
});
});
}