goat
command
تعديل
تعديل الصور بالذكاء
0
views
0
likes
0
installs
Aliases: edit, qwen
raw source
const axios = require("axios");
const fs = require("fs");
const path = require("path");
module.exports = {
config: {
name: "تعديل",
aliases: ["edit", "qwen"],
version: "3.0.0",
author: "EryXenX",
countDown: 30,
role: 0,
shortDescription: "تعديل الصور بالذكاء",
category: "AI",
guide: "{pn} [رد على صورة] <الوصف>"
},
onStart: async function ({ api, event, args }) {
const { threadID, messageID, messageReply } = event;
const addMode = args.length > 0 && (args[0] === "-a" || args[0] === "--add");
const promptArgs = addMode ? args.slice(1) : args;
const prompt = promptArgs.join(" ").trim();
if (!prompt) {
return api.sendMessage(
addMode
? "⚠️ الاستخدام: qwen -a <text> (reply to an image)"
: "⚠️ Please provide some text for the image.",
threadID,
messageID
);
}
const imgUrl = messageReply?.attachments?.[0]?.url;
if (!imgUrl) {
return api.sendMessage("⚠️ يرجى الرد على صورة.", threadID, messageID);
}
if (!addMode) {
api.setMessageReaction("⏳", messageID, () => {}, true);
return runEditRequest({ api, event, prompt, imageUrls: [imgUrl], reactionMsgID: messageID });
}
api.setMessageReaction("", messageID, () => {}, true);
api.sendMessage(
"📷 𝐀𝐝𝐝 𝐚𝐧𝐨𝐭𝐡𝐞𝐫 𝐩𝐡𝐨𝐭𝐨 — reply to this message with the 2nd image.",
threadID,
(err, info) => {
if (err || !info) {
api.setMessageReaction("❌", messageID, () => {}, true);
return;
}
global.GoatBot.onReply.set(info.messageID, {
commandName: module.exports.config.name,
messageID: info.messageID,
author: event.senderID,
prompt,
imageUrls: [imgUrl],
reactionMsgID: messageID
});
},
messageID
);
},
onReply: async function ({ api, event, Reply }) {
if (event.senderID !== Reply.author) return;
const secondUrl = event.attachments?.[0]?.url;
if (!secondUrl) {
return api.sendMessage(
"⚠️ يرجى الرد على هذه الرسالة بصورة.",
event.threadID,
event.messageID
);
}
api.setMessageReaction("🐣", event.messageID, () => {}, true);
await runEditRequest({
api,
event,
prompt: Reply.prompt,
imageUrls: [...Reply.imageUrls, secondUrl],
reactionMsgID: event.messageID
});
global.GoatBot.onReply.delete(Reply.messageID);
}
};
const API_BASE = "https://qwen-xdi.onrender.com/edit";
async function runEditRequest({ api, event, prompt, imageUrls, reactionMsgID }) {
try {
const params = new URLSearchParams();
params.set("image", imageUrls[0]);
if (imageUrls[1]) params.set("image2", imageUrls[1]);
params.set("prompt", prompt);
const res = await axios.get(`${API_BASE}?${params.toString()}`, { timeout: 120000 });
const data = res.data;
const finalImageURL = data && data.success ? data.imageUrl : null;
if (!finalImageURL) {
const errMsg = (data && (data.error || data.message)) || "Unknown reason";
api.setMessageReaction("⚠️", reactionMsgID, () => {}, true);
return api.sendMessage(`❌ خطأ في الواجهة: ${errMsg}`, event.threadID, event.messageID);
}
const cacheDir = path.join(__dirname, "cache");
fs.mkdirSync(cacheDir, { recursive: true });
const imageResponse = await axios.get(finalImageURL, {
responseType: "arraybuffer",
timeout: 60000
});
const ext = finalImageURL.split("?")[0].split(".").pop().toLowerCase();
const safeExt = ["jpg", "jpeg", "png", "webp"].includes(ext) ? ext : "png";
const filePath = path.join(cacheDir, `${Date.now()}.${safeExt}`);
fs.writeFileSync(filePath, Buffer.from(imageResponse.data));
api.setMessageReaction("🧃", reactionMsgID, () => {}, true);
api.sendMessage(
{
body: "> 🎀 𝐃𝐨𝐧𝐞",
attachment: fs.createReadStream(filePath)
},
event.threadID,
() => fs.unlinkSync(filePath)
);
} catch (err) {
console.error("QWEN EDIT Error:", err?.response?.data || err.message);
api.setMessageReaction("❌", reactionMsgID, () => {}, true);
api.sendMessage("❌ حدث خطأ أثناء معالجة الصورة.", event.threadID, event.messageID);
}
}