← back to browse
goat command

imagen4

No description

0
views
0
likes
0
installs

Aliases: img4, gen4

raw source
const axios = require('axios');
const fs = require('fs-extra'); 
const path = require('path');

const API_ENDPOINT = "https://neokex-img-api.vercel.app/generate"; 

module.exports = {
  config: {
    name: "imagen4",
    aliases: ["img4", "gen4"],
    version: "1.0", 
    author: "NeoKEX",
    countDown: 15,
    role: 0,
    longDescription: "Generate a high-quality image using the Imagen 4 model.",
    category: "ai-image",
    guide: {
      en: "{pn} <prompt>"
    }
  },

  onStart: async function({ message, args, event }) {
    
    let prompt = args.join(" ");

    if (!prompt) {
        return message.reply("❌ Please provide a prompt to generate an image.");
    }

    message.reaction("🎨", event.messageID);
    let tempFilePath; 

    try {
      const fullApiUrl = `${API_ENDPOINT}?prompt=${encodeURIComponent(prompt.trim())}&m=imagen4`;
      
      const imageDownloadResponse = await axios.get(fullApiUrl, {
          responseType: 'stream',
          timeout: 60000
      });

      if (imageDownloadResponse.status !== 200) {
           throw new Error(`API returned status ${imageDownloadResponse.status}`);
      }
      
      const cacheDir = path.join(__dirname, 'cache');
      if (!fs.existsSync(cacheDir)) {
          await fs.ensureDirSync(cacheDir); 
      }
      
      tempFilePath = path.join(cacheDir, `imagen4_${Date.now()}.png`);
      
      const writer = fs.createWriteStream(tempFilePath);
      imageDownloadResponse.data.pipe(writer);

      await new Promise((resolve, reject) => {
        writer.on("finish", resolve);
        writer.on("error", (err) => {
          writer.close();
          reject(err);
        });
      });

      message.reaction("✅", event.messageID);
      await message.reply({
        body: `✨ Imagen 4 image Generated`,
        attachment: fs.createReadStream(tempFilePath)
      });

    } catch (error) {
      message.reaction("❌", event.messageID);
      console.error("Imagen4 Error:", error);
      
      let msg = "Failed to generate image.";
      if (error.code === 'ECONNABORTED') msg = "The request timed out. The server is taking too long.";
      
      message.reply(`❌ ${msg}\nError: ${error.message}`);
    } finally {
      if (tempFilePath && fs.existsSync(tempFilePath)) {
          try {
            await fs.unlink(tempFilePath);
          } catch (e) {
            console.error("Cleanup error:", e);
          }
      }
    }
  }
};

View raw file