← back to browse
goat command

gcinfo

Show group info with photo & fully admins

0
views
0
likes
0
installs

Aliases: groupinfo, ginfo

raw source
module.exports = {
  config: {
    name: "gcinfo",
    aliases: ["groupinfo", "ginfo"],
    version: "0.0.7",
    author: "Azadx69x",
    countDown: 3,
    role: 0,
    shortDescription: {
      en: "Show group info with photo & fully admins",
    },
    longDescription: {
      en: "Displays detailed information about the current group including group photo, admins.",
    },
    category: "group",
    guide: {
      en: "Type )gcinfo in a group chat",
    },
  },

  onStart: async function ({ api, event }) {
    try {
      const threadID = event.threadID;
      const threadInfo = await api.getThreadInfo(threadID);

      const groupName = threadInfo.threadName || threadInfo.name || "Unknown Group";
      const participantCount = threadInfo.participantIDs?.length || 0;
      
      const adminIDs = threadInfo.adminIDs?.map(a => a.id) || [];
      let adminNames = [];
      
      if (adminIDs.length > 0) {
        for (let i = 0; i < adminIDs.length; i += 100) {
          const batch = adminIDs.slice(i, i + 100);
          const userInfo = await api.getUserInfo(batch);
          batch.forEach(id => {
            adminNames.push(userInfo[id]?.name || "Unknown User");
          });
        }
      }
      
      let adminsText = "";
      if (adminNames.length > 0) {
        adminNames.forEach((name, i) => {
          adminsText += `│  ${i + 1}. ${name}\n`;
        });
      } else {
        adminsText = "│  None\n";
      }
      
      let groupPhotoStream = null;
      if (threadInfo.imageSrc) {
        try {
          const axios = require("axios");
          const response = await axios({
            url: threadInfo.imageSrc,
            method: "GET",
            responseType: "stream",
            timeout: 10000
          });
          groupPhotoStream = response.data;
        } catch (photoErr) {
          console.error("[PHOTO FETCH ERROR]", photoErr);
        }
      }

      const replyText = `
╭─❖
│ 📌 𝐆𝐑𝐎𝐔𝐏 𝐈𝐍𝐅𝐎
├─•
│ 🏷 𝐍𝐚𝐦𝐞: ${groupName}
│ 🆔 𝐆𝐫𝐨𝐮𝐩 𝐈𝐃: ${threadID}
│ 👥 𝐌𝐞𝐦𝐛𝐞ʀs: ${participantCount}
│ 🛡 𝐀𝐝𝐦𝐢ɴs (${adminNames.length}):
${adminsText}│ 📅 𝐂𝐫𝐞𝐚𝐭𝐞𝐝: ${threadInfo.creationTime ? new Date(threadInfo.creationTime).toLocaleDateString() : "Unknown"}
│ 🔰 𝐄𝐦𝐨𝐣𝐢: ${threadInfo.emoji || "None"}
│ 📁 𝐀𝐩𝐩𝐫𝐨𝐯𝐚𝐥: ${threadInfo.approvalMode ? "✅ On" : "❌ Off"}
╰─❖
      `;

      const messageOptions = { body: replyText };
      if (groupPhotoStream) messageOptions.attachment = groupPhotoStream;

      return api.sendMessage(messageOptions, threadID);

    } catch (err) {
      console.error("[GCINFO CMD ERROR]", err);
      return api.sendMessage(
        `╭─❖
│ ❌ 𝐄ʀʀᴏʀ
├─•
│ Failed to fetch group info
│ Error: ${err.message || "Unknown"}
╰─❖`,
        event.threadID
      );
    }
  },
};

View raw file