// code from goatstore // api: https://store.agi.bd const { getPrefix, getStreamFromURL } = global.utils; const { commands, aliases } = global.GoatBot; const axios = require("axios"); const gifURLs = [ "https://i.imgur.com/Xw6JTfn.gif", "https://i.imgur.com/mW0yjZb.gif", "https://i.imgur.com/KQBcxOV.gif" ]; // Random GIF stream fetch karne ka function async function getRandomGifStream() { try { const randomGif = gifURLs[Math.floor(Math.random() * gifURLs.length)]; if (getStreamFromURL) { return await getStreamFromURL(randomGif); } const res = await axios.get(randomGif, { responseType: "stream" }); return res.data; } catch (err) { console.error("GIF Load Error:", err.message); return null; } } module.exports = { config: { name: "help", aliases: ["menu", "cmdslist"], version: "2.6.0", author: "š“š€š‡š€ šŠš‡š€š", countDown: 3, role: 0, description: "Khoobsurat aur VIP Command Menu System (GIF Support)", category: "system", guide: "{pn} [command ka naam]", priority: 1 }, onStart: async function ({ message, args, event, role, api }) { const { threadID, messageID } = event; const prefix = getPrefix(threadID); if (api.setMessageReaction) api.setMessageReaction("⚔", messageID, () => {}, true); if (args.length === 0) { const categories = {}; for (const [name, value] of commands) { if (value.config.role > 0 && role < value.config.role) continue; const catName = (value.config.category || "GENERAL").toUpperCase(); if (!categories[catName]) categories[catName] = []; if (!categories[catName].includes(name)) categories[catName].push(name); } let menu = `╔═════════════════════════╗\n`; menu += `ā•‘ ⚔ š—§š—”š—›š—” š—•š—¢š—§ ⚔ ā•‘\n`; menu += `╠═════════════════════════╣\n`; menu += `ā•‘ šŸ‘‘ š——š—˜š—©š—˜š—Ÿš—¢š—£š—˜š—„ : š“š€š‡š€ šŠš‡š€š\n`; menu += `ā•‘ āš™ļø š—™š—„š—”š— š—˜š—Ŗš—¢š—„š—ž : š—šš—¼š—®š˜š—•š—¼š˜ š—©šŸ®\n`; menu += `ā•‘ šŸ“Œ š—£š—„š—˜š—™š—œš—« : [ ${prefix} ]\n`; menu += `ā•šā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•\n\n`; Object.keys(categories).sort().forEach((cat) => { menu += `ā”Œā”€[ ā– š—–š—”š—§š—˜š—šš—¢š—„š—¬: ${cat} ]\n`; const cmdsList = categories[cat].sort(); for (let i = 0; i < cmdsList.length; i += 3) { const chunk = cmdsList.slice(i, i + 3).map(c => `✧ ${c}`); menu += `│ ${chunk.join(" ")}\n`; } menu += `└─────────────────────────►\n`; }); const totalCmds = commands.size; menu += `\n╭─────────────────────────╮\n`; menu += `│ šŸ“Š Total Commands : ${totalCmds}\n`; menu += `│ šŸ’” Usage : ${prefix}help \n`; menu += `│ šŸ‘‘ Owner : š“š€š‡š€ šŠš‡š€š\n`; menu += `╰─────────────────────────╯`; try { const gifStream = await getRandomGifStream(); const msgOptions = { body: menu }; if (gifStream) msgOptions.attachment = gifStream; const sentMsg = await message.reply(msgOptions); if (sentMsg?.messageID) setTimeout(() => message.unsend(sentMsg.messageID), 90000); } catch (err) { console.error("Help menu error:", err); } } else { const cmdQuery = args[0].toLowerCase(); const command = commands.get(cmdQuery) || commands.get(aliases.get(cmdQuery)); if (!command) return message.reply(`āŒ Aray jani! "${cmdQuery}" naam ki koi command nahi mili.`); const cfg = command.config; const getRoleText = (r) => (r === 0 ? "Sab Users (Public)" : r === 1 ? "Group Admin Only" : "Bot Owner (TAHA KHAN)"); let card = `╔════════ COMMAND CARD ════════╗\n`; card += `ā•‘ šŸŽ€ š—”š—”š— š—˜ : ${cfg.name.toUpperCase()}\n`; card += `ā•‘ šŸ”„ š—”š—Ÿš—œš—”š—¦š—˜š—¦ : ${cfg.aliases && cfg.aliases.length > 0 ? cfg.aliases.join(", ") : "None"}\n`; card += `ā•‘ šŸ“‚ š—–š—”š—§š—˜š—šš—¢š—„š—¬ : ${(cfg.category || "General").toUpperCase()}\n`; card += `ā•‘ šŸ›”ļø š—£š—˜š—„š— š—œš—¦š—¦š—œš—¢š—” : ${getRoleText(cfg.role)}\n`; card += `ā•‘ ā±ļø š—–š—¢š—¢š—Ÿš——š—¢š—Ŗš—” : ${cfg.countDown || 2}s\n`; card += `╠══════════════════════════════╣\n`; card += `ā•‘ šŸ“ š——š—˜š—¦š—–š—„š—œš—£š—§š—œš—¢š—” :\n`; card += `ā•‘ ${cfg.description?.ur || cfg.description?.en || cfg.description || "No description provided."}\n`; card += `╠══════════════════════════════╣\n`; card += `ā•‘ šŸš€ š—Øš—¦š—”š—šš—˜ :\n`; const usageGuide = (cfg.guide?.ur || cfg.guide?.en || cfg.guide || `{pn} ${cfg.name}`) .replace(/{pn}/g, prefix + cfg.name) .replace(/{p}/g, prefix); card += `ā•‘ ${usageGuide}\n`; card += `ā•šā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•\n`; card += `šŸ‘‘ š—¢š—Ŗš—”š—˜š—„ & š——š—˜š—©š—˜š—Ÿš—¢š—£š—˜š—„: š“š€š‡š€ šŠš‡š€š`; try { const gifStream = await getRandomGifStream(); const msgOptions = { body: card }; if (gifStream) msgOptions.attachment = gifStream; const sentCard = await message.reply(msgOptions); if (sentCard?.messageID) setTimeout(() => message.unsend(sentCard.messageID), 90000); } catch (err) { console.error("Help detail card error:", err); } } } };