mmm / plugins /ali-version.js
ravenbs1's picture
Upload 140 files
046b271 verified
const axios = require('axios');
const os = require('os');
const fs = require('fs');
const path = require('path');
const { cmd, commands } = require('../command');
const { runtime } = require('../lib/functions');
cmd({
pattern: 'version',
alias: ["changelog", "cupdate", "checkupdate"],
react: '🚀',
desc: "Check bot's version, system stats, and update info.",
category: 'info',
filename: __filename
}, async (conn, mek, m, {
from, sender, pushname, reply
}) => {
try {
// Read local version data
const localVersionPath = path.join(__dirname, '../data/version.json');
let localVersion = 'Unknown';
let changelog = 'No changelog available.';
if (fs.existsSync(localVersionPath)) {
const localData = JSON.parse(fs.readFileSync(localVersionPath));
localVersion = localData.version;
changelog = localData.changelog;
}
// Fetch latest version data from GitHub
const rawVersionUrl = 'https://raw.githubusercontent.com/itx-alii-raza/ALI-MD/main/data/version.json';
let latestVersion = 'Unknown';
let latestChangelog = 'No changelog available.';
try {
const { data } = await axios.get(rawVersionUrl);
latestVersion = data.version;
latestChangelog = data.changelog;
} catch (error) {
console.error('Failed to fetch latest version:', error);
}
// Count total plugins
const pluginPath = path.join(__dirname, '../plugins');
const pluginCount = fs.readdirSync(pluginPath).filter(file => file.endsWith('.js')).length;
// Count total registered commands
const totalCommands = commands.length;
// System info
const uptime = runtime(process.uptime());
const ramUsage = (process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2);
const totalRam = (os.totalmem() / 1024 / 1024).toFixed(2);
const hostName = os.hostname();
const lastUpdate = fs.statSync(localVersionPath).mtime.toLocaleString();
// GitHub stats
const githubRepo = 'https://github.com/itx-alii-raza/ALI-MD';
// Check update status
let updateMessage = `*✅ ʏᴏᴜʀ ᴀʟɪ-ᴍᴅ ʙᴏᴛ ɪs ᴜᴘ-ᴛᴏ-ᴅᴀᴛᴇ!*`;
if (localVersion !== latestVersion) {
updateMessage = `*😵‍💫 ʏᴏᴜʀ ᴀʟɪ-ᴍᴅ ʙᴏᴛ ɪs ᴏᴜᴛᴅᴀᴛᴇᴅ!*
🔹 *ᴄᴜʀʀᴇɴᴛ ᴠᴇʀsɪᴏɴ:* ${localVersion}
🔹 *ʟᴀᴛᴇsᴛ ᴠᴇʀsɪᴏɴ:* ${latestVersion}
*ᴜsᴇ .ᴜᴘᴅᴀᴛᴇ ᴛᴏ ᴜᴘᴅᴀᴛᴇ.*`;
}
const statusMessage = `🌟 *Good ${new Date().getHours() < 12 ? 'Morning' : 'Night'}, ${pushname}!* 🌟\n\n` +
`🤖 *ʙᴏᴛ ɴᴀᴍᴇ:* ᴀʟɪ-ᴍᴅ\n🔖 *ᴄᴜʀʀᴇɴᴛ ᴠᴇʀsɪᴏɴ:* ${localVersion}\n📢 *ʟᴀᴛᴇsᴛ ᴠᴇʀsɪᴏɴ:* ${latestVersion}\n📂 *ᴛᴏᴛᴀʟ ᴘʟᴜɢɪɴs:* ${pluginCount}\n🔢 *ᴛᴏᴛᴀʟ ᴄᴏᴍᴍᴀɴᴅs:* ${totalCommands}\n\n` +
`💾 *sʏsᴛᴇᴍ ɪɴғᴏ:*\n⏰ *ᴜᴘᴛɪᴍᴇ:* ${uptime}\n📟 *ʀᴀᴍ ᴜsᴀɢᴇ:* ${ramUsage}MB / ${totalRam}MB\n⚙️ *ʜᴏsᴛ ɴᴀᴍᴇ:* ${hostName}\n📅 *ʟᴀsᴛ ᴜᴘᴅᴀᴛᴇ:* ${lastUpdate}\n\n` +
`📑 *ᴄʜᴀɴɢᴇʟᴏɢ:*\n${latestChangelog}\n\n` +
`⭐ *ɢɪᴛʜᴜʙ ʀᴇᴘᴏ:* ${githubRepo}\n\n${updateMessage}\n\n👋🏻 *ʜᴇʏ! ᴅᴏɴ'ᴛ ғᴏʀɢᴇᴛ ᴛᴏ ғᴏʀᴋ & sᴛᴀʀ ᴛʜᴇ ʀᴇᴘᴏ!*`;
// Send the status message with an image
await conn.sendMessage(from, {
image: { url: 'https://cdn.ironman.my.id/i/2du3i5.jpg' },
caption: statusMessage,
contextInfo: {
mentionedJid: [m.sender],
forwardingScore: 999,
isForwarded: true,
forwardedNewsletterMessageInfo: {
newsletterJid: '120363318387454868@newsletter',
newsletterName: '☇ 𝐀ɭι̇ι̇ 𝐌Ɗ 𝐒ʊ̊𝐏𝐏๏፝֟ɼʈ ⃪🤖͎᪳᪳𝆺𝅥',
serverMessageId: 143
}
}
}, { quoted: mek });
} catch (error) {
console.error('Error fetching version info:', error);
reply('❌ An error occurred while checking the bot version.');
}
});