← back to browse
goat command

pfp

No description

0
views
0
likes
0
installs

Aliases: avatar, profilepic

raw source
const axios = require("axios");
const fs = require("fs-extra");
const path = require("path");

module.exports = {
        config: {
                name: "pfp",
                aliases: ["avatar", "profilepic"],
                version: "1.0",
                author: "NeoKEX",
                countDown: 5,
                role: 0,
                description: {
                        vi: "Lấy ảnh đại diện của người dùng",
                        en: "Fetch user's profile picture"
                },
                category: "utility",
                guide: {
                        vi: '   {pn}: Lấy ảnh đại diện của bạn'
                                + '\n   {pn} <@tag>: Lấy ảnh đại diện của người được tag'
                                + '\n   {pn} <uid>: Lấy ảnh đại diện từ UID'
                                + '\n   {pn} <profile_link>: Lấy ảnh đại diện từ link profile'
                                + '\n   (Hoặc reply tin nhắn của ai đó)',
                        en: '   {pn}: Fetch your profile picture'
                                + '\n   {pn} <@tag>: Fetch tagged user\'s profile picture'
                                + '\n   {pn} <uid>: Fetch profile picture from UID'
                                + '\n   {pn} <profile_link>: Fetch profile picture from profile link'
                                + '\n   (Or reply to someone\'s message)'
                }
        },

        langs: {
                vi: {
                        fetching: "🔍 Đang lấy ảnh đại diện...",
                        success: "✓ Ảnh đại diện của %1",
                        error: "× Không thể lấy ảnh đại diện: %1",
                        invalidUID: "! UID không hợp lệ"
                },
                en: {
                        fetching: "🔍 Fetching profile picture...",
                        success: "✓ Profile picture of %1",
                        error: "× Could not fetch profile picture: %1",
                        invalidUID: "! Invalid UID"
                }
        },

        onStart: async function ({ api, message, args, event, getLang, usersData }) {
                try {
                        let uid = event.senderID;
                        
                        if (event.messageReply) {
                                uid = event.messageReply.senderID;
                        } else if (Object.keys(event.mentions).length > 0) {
                                uid = Object.keys(event.mentions)[0];
                        } else if (args[0]) {
                                if (!isNaN(args[0])) {
                                        uid = args[0];
                                } else if (args[0].includes("facebook.com/")) {
                                        const match = args[0].match(/(?:profile\.php\?id=|\/)([\d]+)/);
                                        if (match)
                                                uid = match[1];
                                        else {
                                                const vanityMatch = args[0].match(/facebook\.com\/([^/?]+)/);
                                                if (vanityMatch) {
                                                        try {
                                                                const response = await axios.get(`https://www.facebook.com/${vanityMatch[1]}`);
                                                                const uidMatch = response.data.match(/"userID":"(\d+)"/);
                                                                if (uidMatch)
                                                                        uid = uidMatch[1];
                                                        } catch (err) {
                                                                return message.reply(getLang("error", "Could not extract UID from link"));
                                                        }
                                                }
                                        }
                                }
                        }
                        
                        if (!uid || isNaN(uid))
                                return message.reply(getLang("invalidUID"));
                        
                        await message.reply(getLang("fetching"));
                        
                        const userName = await usersData.getName(uid);
                        const avatarURL = `https://graph.facebook.com/${uid}/picture?width=720&height=720&access_token=6628568379%7Cc1e620fa708a1d5696fb991c1bde5662`;
                        
                        const cachePath = path.join(__dirname, "cache", `pfp_${uid}.jpg`);
                        await fs.ensureDir(path.dirname(cachePath));
                        
                        const response = await axios.get(avatarURL, { responseType: "arraybuffer" });
                        await fs.writeFile(cachePath, Buffer.from(response.data));
                        
                        await message.reply({
                                body: getLang("success", userName),
                                attachment: fs.createReadStream(cachePath)
                        });
                        
                        await fs.remove(cachePath);
                } catch (err) {
                        console.error("Error in pfp command:", err);
                        return message.reply(getLang("error", err.message));
                }
        }
};

View raw file