← back to browse
goat command

spy

No description

2
views
0
likes
2
installs

Aliases: spyinfo, whoami

raw source
const axios = require("axios");

const baseApiUrl = async () => {
        const base = await axios.get("https://raw.githubusercontent.com/mahmudx7/HINATA/main/baseApiUrl.json");
        return base.data.mahmud;
};

module.exports = {
        config: {
                name: "spy",
                aliases: ["spyinfo", "whoami"],
                version: "1.7",
                author: "ajmaul",
                countDown: 10,
                role: 0,
                description: {
                        bn: "যেকোনো ইউজারের প্রোফাইল এবং স্ট্যাটাস চেক করুন",
                        en: "Check profile and stats of any user",
                        vi: "Kiểm tra hồ sơ và trạng thái của bất kỳ người dùng nào"
                },
                category: "info",
                guide: {
                        bn: '   {pn}: নিজের তথ্য দেখুন\n   {pn} <@tag/reply/UID>: ইউজারের তথ্য দেখুন',
                        en: '   {pn}: See your info\n   {pn} <@tag/reply/UID>: Check user info',
                        vi: '   {pn}: Xem thông tin của bạn\n   {pn} <@tag/reply/UID>: Xem thông tin người dùng'
                }
        },

        langs: {
                bn: {
                        error: "× তথ্য সংগ্রহ করতে সমস্যা হয়েছে: %1। প্রয়োজনে Contact Aizen।"
                },
                en: {
                        error: "× Failed to fetch info: %1. Contact Aizen for help."
                },
                vi: {
                        error: "× Lỗi lấy thông tin: %1. Liên hệ Aizen để hỗ trợ."
                }
        },

        onStart: async function ({ event, message, api, args, usersData, getLang }) {

                const { senderID, mentions, type, messageReply } = event;
                let uid = type === "message_reply" ? messageReply.senderID : Object.keys(mentions)[0] || senderID;

                if (args[0] && !args[0].startsWith("--")) {
                        if (/^\d+$/.test(args[0])) uid = args[0];
                        else {
                                const match = args[0].match(/profile\.php\?id=(\d+)/);
                                if (match) uid = match[1];
                        }
                }

                try {
                        const allUsers = await usersData.getAll();
                        const userData = await usersData.get(uid) || {};
                        const userInfo = await api.getUserInfo(uid);
                        const user = userInfo[uid] || {};

                        const money = userData.money || 0;
                        const exp = userData.exp || 0;

                        const expRank = allUsers.sort((a, b) => (b.exp || 0) - (a.exp || 0)).findIndex(u => u.userID == uid) + 1;
                        const moneyRank = allUsers.sort((a, b) => (b.money || 0) - (a.money || 0)).findIndex(u => u.userID == uid) + 1;

                        const baseUrl = await baseApiUrl();
                        let janTeach = "0", janTeachRank = "N/A";
                        
                        try {
                                const res = await axios.get(`${baseUrl}/api/jan/list/all`);
                                const entries = Object.entries(res.data?.data || {})
                                        .map(([id, val]) => ({ userID: id, value: parseInt(val) || 0 }))
                                        .sort((a, b) => b.value - a.value);

                                const userTeachData = entries.find(d => d.userID === uid);
                                if (userTeachData) {
                                        janTeach = userTeachData.value;
                                        janTeachRank = entries.findIndex(d => d.userID === uid) + 1;
                                }
                        } catch (e) {}

                        const genderText = user.gender === 1 ? "Girl" : user.gender === 2 ? "Boy" : "Other";
                        
                        const msg = `╭────[ 𝐔𝐒𝐄𝐑 𝐈𝐍𝐅𝐎 ]
├‣ 𝙽𝚊𝚖𝚎: ${user.name || "Unknown"}
├‣ 𝙶𝚎𝚗𝚍𝚎𝚛: ${genderText}
├‣ 𝚄𝙸𝙳: ${uid}
├‣ 𝙲𝚕𝚊𝚜𝚜: FRIEND
├‣ 𝚄𝚜𝚎𝚛𝚗𝚊𝚖𝚎: ${user.vanity || "none"}
├‣ 𝙱𝚒𝚛𝚝𝚑𝚍𝚊𝚢: Private
├‣ 𝙽𝚒𝚌𝚔𝙽𝚊𝚖𝚎: None
╰‣ 𝙵𝚛𝚒𝚎𝚗𝚍 𝚠𝚒𝚝𝚑 𝚋𝚘𝚝: ${user.isFriend ? "Yes ✅" : "No ❌"}

╭────[ 𝐔𝐒𝐄𝐑 𝐒𝐓𝐀𝐓𝐒 ]
├‣ 𝚄𝚜𝚎𝚛 𝚁𝚊𝚗𝚔: #${expRank}/${allUsers.length}
├‣ 𝙴𝚇𝙿: ${formatNumber(exp)}
├‣ 𝙱𝚊𝚕𝚊𝚗𝚌𝚎: ${formatNumber(money)}
├‣ 𝙱𝚊𝚕𝚊𝚗𝚌𝚎 𝚁𝚊𝚗𝚔: #${moneyRank}
╰‣ 𝙷𝚒𝚗𝚊𝚝𝚊 𝚃𝚎𝚊𝚌𝚑: ${janTeach} #${janTeachRank}`;

                        return message.reply(msg);
                } catch (err) {
                        return message.reply(getLang("error", err.message));
                }
        }
};

function formatNumber(num) {
        if (!num) return "0";
        let n = typeof num !== "number" ? parseInt(num) || 0 : num;
        const units = ["", "K", "M", "B", "T"];
        let unit = 0;
        while (n >= 1000 && ++unit < units.length) n /= 1000;
        return n.toFixed(1).replace(/\.0$/, "") + units[unit];
}

View raw file