const axios = require("axios"); const fs = require("fs-extra"); module.exports = { config: { name: "geminigen", version: "1.4", author: "@RI F AT (edited by Ew'r Saim) ", // Do not change author description: "Generate or edit image using prompt (reply to image to edit it)", usage: "[prompt] or reply to image", cooldown: 5, category: "image generator" }, onStart: async function ({ api, event, args, threadsData, usersData }) { const { messageID, threadID, senderID, messageReply } = event; const prefix = await threadsData.get(threadID, "data.prefix") || global.GoatBot.config.prefix; // āœ… Help Panel if (args[0]?.toLowerCase() === "help") { return api.sendMessage( `╔══ šŸŽØ š—šš—˜š— š—œš—”š—œš—šš—˜š—” š—›š—˜š—Ÿš—£ ══╗ ā”ƒ ā”ƒ āœļø š—Øš˜€š—²: ${prefix}geminigen [prompt] ā”ƒ šŸ“Ž š—¢š—æ: reply to image with prompt ā”ƒ ā”ƒ šŸ”§ š—¬š—¼š˜‚ š—°š—®š—» š—“š—²š—»š—²š—æš—®š˜š—²: ā”ƒ ━━━━━━━━━━━━━━━ ā”ƒ 🧠 AI art with text ā”ƒ šŸ§™ Anime style face ā”ƒ šŸ‘§ Pixar cartoon me ā”ƒ 😈 Demon version ā”ƒ šŸ’€ Zombie mode ā”ƒ šŸ”„ Add glow effect ā”ƒ šŸŽØ Make black-white ā”ƒ šŸ”„ Fire background ā”ƒ 🌸 Sakura overlay ā”ƒ ā”ƒ šŸ” Example: ā”ƒ ${prefix}geminigen cat warrior ā”ƒ ${prefix}geminigen cartoon me (reply) ā”ƒ ā•šā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•ā•`, threadID, messageID ); } // šŸ“ Prompt Section let prompt = args.join(" "); if (!prompt && messageReply?.body) prompt = messageReply.body; if (!prompt) { return api.sendMessage( `āš ļø Please provide a prompt. šŸ“ Try: • ${prefix}geminigen alien face • ${prefix}geminigen cartoon me (reply to image) ā„¹ļø Type "${prefix}geminigen help" for all styles.`, threadID, messageID ); } // šŸ’¾ Save last prompt (optional) await usersData.set(senderID, prompt, "data.lastGeminiPrompt"); // šŸ“· Get reply image (optional) let imageURL = null; if ( messageReply && messageReply.attachments && messageReply.attachments[0]?.type === "photo" ) { imageURL = messageReply.attachments[0].url; } const apiUrl = imageURL ? `https://edit-and-gen.onrender.com/gen?prompt=${encodeURIComponent(prompt)}&image=${encodeURIComponent(imageURL)}` : `https://edit-and-gen.onrender.com/gen?prompt=${encodeURIComponent(prompt)}`; // ā³ Send waiting message api.sendMessage("šŸŽØ š—£š—æš—¼š—°š—²š˜€š˜€š—¶š—»š—“, š—½š—¹š—²š—®š˜€š—² š˜„š—®š—¶š˜...", threadID, async (err, info) => { const waitMsgID = info.messageID; try { const res = await axios.get(apiUrl, { responseType: "stream" }); // šŸ–¼ļø Send final image api.sendMessage({ body: `āœ… š—œš—ŗš—®š—“š—² ${imageURL ? "š—˜š—±š—¶š˜š—²š—±" : "š—šš—²š—»š—²š—æš—®š˜š—²š—±"} š—³š—æš—¼š—ŗ š—£š—æš—¼š—ŗš—½š˜:\nšŸ–‹ļø "${prompt}"`, attachment: res.data }, threadID, messageID); // 🧽 Auto delete waiting api.unsendMessage(waitMsgID); } catch (err) { console.error("āŒ Gemini error:", err.message); api.unsendMessage(waitMsgID); api.sendMessage("āŒ Failed to process image. Try again later.", threadID, messageID); } }); } };