// code from goatstore // api: https://store.agi.bd const axios = require("axios"); const fs = require('fs'); const path = require('path'); const GoatStor = "https://goatstore.vercel.app"; module.exports = { config: { name: "goatstor", aliases: ["gs", "market"], version: "0.0.1", role: 0, author: "ArYAN", shortDescription: { en: "šŸ“Œ Goatstor - Your Command Marketplace" }, longDescription: { en: "šŸ“Œ Browse, search, upload, and manage your commands in the GoatStor marketplace with easy sharing cmds." }, category: "š— š—®š—æš—øš—²š˜", cooldowns: 0, }, onStart: async ({ api, event, args, message }) => { const sendBeautifulMessage = (content) => { const header = "ā•­ā”€ā”€ć€Ž šŸš—šš—¼š—®š˜š—¦š˜š—¼š—æ ć€ā”€ā”€ā•®\n"; const footer = "\n╰──────────────╯"; return message.reply(header + content + footer); }; try { if (!args[0]) { return sendBeautifulMessage( "\n" + `ā•­ā”€āÆ ${event.body} show \nā”œ šŸ“¦ Get command code\nā•° Example: show 1\n\n` + `ā•­ā”€āÆ ${event.body} page \nā”œ šŸ“„ Browse commands\nā•° Example: page 1\n\n` + `ā•­ā”€āÆ ${event.body} search \nā”œ šŸ” Search commands\nā•° Example: search music\n\n` + `ā•­ā”€āÆ ${event.body} trending\nā”œ šŸ”„ View trending\nā•° Most popular commands\n\n` + `ā•­ā”€āÆ ${event.body} status\nā”œ šŸ“Š View statistics\nā•° Marketplace insights\n\n` + `ā•­ā”€āÆ ${event.body} like \nā”œ šŸ’ Like a command\nā•° Example: like 1\n\n` + `ā•­ā”€āÆ ${event.body} upload \nā”œ ā¬†ļø Upload command\nā•° Example: upload goatStor\n\n` + "šŸ’« š—§š—¶š—½: Use `Help GoatStor` For Details" ); } const command = args[0].toLowerCase(); switch (command) { case "show": { const itemID = parseInt(args[1]); if (isNaN(itemID)) return sendBeautifulMessage("\n[āšœļø]āžœ šš„šžššš¬šž š©š«šØšÆš¢ššž šš šÆššš„š¢š š¢š­šžš¦ šˆšƒ."); const response = await axios.get(`${GoatStor}/api/item/${itemID}`); const item = response.data; const bangladeshTime = new Date(item.createdAt).toLocaleString('en-US', { timeZone: 'Asia/Dhaka' }); return sendBeautifulMessage( "\n" + `ā•­ā”€āÆ šŸ‘‘ š—”š—®š—ŗš—²\nā•° ${item.itemName}\n\n` + `ā•­ā”€āÆ šŸ†” š—œš——\nā•° ${item.itemID}\n\n` + `ā•­ā”€āÆ āš™ļø š—§š˜†š—½š—²\nā•° ${item.type || 'Unknown'}\n\n` + `ā•­ā”€āÆ šŸ“ š——š—²š˜€š—°š—æš—¶š—½š˜š—¶š—¼š—»\nā•° ${item.description}\n\n` + `ā•­ā”€āÆ šŸ‘Øā€šŸ’» š—”š˜‚š˜š—µš—¼š—æ\nā•° ${item.authorName}\n\n` + `ā•­ā”€āÆ šŸ“… š—”š—±š—±š—²š—±\nā•° ${bangladeshTime}\n\n` + `ā•­ā”€āÆ šŸ‘€ š—©š—¶š—²š˜„š˜€\nā•° ${item.views}\n\n` + `ā•­ā”€āÆ šŸ’ š—Ÿš—¶š—øš—²š˜€\nā•° ${item.likes}\n\n` + `ā•­ā”€āÆ šŸ”— š—„š—®š˜„ š—Ÿš—¶š—»š—ø\nā•° ${GoatStor}/raw/${item.rawID}` ); } case "page": { const page = parseInt(args[1]) || 1; const { data: { items, total } } = await axios.get(`${GoatStor}/api/items?page=${page}&limit=5`); const totalPages = Math.ceil(total / 5); if (page <= 0 || page > totalPages) { return sendBeautifulMessage("\n[āšœļø]āžœ šˆš§šÆššš„š¢š š©ššš šž š§š®š¦š›šžš«."); } const itemsList = items.map((item, index) => `ā•­ā”€āÆ ${index + 1}. šŸ“¦ ${item.itemName}\n` + `ā”œ šŸ†” š—œš——: ${item.itemID}\n` + `ā”œ āš™ļø š—§š˜†š—½š—²: ${item.type}\n` + `ā”œ šŸ“ š——š—²š˜€š—°š—æš—¶š—½š˜š—¶š—¼š—»: ${item.description}\n` + `ā”œ šŸ‘€ š—©š—¶š—²š˜„š˜€: ${item.views}\n` + `ā”œ šŸ’ š—Ÿš—¶š—øš—²š˜€: ${item.likes}\n` + `ā•° šŸ‘Øā€šŸ’» š—”š˜‚š˜š—µš—¼š—æ: ${item.authorName}\n` ).join("\n"); return sendBeautifulMessage(`\nšŸ“„ š—£š—®š—“š—² ${page}/${totalPages}\n\n${itemsList}`); } case "search": { const query = args.slice(1).join(" "); if (!query) return sendBeautifulMessage("\n[āšœļø]āžœ šš„šžššš¬šž š©š«šØšÆš¢ššž šš š¬šžššš«šœš” šŖš®šžš«š². "); const { data } = await axios.get(`${GoatStor}/api/items?search=${encodeURIComponent(query)}`); const results = data.items; if (!results.length) return sendBeautifulMessage("\nāŒ ššØ š¦ššš­šœš”š¢š§š  šœšØš¦š¦ššš§šš¬ šŸšØš®š§š."); const searchList = results.slice(0, 5).map((item, index) => `ā•­ā”€āÆ ${index + 1}. šŸ“¦ ${item.itemName}\n` + `ā”œ šŸ†” š—œš——: ${item.itemID}\n` + `ā”œ āš™ļø š—§š˜†š—½š—²: ${item.type}\n` + `ā”œ šŸ‘€ š—©š—¶š—²š˜„š˜€: ${item.views}\n` + `ā”œ šŸ’ š—Ÿš—¶š—øš—²š˜€: ${item.likes}\n` + `ā•° šŸ‘Øā€šŸ’» š—”š˜‚š˜š—µš—¼š—æ: ${item.authorName}\n` ).join("\n"); return sendBeautifulMessage(`\nšŸ“ Query: "${query}"\n\n${searchList}`); } case "trending": { const { data } = await axios.get(`${GoatStor}/api/trending`); const trendingList = data.slice(0, 5).map((item, index) => `ā•­ā”€āÆ ${index + 1}. šŸ”„ ${item.itemName}\n` + `ā”œ šŸ’ š—Ÿš—¶š—øš—²š˜€: ${item.likes}\n` + `ā•° šŸ‘€ š—©š—¶š—²š˜„š˜€: ${item.views}\n` ).join("\n"); return sendBeautifulMessage(`\n${trendingList}`); } case "status": { const { data: stats } = await axios.get(`${GoatStor}/api/stats`); const { hosting, totalCommands, totalLikes, dailyActiveUsers, popularTags, topAuthors, topViewed } = stats; const uptimeStr = `${hosting?.uptime?.years}y ${hosting?.uptime?.months}m ${hosting?.uptime?.days}d ${hosting?.uptime?.hours}h ${hosting?.uptime?.minutes}m ${hosting?.uptime?.seconds}s`; const tagList = popularTags.map((tag, i) => `${i + 1}. ${tag._id || 'Unknown'} (${tag.count})` ).join('\n'); const authorList = topAuthors.map((a, i) => `${i + 1}. ${a._id || 'Unknown'} (${a.count})` ).join('\n'); const viewedList = topViewed.map((v, i) => `${i + 1}. ${v.itemName} š—œš——: ${v.itemID}\n š—©š—¶š—²š˜„š˜€: ${v.views}` ).join('\n\n'); return sendBeautifulMessage( `\nā•­ā”€āÆ šŸ“¦ Total Commands: ${totalCommands}\n` + `ā”œā”€āÆ šŸ’ Total Liks: ${totalLikes}\n` + `ā”œā”€āÆ šŸ‘„ Daily Users: ${dailyActiveUsers}\n` + `ā•°ā”€āÆ ā° Uptime: ${uptimeStr}\n\n` + `ā•ā•ć€Ž 🌟 Top Authors ć€ā•ā•\nā•°${authorList}\n\n` + `ā•ā•ć€Ž šŸ”„ Most Viewed ć€ā•ā•\nā•°${viewedList}\n` + ` 🌐 š—›š—¼š˜€š˜š—¶š—»š—“ š—œš—»š—³š—¼\n` + `ā•­ā”€āÆ šŸ’» š—¦š˜†š˜€š˜š—²š—ŗ\n` + `ā”œ šŸ”§ ${hosting.system.platform} (${hosting.system.arch})\n` + `ā”œ šŸ“Œ Node ${hosting.system.nodeVersion}\n` + `ā•° šŸ–„ļø CPU Cores: ${hosting.system.cpuCores}` ); } case "like": { const likeItemId = parseInt(args[1]); if (isNaN(likeItemId)) return sendBeautifulMessage("\n[āš ļø]āžœ šš„šžššš¬šž š©š«šØšÆš¢ššž šš šÆššš„š¢š š¢š­šžš¦ šˆšƒ."); const { data } = await axios.post(`${GoatStor}/api/items/${likeItemId}/like`); if (data.success) { return sendBeautifulMessage( `\nā•­ā”€āÆ ✨ š—¦š˜š—®š˜š˜‚š˜€\nā•° Successfully liked!\n\nā•­ā”€āÆ šŸ’ š—§š—¼š˜š—®š—¹ š—Ÿš—¶š—øš—²š˜€\nā•° ${data.likes}` ); } else { return sendBeautifulMessage("\n[āšœļø]āžœ š…ššš¢š„šžš š­šØ š„š¢š¤šž šœšØš¦š¦ššš§š."); } } case "upload": { const commandName = args[1]; if (!commandName) return sendBeautifulMessage("\n[āšœļø]āžœ šš„šžššš¬šž š©š«šØšÆš¢ššž šš šœšØš¦š¦ššš§š š§ššš¦šž."); const commandPath = path.join(process.cwd(), 'scripts', 'cmds', `${commandName}.js`); if (!fs.existsSync(commandPath)) return sendBeautifulMessage(`\nāŒ š…š¢š„šž '${commandName}.js' š§šØš­ šŸšØš®š§š.`); try { const code = fs.readFileSync(commandPath, 'utf8'); let commandFile; try { commandFile = require(commandPath); } catch (err) { return sendBeautifulMessage("\n[āšœļø]āžœ šˆš§šÆššš„š¢š šœšØš¦š¦ššš§š šŸš¢š„šž šŸšØš«š¦ššš­."); } const uploadData = { itemName: commandFile.config?.name || commandName, description: commandFile.config?.longDescription?.en || commandFile.config?.shortDescription?.en || "No description", type: "GoatBot", code, authorName: commandFile.config?.author || event.senderID || "Unknown" }; const response = await axios.post(`${GoatStor}/v1/paste`, uploadData); if (response.data.success) { const { itemID, link } = response.data; return sendBeautifulMessage( "\n" + `ā•­ā”€āÆ āœ… š—¦š˜š—®š˜š˜‚š˜€\nā•° command uploaded successfully\n\n` + `ā•­ā”€āÆ šŸ‘‘ š—”š—®š—ŗš—²\nā•° ${uploadData.itemName}\n\n` + `ā•­ā”€āÆ šŸ†” š—œš——\nā•° ${itemID}\n\n` + `ā•­ā”€āÆ šŸ‘Øā€šŸ’» š—”š˜‚š˜š—µš—¼š—æ\nā•° ${uploadData.authorName}\n\n` + `ā•­ā”€āÆ šŸ”— š—„š—®š˜„ š—Ÿš—¶š—»š—ø\nā•° ${link}` ); } return sendBeautifulMessage("\n[āšœļø]āžœ š…ššš¢š„šžš š­šØ š®š©š„šØššš š­š”šž šœšØš¦š¦ššš§š."); } catch (error) { console.error("Upload error:", error); return sendBeautifulMessage("\n[āšœļø]āžœ š€š§ š®š§šžš±š©šžšœš­šžš šžš«š«šØš« šØšœšœš®š«š«šžš šš®š«š¢š§š  š®š©š„šØššš."); } } default: return sendBeautifulMessage("\n[āšœļø]āžœ šˆš§šÆššš„š¢š š¬š®š›šœšØš¦š¦ššš§š. š”š¬šž `š”šžš„š© š†šØššš­š’š­šØš«` šŸšØš« šØš©š­š¢šØš§š¬."); } } catch (err) { console.error("GoatStor Error:", err); return sendBeautifulMessage("\n[āšœļø]āžœ š€š§ š®š§šžš±š©šžšœš­šžš šžš«š«šØš« šØšœšœš®š«š«šžš. šš„šžššš¬šž šœš”šžšœš¤ š­š”šž šœšØš§š¬šØš„šž šŸšØš« ššžš­ššš¢š„š¬."); } } };