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 ); } } };