goat
command
npm
Run npm install commands from bot
0
views
0
likes
0
installs
raw source
const { exec } = require("child_process");
const fs = require("fs-extra");
const path = require("path");
module.exports = {
config: {
name: "npm",
version: "1.0.0",
role: 2, // শুধু Owner / Admin ব্যবহার করতে পারবে
author: "Custom",
shortDescription: {
en: "Run npm install commands from bot"
},
longDescription: {
en: "Install any npm package using bot command"
},
category: "owner",
guide: {
en: "{pn} install <package-name>\n{pn} install <package1> <package2>\n{pn} list\n{pn} uninstall <package>"
}
},
onStart: async function ({ message, args, event }) {
if (!args[0]) {
return message.reply(
"📦 npm Command Usage:\n\n" +
"• .npm install <package>\n" +
"• .npm install canvas gifencoder\n" +
"• .npm uninstall <package>\n" +
"• .npm list"
);
}
const action = args[0].toLowerCase();
// ========== LIST ==========
if (action === "list" || action === "ls") {
return message.reply("⏳ Checking installed packages...", async (err, info) => {
exec("npm list --depth=0", { cwd: process.cwd(), maxBuffer: 1024 * 1024 * 10 }, (error, stdout, stderr) => {
const result = stdout || stderr || error?.message || "No output";
message.reply("📦 Installed Packages:\n\n" + result.slice(0, 15000));
});
});
}
// ========== INSTALL ==========
if (action === "install" || action === "i" || action === "add") {
const packages = args.slice(1);
if (packages.length === 0) {
return message.reply("❌ কোনো প্যাকেজের নাম দাও!\nউদাহরণ: .npm install canvas");
}
// সিকিউরিটি: শুধু প্যাকেজ নাম allow করবে
const safePackages = packages.filter(pkg => /^[@a-zA-Z0-9\-_\/\.]+$/.test(pkg));
if (safePackages.length === 0) {
return message.reply("❌ অবৈধ প্যাকেজ নাম!");
}
const cmd = `npm install ${safePackages.join(" ")} --force`;
message.reply(`⏳ Installing: ${safePackages.join(", ")}\nঅপেক্ষা করো...`, async (err, info) => {
exec(cmd, { cwd: process.cwd(), maxBuffer: 1024 * 1024 * 15 }, (error, stdout, stderr) => {
let result = "";
if (error) {
result += `❌ Error:\n${error.message}\n\n`;
}
if (stdout) result += `✅ Output:\n${stdout}\n`;
if (stderr) result += `⚠ stderr:\n${stderr}`;
// খুব বড় হলে কেটে দিবে
if (result.length > 15000) {
result = result.slice(0, 15000) + "\n\n... (output truncated)";
}
message.reply(result || "✅ Command executed (no output)");
});
});
return;
}
// ========== UNINSTALL ==========
if (action === "uninstall" || action === "remove" || action === "rm") {
const packages = args.slice(1);
if (packages.length === 0) {
return message.reply("❌ কোনো প্যাকেজের নাম দাও!\nউদাহরণ: .npm uninstall canvas");
}
const safePackages = packages.filter(pkg => /^[@a-zA-Z0-9\-_\/\.]+$/.test(pkg));
if (safePackages.length === 0) {
return message.reply("❌ অবৈধ প্যাকেজ নাম!");
}
const cmd = `npm uninstall ${safePackages.join(" ")}`;
message.reply(`⏳ Uninstalling: ${safePackages.join(", ")}...`, () => {
exec(cmd, { cwd: process.cwd(), maxBuffer: 1024 * 1024 * 10 }, (error, stdout, stderr) => {
let result = stdout || stderr || error?.message || "Done";
if (result.length > 12000) result = result.slice(0, 12000) + "\n...(truncated)";
message.reply(result);
});
});
return;
}
return message.reply("❌ ভুল কমান্ড!\nশুধু ব্যবহার করো: install / uninstall / list");
}
};