← back to browse
goat command

give

ফাইল লিস্ট দেখায় এবং Raw/Delete অপশন দেয়

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

const folderPath = __dirname;

module.exports = {
  config: {
    name: "give",
    version: "1.0.6",
    author: "CYBER SUJON",
    countDown: 5,
    role: 2,
    shortDescription: "ফাইল লিস্ট দেখায় এবং Raw/Delete অপশন দেয়",
    longDescription: "ফাইল লিস্ট দেখায় এবং Raw/Delete অপশন দেয়",
    category: "Admin",
    guide: {
      body: "{pn}"
    }
  },

  // ==============================
  // REPLY HANDLER
  // ==============================
  onReply: async function ({ event, api, Reply }) {
    const { author, files, messageID } = Reply;

    // শুধু যে ব্যক্তি give command দিয়েছে সে reply দিতে পারবে
    if (event.senderID !== author)
      return;

    // পুরোনো auto delete timer বন্ধ
    if (Reply.unsendTimeout)
      clearTimeout(Reply.unsendTimeout);

    const input = (event.body || "")
      .trim()
      .split(/\s+/);

    const index = parseInt(input[0]);
    const action = input[1]?.toLowerCase();

    // ভুল format
    if (
      !index ||
      !action ||
      !files ||
      !files[index - 1]
    ) {
      return api.sendMessage(
        "❌ সঠিকভাবে লিখুন:\n\n[নম্বর] raw\nঅথবা\n[নম্বর] del\n\nউদাহরণ:\n1 raw\n1 del",
        event.threadID,
        event.messageID
      );
    }

    const selectedFile = files[index - 1];
    const filePath = path.join(folderPath, selectedFile);

    // ==============================
    // DELETE FILE
    // ==============================
    if (action === "del") {
      try {
        if (!fs.existsSync(filePath)) {
          return api.sendMessage(
            `❌ ফাইল পাওয়া যায়নি!\n\n📁 ${selectedFile}`,
            event.threadID,
            event.messageID
          );
        }

        fs.unlinkSync(filePath);

        // List message delete
        try {
          api.unsendMessage(messageID);
        } catch {}

        return api.sendMessage(
          `╭─❖ 𝗙𝗜𝗟𝗘 𝗗𝗘𝗟𝗘𝗧𝗘𝗗 ❖─╮\n\n` +
          `📁 File: ${selectedFile}\n` +
          `✅ সফলভাবে Delete করা হয়েছে।\n\n` +
          `╰─❖ SUJON-BOSS ❖─╯`,
          event.threadID,
          event.messageID
        );
      } catch (error) {
        return api.sendMessage(
          `❌ File Delete করতে সমস্যা হয়েছে!\n\n${error.message}`,
          event.threadID,
          event.messageID
        );
      }
    }

    // ==============================
    // RAW LINK
    // ==============================
    if (action === "raw") {
      try {
        if (!fs.existsSync(filePath)) {
          return api.sendMessage(
            `❌ ফাইল পাওয়া যায়নি!\n\n📁 ${selectedFile}`,
            event.threadID,
            event.messageID
          );
        }

        // Loading message
        const loadingMsg = await api.sendMessage(
          `⏳ Raw link তৈরি হচ্ছে...\n\n📁 ${selectedFile}`,
          event.threadID
        );

        // File read
        const content = fs.readFileSync(filePath, "utf8");

        // Paste API
        const response = await axios.post(
          "https://pastebin-api.vercel.app/paste",
          {
            text: content
          },
          {
            timeout: 30000,
            headers: {
              "Content-Type": "application/json"
            }
          }
        );

        if (
          !response.data ||
          !response.data.id
        ) {
          throw new Error("Paste API থেকে ID পাওয়া যায়নি।");
        }

        const pasteUrl =
          `https://pastebin-api.vercel.app/raw/${response.data.id}`;

        // Loading delete
        try {
          if (loadingMsg && loadingMsg.messageID)
            api.unsendMessage(loadingMsg.messageID);
        } catch {}

        // Original list message delete
        try {
          api.unsendMessage(messageID);
        } catch {}

        return api.sendMessage(
          `╭•┄┅═══❁🌸❁═══┅┄•╮\n` +
          `       🌼 𝗥𝗔𝗪 𝗟𝗜𝗡𝗞 🌼\n` +
          `╰•┄┅═══❁🌸❁═══┅┄•╯\n\n` +

          `📁 𝗙𝗶𝗹𝗲: ${selectedFile}\n\n` +

          `🔗 𝗥𝗮𝘄 𝗟𝗶𝗻𝗸:\n` +
          `${pasteUrl}\n\n` +

          `╭─❖ 𝗦𝗨𝗝𝗢𝗡-𝗕𝗢𝗦𝗦 ❖─╮`,
          event.threadID,
          event.messageID
        );

      } catch (error) {
        return api.sendMessage(
          `❌ Raw link তৈরি করতে সমস্যা হয়েছে!\n\n` +
          `📁 File: ${selectedFile}\n` +
          `⚠️ Error: ${error.message}`,
          event.threadID,
          event.messageID
        );
      }
    }

    // ==============================
    // INVALID ACTION
    // ==============================
    return api.sendMessage(
      `❌ ভুল Action!\n\n` +
      `ব্যবহার করুন:\n` +
      `➤ ${index} raw\n` +
      `➤ ${index} del`,
      event.threadID,
      event.messageID
    );
  },

  // ==============================
  // START COMMAND
  // ==============================
  onStart: async function ({
    event,
    api,
    commandName
  }) {
    try {
      const files = fs.readdirSync(folderPath);

      // শুধু JS file
      const jsFiles = files.filter(
        file =>
          path.extname(file).toLowerCase() === ".js"
      );

      if (!jsFiles.length) {
        return api.sendMessage(
          "❌ কোনো .js ফাইল পাওয়া যায়নি!",
          event.threadID,
          event.messageID
        );
      }

      // ==============================
      // FILE LIST
      // ==============================
      let msg =
        `╭•┄┅═══❁🌸❁═══┅┄•╮\n` +
        `       🌼 𝗙𝗜𝗟𝗘 𝗟𝗜𝗦𝗧 🌼\n` +
        `╰•┄┅═══❁🌸❁═══┅┄•╯\n\n`;

      jsFiles.forEach((file, index) => {
        msg += `➤ [${index + 1}] ${file}\n`;
      });

      msg +=
        `\n╭─❖ 𝗥𝗘𝗣𝗟𝗬 𝗢𝗣𝗧𝗜𝗢𝗡 ❖─╮\n` +
        `➤ [নম্বর] raw ➠ Raw লিংক পাবেন\n` +
        `➤ [নম্বর] del ➠ ফাইল ডিলিট হবে\n` +
        `╰──────────────────────╯\n\n` +

        `💡 উদাহরণ:\n` +
        `➤ 1 raw\n` +
        `➤ 1 del\n\n` +

        `⏳ এই মেসেজ ৬০ সেকেন্ড পর Auto Delete হবে।\n\n` +
        `╰─❖ 𝗦𝗨𝗝𝗢𝗡-𝗕𝗢𝗦𝗦 ❖─╯`;

      // ==============================
      // SEND + REPLY LISTENER
      // ==============================
      api.sendMessage(
        msg,
        event.threadID,
        (err, info) => {
          if (err)
            return;

          // ৬০ সেকেন্ড পর auto delete
          const unsendTimeout = setTimeout(() => {
            try {
              api.unsendMessage(info.messageID);
            } catch {}

            try {
              global.GoatBot.onReply.delete(
                info.messageID
              );
            } catch {}
          }, 60 * 1000);

          // Reply listener
          global.GoatBot.onReply.set(
            info.messageID,
            {
              commandName,
              messageID: info.messageID,
              author: event.senderID,
              files: jsFiles,
              unsendTimeout
            }
          );
        },
        event.messageID
      );

    } catch (error) {
      return api.sendMessage(
        `❌ Give command-এ সমস্যা হয়েছে!\n\n${error.message}`,
        event.threadID,
        event.messageID
      );
    }
  }
};

View raw file