// code from goatstore // api: https://store.agi.bd const axios = require('axios'); const API_CONFIG_URL = "https://raw.githubusercontent.com/goatbotnx/xalmanx210/refs/heads/main/apis.json"; const API_KEY = "xalman-hub"; let apiBaseUrl = null; let apiConfigRequest = null; async function getApiBaseUrl() { if (apiBaseUrl) return apiBaseUrl; if (!apiConfigRequest) { apiConfigRequest = axios .get(API_CONFIG_URL, { timeout: 15000 }) .then(({ data }) => { const baseUrl = data?.[API_KEY]; if (typeof baseUrl !== "string" || !baseUrl.trim()) { throw new Error(`Missing API key in apis.json: ${API_KEY}`); } apiBaseUrl = baseUrl.replace(/\/+$/, ""); return apiBaseUrl; }) .finally(() => { apiConfigRequest = null; }); } return apiConfigRequest; } const fs = require('fs-extra'); const path = require('path'); module.exports = { config: { name: "text2image", version: "1.3.0", author: "xalman", countDown: 10, role: 0, shortDescription: "Generate Premium AI Images", longDescription: "Generate high-quality detailed images", category: "AI", guide: "{pn} [prompt]" }, onStart: async function ({ api, event, args }) { const { threadID, messageID, senderID } = event; const prompt = args.join(" "); if (!prompt) { return api.sendMessage("ā•­ā”€ā\n│ š–Æš—…š–¾š–ŗš—Œš–¾ š–¾š—‡š—š–¾š—‹ š–ŗ š—‰š—‹š—ˆš—†š—‰š—!\nā•°ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€āŸ”", threadID, messageID); } api.setMessageReaction("ā³", messageID, (err) => {}, true); const startTime = Date.now(); const apiUrl = `${await getApiBaseUrl()}/api/flux?prompt=${encodeURIComponent(prompt)}`; const cachePath = path.join(__dirname, 'cache', `t2i_${senderID}_${Date.now()}.png`); try { if (!fs.existsSync(path.join(__dirname, 'cache'))) { fs.mkdirSync(path.join(__dirname, 'cache'), { recursive: true }); } const response = await axios({ method: 'get', url: apiUrl, responseType: 'arraybuffer', timeout: 120000 }); fs.writeFileSync(cachePath, Buffer.from(response.data, 'binary')); const endTime = Date.now(); const timeTaken = ((endTime - startTime) / 1000).toFixed(2); api.setMessageReaction("āœ…", messageID, (err) => {}, true); const msgBody = `ā– š–³š–¤š–·š–³ š–³š–® š–Øš–¬š– š–¦š–¤ ā–\n━━━━━━━━━━━━━━━━━━\nāœŽ š–Æš—‹š—ˆš—†š—‰š—: ${prompt}\nā±ļø š–²š—‰š–¾š–¾š–½: ${timeTaken}š—Œ\n━━━━━━━━━━━━━━━━━━\nš–”š—’ š—‘š–ŗš—…š—†š–ŗš—‡`; return api.sendMessage({ body: msgBody, attachment: fs.createReadStream(cachePath) }, threadID, () => { if (fs.existsSync(cachePath)) fs.unlinkSync(cachePath); }, messageID); } catch (error) { console.error(error); api.setMessageReaction("āŒ", messageID, (err) => {}, true); return api.sendMessage(`āœ• š–¦š–¾š—‡š–¾š—‹š–ŗš—š—‚š—ˆš—‡ š–„š–ŗš—‚š—…š–¾š–½!\nš–¤š—‹š—‹š—ˆš—‹: ${error.message}`, threadID, messageID); } } };