// code from goatstore // api: https://store.agi.bd const fs = require("fs-extra"); const path = require("path"); const DB_PATH = path.join(__dirname, "../database/settheme.json"); function loadDB() { try { fs.ensureFileSync(DB_PATH); if (!fs.readFileSync(DB_PATH, "utf8").trim()) { fs.writeJsonSync(DB_PATH, {}); } const data = fs.readJsonSync(DB_PATH); return data && typeof data === "object" ? data : {}; } catch (e) { return {}; } } function saveDB(data) { fs.ensureDirSync(path.dirname(DB_PATH)); fs.writeJsonSync(DB_PATH, data, { spaces: 2 }); } // ====================================================== // THEME PRESETS // ====================================================== const THEMES = { black: { color: "#000000", emoji: "๐Ÿ–ค", name: "Black" }, dark: { color: "#18191A", emoji: "๐ŸŒ‘", name: "Dark" }, blue: { color: "#0084FF", emoji: "๐Ÿ’™", name: "Blue" }, red: { color: "#FF0000", emoji: "โค๏ธ", name: "Red" }, green: { color: "#00C851", emoji: "๐Ÿ’š", name: "Green" }, purple: { color: "#8E44AD", emoji: "๐Ÿ’œ", name: "Purple" }, pink: { color: "#FF69B4", emoji: "๐Ÿ’—", name: "Pink" }, orange: { color: "#FF8800", emoji: "๐Ÿงก", name: "Orange" }, yellow: { color: "#FFD600", emoji: "๐Ÿ’›", name: "Yellow" }, cyber: { color: "#00FFFF", emoji: "๐Ÿค–", name: "Cyber" }, neon: { color: "#39FF14", emoji: "โšก", name: "Neon" }, galaxy: { color: "#5B2C83", emoji: "๐ŸŒŒ", name: "Galaxy" }, fire: { color: "#FF4500", emoji: "๐Ÿ”ฅ", name: "Fire" }, ocean: { color: "#006994", emoji: "๐ŸŒŠ", name: "Ocean" }, love: { color: "#FF4D6D", emoji: "๐Ÿ’•", name: "Love" }, gaming: { color: "#7B2CFF", emoji: "๐ŸŽฎ", name: "Gaming" }, horror: { color: "#2B0000", emoji: "๐Ÿ’€", name: "Horror" } }; // ====================================================== // DESCRIPTION ANALYZER // ====================================================== function detectTheme(text) { const input = text.toLowerCase(); let theme = { color: "#0084FF", emoji: "โœจ", name: "Custom" }; // Black / Dark if ( input.includes("black") || input.includes("เฆ•เฆพเฆฒเง‹") || input.includes("dark") || input.includes("เฆกเฆพเฆฐเงเฆ•") ) { theme = THEMES.black; } // Blue if ( input.includes("blue") || input.includes("เฆจเง€เฆฒ") ) { theme = THEMES.blue; } // Red if ( input.includes("red") || input.includes("เฆฒเฆพเฆฒ") ) { theme = THEMES.red; } // Green if ( input.includes("green") || input.includes("เฆธเฆฌเงเฆœ") ) { theme = THEMES.green; } // Purple if ( input.includes("purple") || input.includes("เฆฌเง‡เฆ—เงเฆจเฆฟ") ) { theme = THEMES.purple; } // Pink if ( input.includes("pink") || input.includes("เฆ—เง‹เฆฒเฆพเฆชเฆฟ") ) { theme = THEMES.pink; } // Orange if ( input.includes("orange") || input.includes("เฆ•เฆฎเฆฒเฆพ") ) { theme = THEMES.orange; } // Yellow if ( input.includes("yellow") || input.includes("เฆนเฆฒเงเฆฆ") ) { theme = THEMES.yellow; } // Cyber if ( input.includes("cyber") || input.includes("เฆธเฆพเฆ‡เฆฌเฆพเฆฐ") || input.includes("cyberpunk") ) { theme = THEMES.cyber; } // Neon if ( input.includes("neon") || input.includes("เฆจเฆฟเงŸเฆจ") || input.includes("เฆจเฆฟเฆฏเฆผเฆจ") ) { theme = THEMES.neon; } // Galaxy if ( input.includes("galaxy") || input.includes("space") || input.includes("เฆฎเฆนเฆพเฆ•เฆพเฆถ") || input.includes("เฆ—เงเฆฏเฆพเฆฒเฆพเฆ•เงเฆธเฆฟ") ) { theme = THEMES.galaxy; } // Fire if ( input.includes("fire") || input.includes("เฆ†เฆ—เงเฆจ") || input.includes("fiery") ) { theme = THEMES.fire; } // Ocean if ( input.includes("ocean") || input.includes("sea") || input.includes("เฆธเฆฎเงเฆฆเงเฆฐ") ) { theme = THEMES.ocean; } // Love if ( input.includes("love") || input.includes("romantic") || input.includes("เฆญเฆพเฆฒเง‹เฆฌเฆพเฆธเฆพ") || input.includes("เฆฐเง‹เฆฎเฆพเฆจเงเฆŸเฆฟเฆ•") ) { theme = THEMES.love; } // Gaming if ( input.includes("gaming") || input.includes("game") || input.includes("เฆ—เง‡เฆฎเฆฟเฆ‚") ) { theme = THEMES.gaming; } // Horror if ( input.includes("horror") || input.includes("เฆญเง‚เฆค") || input.includes("เฆญเฆฏเฆผ") || input.includes("เฆญเงŸ") || input.includes("scary") ) { theme = THEMES.horror; } // ==================================================== // EMOJI OVERRIDE // ==================================================== if (input.includes("๐Ÿ”ฅ") || input.includes("fire")) { theme.emoji = "๐Ÿ”ฅ"; } if (input.includes("โค๏ธ") || input.includes("heart")) { theme.emoji = "โค๏ธ"; } if (input.includes("๐Ÿ’€") || input.includes("skull")) { theme.emoji = "๐Ÿ’€"; } if (input.includes("๐Ÿค–") || input.includes("robot")) { theme.emoji = "๐Ÿค–"; } if (input.includes("๐ŸŽฎ") || input.includes("gaming")) { theme.emoji = "๐ŸŽฎ"; } if (input.includes("๐ŸŒŒ") || input.includes("galaxy")) { theme.emoji = "๐ŸŒŒ"; } if (input.includes("๐ŸŒŠ") || input.includes("ocean")) { theme.emoji = "๐ŸŒŠ"; } if (input.includes("๐Ÿ’œ")) { theme.emoji = "๐Ÿ’œ"; } if (input.includes("๐Ÿ’™")) { theme.emoji = "๐Ÿ’™"; } if (input.includes("๐Ÿ’š")) { theme.emoji = "๐Ÿ’š"; } if (input.includes("๐Ÿ’—")) { theme.emoji = "๐Ÿ’—"; } return theme; } // ====================================================== // COMMAND // ====================================================== module.exports = { config: { name: "settheme", aliases: ["theme", "aitheme"], version: "3.0.0", author: "Zihad", countDown: 3, role: 1, shortDescription: { en: "Set Messenger group theme from description" }, longDescription: { en: "Understand a theme description and change group color and emoji." }, category: "group" }, onStart: async function ({ api, event, args, message }) { const threadID = event.threadID; // ================================================ // HELP // ================================================ if (!args.length) { return message.reply( "โ•ญโ”€โ”€โ”€โ”€โ”€โ”€ ๐Ÿค– ๐—š๐—ข๐—”๐—ง ๐—”๐—œ ๐—ง๐—›๐—˜๐— ๐—˜ โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n\n" + "๐ŸŽจ เฆ†เฆฎเฆพเฆ•เง‡ theme-เฆเฆฐ description เฆฆเฆพเฆ“เฅค\n\n" + "Examples:\n\n" + "โ€ข settheme black cyberpunk neon blue\n" + "โ€ข settheme เฆ•เฆพเฆฒเง‹ horror เฆ†เฆ—เงเฆจเง‡เฆฐ เฆฎเฆคเง‹\n" + "โ€ข settheme pink romantic love heart\n" + "โ€ข settheme purple galaxy space\n" + "โ€ข settheme dark gaming theme\n" + "โ€ข settheme blue ocean theme\n\n" + "โœจ Bot description เฆฌเงเฆเง‡ group color + emoji change เฆ•เฆฐเฆฌเง‡เฅค\n\n" + "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ" ); } // ================================================ // RESET // ================================================ if (args[0].toLowerCase() === "reset") { try { await api.changeThreadColor("#0084FF", threadID); await api.changeThreadEmoji("๐Ÿ‘", threadID); const db = loadDB(); if (db[threadID]) { delete db[threadID]; saveDB(db); } return message.reply( "โ•ญโ”€โ”€โ”€โ”€โ”€โ”€ ๐Ÿค– ๐—š๐—ข๐—”๐—ง ๐—ง๐—›๐—˜๐— ๐—˜ โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n\n" + "โœ… Theme reset successfully!\n\n" + "๐ŸŽจ Color: Default Blue\n" + "๐Ÿ˜€ Emoji: ๐Ÿ‘\n\n" + "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ" ); } catch (error) { return message.reply( "โŒ Theme reset failed!\n\n" + `โ€บ ${error.message}` ); } } // ================================================ // SHOW // ================================================ if (args[0].toLowerCase() === "show") { const db = loadDB(); const saved = db[threadID]; if (!saved) { return message.reply( "โŒ เฆเฆ‡ group-เฆ เฆ•เง‹เฆจเง‹ saved AI theme เฆจเง‡เฆ‡เฅค" ); } return message.reply( "โ•ญโ”€โ”€โ”€โ”€โ”€โ”€ ๐Ÿค– ๐—š๐—ข๐—”๐—ง ๐—ง๐—›๐—˜๐— ๐—˜ โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n\n" + `๐ŸŽจ Name: ${saved.name}\n` + `๐ŸŽฏ Color: ${saved.color}\n` + `๐Ÿ˜€ Emoji: ${saved.emoji}\n\n` + `๐Ÿ“ Description:\n${saved.description}\n\n` + "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ" ); } // ================================================ // ANALYZE DESCRIPTION // ================================================ const description = args.join(" "); const theme = detectTheme(description); try { await message.reply( "โ•ญโ”€โ”€โ”€โ”€โ”€โ”€ ๐Ÿค– ๐—š๐—ข๐—”๐—ง ๐—”๐—œ โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n\n" + "๐Ÿง  Description เฆฌเงเฆเฆ›เฆฟ...\n" + "๐ŸŽจ Theme เฆคเงˆเฆฐเฆฟ เฆ•เฆฐเฆ›เฆฟ...\n" + "โณ Applying...\n\n" + "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ" ); // ============================================== // REAL MESSENGER GROUP COLOR // ============================================== await api.changeThreadColor( theme.color, threadID ); // ============================================== // REAL MESSENGER GROUP EMOJI // ============================================== await api.changeThreadEmoji( theme.emoji, threadID ); // ============================================== // SAVE // ============================================== const db = loadDB(); db[threadID] = { name: theme.name, color: theme.color, emoji: theme.emoji, description: description, updatedAt: new Date().toISOString() }; saveDB(db); return message.reply( "โ•ญโ”€โ”€โ”€โ”€โ”€โ”€ ๐Ÿค– ๐—š๐—ข๐—”๐—ง ๐—”๐—œ ๐—ง๐—›๐—˜๐— ๐—˜ โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n\n" + "โœ… Theme applied successfully!\n\n" + `๐ŸŽจ Theme: ${theme.name}\n` + `๐ŸŽฏ Color: ${theme.color}\n` + `๐Ÿ˜€ Emoji: ${theme.emoji}\n\n` + `๐Ÿ“ ${description}\n\n` + "๐Ÿ’พ Theme saved.\n\n" + "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ" ); } catch (error) { console.error("settheme error:", error); return message.reply( "โ•ญโ”€โ”€โ”€โ”€โ”€โ”€ โŒ ๐—ง๐—›๐—˜๐— ๐—˜ ๐—˜๐—ฅ๐—ฅ๐—ข๐—ฅ โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ\n\n" + "Theme apply เฆ•เฆฐเฆพ เฆฏเฆพเงŸเฆจเฆฟเฅค\n\n" + `โ€บ ${error.message}\n\n` + "โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฏ" ); } } };