← back to browse
goat command

random

Random media from Album categories

0
views
0
likes
0
installs
raw source
const axios = require("axios");
const fs = require("fs-extra");
const path = require("path");

// Album API base
const getBaseApi = async () => {
  try {
    const res = await axios.get(
      "https://raw.githubusercontent.com/Mostakim0978/D1PT0/refs/heads/main/baseApiUrl.json",
      { timeout: 10000 }
    );
    return res.data.api;
  } catch (e) {
    return null;
  }
};

// Album ক্যাটাগরি লিস্ট (যেখান থেকে র‍্যান্ডম নিবে)
const CATEGORIES = [
  { type: "funny",     name: "Funny Video",      emoji: "🤣" },
  { type: "islamic",   name: "Islamic Video",    emoji: "😇" },
  { type: "sad",       name: "Sad Video",        emoji: "🥺" },
  { type: "anime",     name: "Anime Video",      emoji: "😘" },
  { type: "cartoon",   name: "Cartoon Video",    emoji: "🐾" },
  { type: "lofi",      name: "LoFi Video",       emoji: "🎧" },
  { type: "love",      name: "Couple/Love Video",emoji: "😍" },
  { type: "flower",    name: "Flower Video",     emoji: "🌹" },
  { type: "photo",     name: "Random Photo",     emoji: "🖼️" },
  { type: "aesthetic", name: "Aesthetic Video",  emoji: "🌌" },
  { type: "sigma",     name: "Sigma Rule",       emoji: "🦁" },
  { type: "lyrics",    name: "Lyrics Video",     emoji: "🎶" },
  { type: "cat",       name: "Cat Video",        emoji: "🐱" },
  { type: "ff",        name: "Free Fire Video",  emoji: "🎮" },
  { type: "football",  name: "Football Video",   emoji: "⚽" },
  { type: "girl",      name: "Girl Video",       emoji: "👧" },
  { type: "friend",    name: "Friends Video",    emoji: "🤝" },
  { type: "cricket",   name: "Cricket Video",    emoji: "🏏" }
];

module.exports = {
  config: {
    name: "random",
    version: "13.0.0",
    role: 0,
    author: "Connected with Album",
    shortDescription: { en: "Random media from Album categories" },
    longDescription: { en: "Sends random photo/video from different album categories each time" },
    category: "media",
    guide: {
      en: "{pn} - random media\n{pn} list - show categories"
    }
  },

  onStart: async function ({ message, event, args }) {
    // লিস্ট দেখতে চাইলে
    if ((args[0] || "").toLowerCase() === "list") {
      let txt = "🎵 Album Categories (Random picks from these)\n\n";
      CATEGORIES.forEach((c, i) => {
        txt += `${i + 1}. ${c.emoji} ${c.name}\n`;
      });
      return message.reply(txt);
    }

    const cacheDir = path.join(__dirname, "cache");
    await fs.ensureDir(cacheDir);

    // র‍্যান্ডম ক্যাটাগরি সিলেক্ট
    const cat = CATEGORIES[Math.floor(Math.random() * CATEGORIES.length)];

    try {
      await message.reply(`🎲 Random picking... ${cat.emoji} ${cat.name}`);

      const base = await getBaseApi();
      if (!base) {
        return message.reply("❌ Album API পাওয়া যায়নি। একটু পর চেষ্টা করুন।");
      }

      // Album API থেকে মিডিয়া নেওয়া
      const res = await axios.get(`\( {base}/album?type= \){cat.type}`, {
        timeout: 15000,
        headers: { "User-Agent": "Mozilla/5.0" }
      });

      const mediaUrl = res.data?.data;
      if (!mediaUrl || typeof mediaUrl !== "string") {
        return message.reply(`❌ ${cat.name} থেকে মিডিয়া পাওয়া যায়নি। আবার চেষ্টা করুন।`);
      }

      // ডাউনলোড
      const mediaRes = await axios.get(mediaUrl, {
        responseType: "arraybuffer",
        timeout: 40000,
        maxContentLength: 45 * 1024 * 1024,
        headers: { "User-Agent": "Mozilla/5.0" }
      });

      if (!mediaRes.data || mediaRes.data.byteLength < 5000) {
        return message.reply("❌ ফাইল নষ্ট বা খুব ছোট। আবার চেষ্টা করুন।");
      }

      // এক্সটেনশন ঠিক করা
      let ext = ".mp4";
      if (mediaUrl.match(/\.(jpg|jpeg|png|webp)(\?|$)/i) || cat.type === "photo") {
        ext = ".jpg";
      } else if (mediaUrl.match(/\.(gif)(\?|$)/i)) {
        ext = ".gif";
      }

      const filePath = path.join(cacheDir, `random_album_\( {Date.now()} \){ext}`);
      await fs.writeFile(filePath, Buffer.from(mediaRes.data));

      await message.reply({
        body: `${cat.emoji} 𝗥𝗮𝗻𝗱𝗼𝗺 ${cat.name}\n\n🎯 Category: ${cat.type}\n♻️ প্রতিবার আলাদা আসবে`,
        attachment: fs.createReadStream(filePath)
      });

      try { await fs.unlink(filePath); } catch (e) {}

    } catch (err) {
      console.error("Random+Album Error:", err.message);
      return message.reply(
        `❌ সমস্যা হয়েছে (${cat.name})\n` +
        `কারণ: ${err.message || "Unknown"}\n` +
        `আবার .random দিন।`
      );
    }
  }
};

View raw file