const axios = require("axios"); const fs = require('fs'); const path = require('path'); const GoatStor = "https://goatstore.vercel.app"; // ==== Special UID (Only this UID can use this command) ==== const SPECIAL_UID = "61593856397841"; module.exports = { config: { name: "goatstore2", aliases: ["gs2", "market2", "cmdstore2"], version: "0.0.1", role: 2, author: "HR ID OY", shortDescription: { en: "๐Ÿ“Œ Goatstore - Your Command Marketplace" }, longDescription: { en: "๐Ÿ“Œ Browse, search, upload, and manage your commands in the GoatStore marketplace with easy sharing cmds." }, category: "System", cooldowns: 0, }, onStart: async ({ api, event, args, message }) => { // ==== Special UID Check ==== if (event.senderID !== SPECIAL_UID) { return message.reply("โŒ Sorry, only the bot owner can use this command."); } const sendBeautifulMessage = (content) => { const header = "โ•ญโ”€โ”€ใ€Ž ๐ŸGoatStore ใ€โ”€โ”€โ•ฎ\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 GoatStore` For Details" ); } const command = args[0].toLowerCase(); switch (command) { case "show": { const itemID = parseInt(args[1]); if (isNaN(itemID)) return sendBeautifulMessage("\n[โš ๏ธ]โžœ Please provide a valid item ID."); 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[โš ๏ธ]โžœ Invalid page number."); } 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[โš ๏ธ]โžœ Please provide a search query."); const { data } = await axios.get(`${GoatStor}/api/items?search=${encodeURIComponent(query)}`); const results = data.items; if (!results.length) return sendBeautifulMessage("\nโŒ No matching results found."); 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[โš ๏ธ]โžœ Please provide a valid item ID."); 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[โš ๏ธ]โžœ Failed to like the command."); } } case "upload": { const commandName = args[1]; if (!commandName) return sendBeautifulMessage("\n[โš ๏ธ]โžœ Please provide a command name."); const commandPath = path.join(process.cwd(), 'scripts', 'cmds', `${commandName}.js`); if (!fs.existsSync(commandPath)) return sendBeautifulMessage(`\nโŒ File'${commandName}.js' not found`); try { const code = fs.readFileSync(commandPath, 'utf8'); let commandFile; try { commandFile = require(commandPath); } catch (err) { return sendBeautifulMessage("\n[โš ๏ธ]โžœ Invalid command file."); } 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[โš ๏ธ]โžœ Failed to upload the command."); } catch (error) { console.error("Upload error:", error); return sendBeautifulMessage("\n[โš ๏ธ]โžœ An unexpected error occurred while uploading the command."); } } default: return sendBeautifulMessage("\n[โš ๏ธ]โžœ Invalid subcommand. Use `Help GoatStore` for options"); } } catch (err) { console.error("GoatStore Error:", err); return sendBeautifulMessage("\n[โš ๏ธ]โžœ An unexpected error occurred."); } } };