const axios = require("axios"); const FormData = require("form-data"); const fs = require("fs-extra"); const path = require("path"); module.exports.config = { name: "edit", version: "1.0.0", author: "🔰𝐑𝐀𝐇𝐀𝐓 𝐈𝐒𝐋𝐀𝐌🔰", countDown: 10, role: 0, shortDescription: { en: "AI image editor" }, description: { en: "AI image editor" }, category: "image", guide: { en: "[reply to image] " } }; module.exports.onStart = async function ({ api, event, args, message }) { const { threadID, messageID, messageReply } = event; let imageUrl = null; if ( messageReply && messageReply.attachments && messageReply.attachments.length > 0 ) { const attachment = messageReply.attachments.find( item => item.type === "photo" || item.type === "image" ); if (attachment) { imageUrl = attachment.url || attachment.image_data?.url; } } if (!imageUrl && event.attachments && event.attachments.length > 0) { const attachment = event.attachments.find( item => item.type === "photo" || item.type === "image" ); if (attachment) { imageUrl = attachment.url || attachment.image_data?.url; } } if (!imageUrl) { return message.reply( "❌ একটি ছবির মেসেজে reply করে command দিন।\n\nউদাহরণ:\n!edit make the background beautiful" ); } const prompt = args.join(" ").trim(); if (!prompt) { return message.reply( "❌ Prompt দিন।\n\nউদাহরণ:\n!edit make the sky sunset" ); } const cacheDir = path.join(__dirname, "cache"); await fs.ensureDir(cacheDir); const inputPath = path.join(cacheDir, `imgedit_input_${Date.now()}.jpg`); const outputPath = path.join(cacheDir, `imgedit_output_${Date.now()}.jpg`); try { await message.reply("🪒please wait bara..."); const imageResponse = await axios.get(imageUrl, { responseType: "arraybuffer", timeout: 30000 }); await fs.writeFile(inputPath, imageResponse.data); const form = new FormData(); form.append("image", fs.createReadStream(inputPath), { filename: "image.jpg", contentType: "image/jpeg" }); form.append("prompt", prompt); form.append("resolution", "2K"); form.append("ratio", "match_input_image"); // তোমার API const apiResponse = await axios.post( "https://xrahat-image-edit.vercel.app/api/edit", form, { headers: { ...form.getHeaders() }, timeout: 120000, maxContentLength: Infinity, maxBodyLength: Infinity } ); const data = apiResponse.data || {}; if (!data.success || !data.imageUrl) { throw new Error(data.error || "Image generation failed"); } const outputResponse = await axios.get(data.imageUrl, { responseType: "arraybuffer", timeout: 60000 }); await fs.writeFile(outputPath, outputResponse.data); // Messenger এ image পাঠানো (GoatBot style attachment reply) return message.reply({ body: `✅ Image Edit Complete!\n` + `📝 Prompt: ${prompt}`, attachment: fs.createReadStream(outputPath) }); } catch (error) { console.error("imgedit error:", error); let errorMessage = "❌ Image edit failed."; if (error.response?.data?.error) { errorMessage += `\n\n${error.response.data.error}`; } else if (error.message) { errorMessage += `\n\n${error.message}`; } return message.reply(errorMessage); } finally { setTimeout(async () => { try { if (await fs.pathExists(inputPath)) { await fs.remove(inputPath); } if (await fs.pathExists(outputPath)) { await fs.remove(outputPath); } } catch (e) { console.error("Cleanup error:", e.message); } }, 5000); } };