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